代码之家  ›  专栏  ›  技术社区  ›  shizhen

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

  •  1
  • shizhen  · 技术社区  · 6 年前

    我正在进行一个巨大的Android库项目,它将产生不同的构建变体,例如。 调试 释放 库的版本。这个库本身也需要一些依赖项,我需要将它的依赖项配置为 分别调试和发布 . 我用的是 变体感知 Android Gradle Plugin 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
    

    变量感知依赖关系管理将正确地帮助我获取所有 发布版本 依赖关系。

    我有个毕业生” 财产 “动态设置 testBuildType 这样我就可以跑了 发布版本 安卓仪器测试。见下文:

    android {   
        ...
    
        if (project.hasProperty('testInstrumentedRelease')) {
            testBuildType 'release'
        } else {
            testBuildType 'debug'
        }
        ...
    }
    

    然而 ,这对我的 发布版本 当我运行以下命令时

    ./gradlew connectedCheck -PtestInstrumentedRelease
    

    两者的阶级 lib_x_release lib_y_release 未正确拾取,将输出以下错误:

    错误:包COM.xxx不存在

    包裹 com.xxx 来自 解放军 解放军 .

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

    变量感知配置,即。 releaseImplementation debugImplementation ,也应适用于 安卓仪器测试 ,对吧?

    你怎么解决这个问题?

    我在Google上记录了一个bug: https://issuetracker.google.com/u/1/issues/112277358

    1 回复  |  直到 6 年前
        1
  •  1
  •   user10189678user10189678    6 年前

    而不是使用 releaseImplementation debugImplementation ,请尝试下面的配置,它将始终获取正确的依赖项,即使对于 安卓仪器测试 .

    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')
        }
        ...
    }