变体感知构建配置不适用于 Android 仪器测试
Variant-aware build configuration not working for Android Instrumentation Test
我正在做一个巨大的 Android 库项目,它将产生不同的构建变体,例如debug 和 release 版本的库。这个库本身也需要一些依赖,我需要将它的依赖配置为 debug 和 release 分别。我使用 variant-aware 依赖管理 Android Gradle 插件 3.0+,这适用于库构建。下面是我如何配置我的项目:
dependencies {
...
releaseImplementation files('libs/release/lib_x_release.jar')
releaseImplementation files('libs/release/lib_y_release.jar')
debugImplementation files('libs/debug/lib_x_debug.jar')
debugImplementation files('libs/debug/lib_y_debug.jar')
...
}
具体来说,当我 运行 命令
./gradlew assembleDebug
变体感知依赖管理将正确地帮助我获取所有 调试版本 的依赖。
当我运行命令
./gradlew assembleRelease
变体感知依赖管理将正确地帮助我获取所有 发布版本 的依赖。
我有一个 gradle “属性” 来动态设置我的 testBuildType
这样我就可以 运行 Android 仪器测试的发布版本。见下文:
android {
...
if (project.hasProperty('testInstrumentedRelease')) {
testBuildType 'release'
} else {
testBuildType 'debug'
}
...
}
但是,当我运行 下面的命令
./gradlew connectedCheck -PtestInstrumentedRelease
lib_x_release
和 lib_y_release
的 类 都没有正确拾取,将输出以下错误:
error: package com.xxx does not exist
包 com.xxx
来自 lib_x_release
和 lib_y_release
。
所以,现在我的问题是以前是否有人遇到过这种情况?
变体感知配置,即 releaseImplementation
和 debugImplementation
,也应该适用于 Android Instrumentation Test,对吗?
你是怎么解决这个问题的?
我已经在 Google 此处记录了一个错误:
https://issuetracker.google.com/u/1/issues/112277358
而不是使用 releaseImplementation
和 debugImplementation
,尝试下面的配置,即使对于 Android Instrumentation Test.
dependencies {
...
if (project.hasProperty('testInstrumentedRelease')) {
implementation files('libs/release/lib_x_release.jar')
implementation files('libs/release/lib_y_release.jar')
} else {
implementation files('libs/debug/lib_x_debug.jar')
implementation files('libs/debug/lib_y_debug.jar')
}
...
}
我正在做一个巨大的 Android 库项目,它将产生不同的构建变体,例如debug 和 release 版本的库。这个库本身也需要一些依赖,我需要将它的依赖配置为 debug 和 release 分别。我使用 variant-aware 依赖管理 Android Gradle 插件 3.0+,这适用于库构建。下面是我如何配置我的项目:
dependencies {
...
releaseImplementation files('libs/release/lib_x_release.jar')
releaseImplementation files('libs/release/lib_y_release.jar')
debugImplementation files('libs/debug/lib_x_debug.jar')
debugImplementation files('libs/debug/lib_y_debug.jar')
...
}
具体来说,当我 运行 命令
./gradlew assembleDebug
变体感知依赖管理将正确地帮助我获取所有 调试版本 的依赖。
当我运行命令
./gradlew assembleRelease
变体感知依赖管理将正确地帮助我获取所有 发布版本 的依赖。
我有一个 gradle “属性” 来动态设置我的 testBuildType
这样我就可以 运行 Android 仪器测试的发布版本。见下文:
android {
...
if (project.hasProperty('testInstrumentedRelease')) {
testBuildType 'release'
} else {
testBuildType 'debug'
}
...
}
但是,当我运行 下面的命令
./gradlew connectedCheck -PtestInstrumentedRelease
lib_x_release
和 lib_y_release
的 类 都没有正确拾取,将输出以下错误:
error: package com.xxx does not exist
包 com.xxx
来自 lib_x_release
和 lib_y_release
。
所以,现在我的问题是以前是否有人遇到过这种情况?
变体感知配置,即 releaseImplementation
和 debugImplementation
,也应该适用于 Android Instrumentation Test,对吗?
你是怎么解决这个问题的?
我已经在 Google 此处记录了一个错误: https://issuetracker.google.com/u/1/issues/112277358
而不是使用 releaseImplementation
和 debugImplementation
,尝试下面的配置,即使对于 Android Instrumentation Test.
dependencies {
...
if (project.hasProperty('testInstrumentedRelease')) {
implementation files('libs/release/lib_x_release.jar')
implementation files('libs/release/lib_y_release.jar')
} else {
implementation files('libs/debug/lib_x_debug.jar')
implementation files('libs/debug/lib_y_debug.jar')
}
...
}