当从多模块项目中的 Android Gradle Plugin 3.3.2 迁移到 3.4.0 并执行时connectedAndroidTest
我看到一个致命的异常。 Google Play 服务共享类StringResourceValueReader
寻找资源common_google_play_services_unknown_issue
但没能找到它。
错误如下:
android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f0f0044
at android.content.res.ResourcesImpl.getResourcePackageName(ResourcesImpl.java:236)
at android.content.res.Resources.getResourcePackageName(Resources.java:1909)
我正在进行 Gradle 和 AGP 升级,因此已迁移到 Gradle 5.1.1 和 3.4.0,但是 AGP 3.4.0 导致我的 Espresso 测试运行在应用程序初始化初期就失败了。在我最初的场景中,此行为是由 Firebase ContentProvider 触发的,但是排除此行为会将问题转移到下一个使用StringResourceValueReader
就我而言,就是 Google Ads。
我查看了我的应用程序和 androidTest 生成的 apk,以查看通过生成的所有资源aapt --dump values
。
缺少的资源 id 不存在于应用程序 apk 中,它确实存在于测试 apk 中,但是该 id 附加到 androidTest 源集中的不相关资源(甚至不是字符串)。未找到的资源具有完全不同的 res id,在两个 apk 中都可用。
我假设StringValueReader
被传递了错误的Context
,在我的场景中也许是InstrumentationContext
,因此我添加了缺少的字符串资源以及其他 firebase 字符串资源,但运气不佳(也在应用程序中尝试过此操作)。
违规代码在StringResourceValueReader
public StringResourceValueReader(Context var1) {
....
this.zzev = this.zzeu.getResourcePackageName(string.common_google_play_services_unknown_issue);
}
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)