android - 为什么android studio要组装我们的动态功能模块测试apk?

标签 android android-testing dynamic-feature

我们有一个核心 Android 应用程序模块(称为 app)和一个动态功能模块(称为 replay)。尽管这是一个 DFM,我们还是在安装时将其包含在内。在我们的 DFM 的 AndroidManifest.xml 中:

<dist:module
    dist:instant="false"
    dist:title="@string/title_replay">
    <dist:delivery>
        <dist:install-time />
    </dist:delivery>
    <dist:fusing dist:include="true" />
</dist:module>

我们能够使用 CL 中包含的 DFM 构建我们的 apk:$ ./gradlew app:assembleDebug

现在在测试时...我们的 replay 功能模块中没有任何仪器测试,只有 app 模块。因此,我们可以从命令行运行仪器测试: $ ./gradlew app:connectedDebugAndroidTest

但是,我们最近开始尝试在 Android Studio 内运行仪器测试。我们再次只想在 app 模块上运行测试:

enter image description here

现在的问题是我们收到了一堆奇怪的“Android资源链接失败”错误:

What went wrong:
Execution failed for task ':replay:processDebugAndroidTestResources'.
/Users/user/.gradle/caches/transforms-2/files-2.1/48609a786af4d1714850acbdd03ace31/jetified-beacon-ui-1.0.3/

AndroidManifest.xml:15:9-19:54: AAPT: error: resource string/hs_beacon_empty (aka com.example.feature.replay.test:string/hs_beacon_empty) not found.

我们正在为我们的几个第三方依赖项(facebook、leakcanary、beacon 等)获取这些库。它们似乎都是向现有 xml 文件(strings.xml、AndroidManifest.xml)添加值的库

这看起来像是 replay 构建过程的一部分,AAPT 正在尝试在我们的 replay 模块中查找实际上位于其他库中的资源。但是,为什么 AAPT 会查看我们的 replay 功能模块:com.example.android.feature.replay.test:string/hs_beacon_empty

我并没有完全掌握 AAPT 如何合并动态模块的资源,我更不了解它如何为仪器测试 apk 做到这一点。

我不明白为什么这可以通过 CL 起作用,所以我查看了 Android Studio 构建日志的顶部,当我运行仪器测试时我看到了这一点

Executing tasks: [:replay:assembleDebug, :replay:assembleDebugAndroidTest, :app:assembleDebug, :app:assembleDebugAndroidTest]

现在更基本的问题是,为什么 Android Studio 在运行应用模块测试时尝试组装重放和重放测试代码?

<小时/>

FWIW 我正在运行 Android Studio 和 AGP 3.5 Beta 5

最佳答案

我通过在动态功能模块中添加 androidTest 的应用程序依赖项来修复此问题

implementation project(':app')
androidTestImplementation project(':app')

关于android - 为什么android studio要组装我们的动态功能模块测试apk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101640/

相关文章:

android - 在 Android : ProviderTestCase2 or RenamingDelegatingContext? 上测试数据库

android - 单元测试 NPE,当我添加 fragment 自定义转换时

android - 动态功能更新

android - 未安装动态功能模块

java - 我应该使用哪个 API 来检测用户何时在 Android 中行走?

android - Android开发者控制台是否忽略uses-feature android :glEsVersion?

Android Espresso ActivityTest 给出 'package android.support.test.rule does not exist'

Android 应用程序链接到动态功能显示应用程序选择器对话框显示同一应用程序两次

android - 使用 ssl 时 POCO 库卡在 Android 上

java - Lenovo Tab 7 在商店中看不到 apk