gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:40:59 30 4
gpt4 key购买 nike

我们有一个核心 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com