Android应用爬虫不工作->权限拒绝失败

ktca8awb  于 2023-01-28  发布在  Android
关注(0)|答案(2)|浏览(170)

我尝试在本地运行应用爬虫,以便测试在Android Studio中创建的机器人脚本。
我看了这篇很方便的文章(https://android.jlelse.eu/test-robo-scripts-locally-useful-for-firebase-test-lab-pre-launch-reports-41da83d5769f),遇到了一个问题,爬虫只说抓取开始,抓取立即完成,我在google上找不到这个问题的答案。
下面是日志中的错误:
权限拒绝:不允许从pid = 3778,uid = 3778启动工具组件信息{androidx. test. tools. crawler/androidx. test. tools. crawler. CrawlMonitor},因为包androidx. test. tools. crawler没有与目标androidx. test. tools. crawler. stubapp匹配的签名
我终于找到了一个解决方案,所以我提出这个问题来帮助那些可能像我一样陷入困境的人。听起来有些人在这个问题中遇到了同样的问题(https://stackoverflow.com/a/58631206/13071692

bkhjykvo

bkhjykvo1#

我发现这个错误是因为我使用的是调试apk版本的应用程序。它需要一个签名版本,所以一旦我在android studio中创建了一个签名版本(Build〉Generate Signed Bundle...),它工作得很好

xesrikrc

xesrikrc2#

我也有同样的问题:我有两件事要做。

1.提供密钥库参数

我没有向应用爬虫提供正确的signingConfig凭据,因此出现错误:does not have a signature matching the target.
我使用的是一个调试版本,认为这不可能是问题所在,因为我的默认buildType没有设置signingConfig-它看起来像这样:

buildTypes {
  debug {
    debuggable true
  }
  ...
}

我错了,因为项目已经定义了一个signingConfigs.debug值,它被隐式地用作调试的signingConfig(参见https://stackoverflow.com/a/28512848/6007104)。
因此,我向java -jar crawl_launcher.jar命令添加了--key-store--key-store-password参数,其值与我的signingConfigs.debug配置相匹配。

2.手动安装

我进一步查看日志,发现了一行字:为了解决这个问题,我手动安装了应用程序并测试了apk,而不是依赖于应用程序爬虫来为我做这件事。
我用./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>

相关问题