安卓应用程序爬虫无法运行 -> 权限拒绝故障

5

我尝试在本地运行应用程序爬虫,以测试在Android Studio中创建的机器人脚本。

我遵循了这篇有用的文章(https://android.jlelse.eu/test-robo-scripts-locally-useful-for-firebase-test-lab-pre-launch-reports-41da83d5769f),但遇到了一个问题,爬虫只是显示爬行已启动并立即结束。我在谷歌上找不到任何答案解决此问题。

以下是日志中的错误:

Permission Denial: starting instrumentation ComponentInfo{androidx.test.tools.crawler/androidx.test.tools.crawler.CrawlMonitor} from pid=3778, uid=3778 not allowed because package androidx.test.tools.crawler does not have a signature matching the target androidx.test.tools.crawler.stubapp

最终我找到了解决方案,现在将此问题发布出来,以帮助那些可能像我一样被卡住的人。听起来有些人在这个问题中遇到了同样的问题(https://stackoverflow.com/a/58631206/13071692)。

2个回答

5

我发现这个错误是因为我正在使用我的应用程序的调试APK版本。它需要一个签名版本,所以一旦我在Android Studio中创建了一个已签名的版本(Build > Generate Signed Bundle...),它就可以正常工作了。


0

我也遇到了同样的问题:我的情况下有两件事我需要做。

1. 提供密钥库参数

我没有向应用程序爬虫提供正确的签名配置(signingConfig)凭据,因此出现了错误:不具有与目标匹配的签名

我正在使用调试构建(debug build),并且认为这不可能是问题,因为我的默认构建类型(buildType)没有设置signingConfig - 它只是看起来像这样:

buildTypes {
  debug {
    debuggable true
  }
  ...
}

我错了,因为项目定义了signingConfigs.debug值,它会被隐式地用作调试的签名配置(详见https://dev59.com/VF4b5IYBdhLWcg3w9FkI#28512848)。

所以,我将--key-store和--key-store-password参数添加到java -jar crawl_launcher.jar命令中,并将其与我的signingConfigs.debug配置匹配。

2. 手动安装

我在日志中进一步查找,发现了这样一行:无法找到仪表目标包。为了解决这个问题,我手动安装了应用程序和测试apk,而不是依赖App Crawler来完成这个过程。

我使用./gradlew assembleDebug生成应用apk,使用./gradlew connectedDebugAndroidTest生成测试apk,然后将两个apk手动安装到设备上(先安装应用程序,然后安装测试程序)。然后我运行了应用程序爬虫。

结论

每次我想启动应用程序爬虫时,我都会这样做。

  • 卸载旧的构件:
adb uninstall androidx.test.tools.crawler
adb uninstall androidx.test.tools.crawler.stubapp
adb uninstall <my.package>

生成应用程序apk: ./gradlew assembleDebug 生成测试apk: ./gradlew connectedDebugAndroidTest 安装应用程序apk,然后安装测试apk(可以使用adb命令)
从解压的app-crawler目录中运行应用程序爬虫。使用--app-package-name参数替代--apk-file参数。如果需要,请确保提供--key-store--key-store-password参数:
java -jar crawl_launcher.jar --android-sdk <my/sdk/location> --app-package-name <my.package> --key-store <my/location/debug.keystore> --key-store-password <mypassword>

一直在寻找解决办法,但这个也没有起作用。我放弃了……在这上面浪费了太多时间。 - JPM
这绝对不是一个容易使用的工具。即使你设法让它运行起来,它也不是很好用 - 它很容易陷入循环,并且总体上并不聪明。我建议不要费心去使用它。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接