变体感知构建配置不适用于 Android 仪器测试

Variant-aware build configuration not working for Android Instrumentation Test

我正在做一个巨大的 Android 库项目,它将产生不同的构建变体,例如debugrelease 版本的库。这个库本身也需要一些依赖,我需要将它的依赖配置为 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_releaselib_y_release 的 类 都没有正确拾取,将输出以下错误:

error: package com.xxx does not exist

com.xxx 来自 lib_x_releaselib_y_release

所以,现在我的问题是以前是否有人遇到过这种情况?

变体感知配置,即 releaseImplementationdebugImplementation,也应该适用于 Android Instrumentation Test,对吗?

你是怎么解决这个问题的?

我已经在 Google 此处记录了一个错误: https://issuetracker.google.com/u/1/issues/112277358

而不是使用 releaseImplementationdebugImplementation,尝试下面的配置,即使对于 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')
    }
    ...
}