如何根据构建变体使用 gradle 编译不同的依赖模块的依赖关系?

德罗卡

我有一个具有模块依赖性的 Android 应用程序。这个模块本身有一个 jar 库作为依赖,它有两个变体,每个变体都相对于主应用程序的构建变体。当我在主应用程序中切换构建变体时,我设法自动选择了选择正确 jar 的模块的构建变体,但这并未反映在代码中,其中在构建变体特定代码中找不到来自 jar 的特定类.

这是主应用程序和依赖模块的 build.gradle 文件中的相关代码:

主应用程序 - build.gradle

buildTypes {
    type1 {initWith(debug)}
    type2 {initWith(debug)}
}

productFlavors {
    live{}
    test{}
}

dependencies {
    type1Compile project(path: ':module', configuration: 'one')
    type2Compile project(path: ':module', configuration: 'two')
}

模块 - build.gradle

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    useLibrary 'org.apache.http.legacy'
    publishNonDefault true

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
}

buildTypes {
    release {
        minifyEnabled = false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 
            'proguard-rules.pro'
    }
    one {initWith(release)}
    two {initWith(release)}
}
}

dependencies {
    oneCompile files('libs/versionOne/mylib.jar')
    twoCompile files('libs/versionTwo/mylib.jar')
}

因此,当我构建testType1变体时,Android Studio 会自动选择one变体,并且通过干净的构建一切正常。但是如果我切换到testType2,尽管two选择了模块的变体,编辑器将突出显示缺少的类和方法。

当我在应用程序的构建变体之间切换时,如何让 gradle 选择正确的 jar?

一些注意事项:模块需要库,因为它使用了两个版本之间通用的一些类。我知道这可能看起来像糟糕的项目设计,但它是由不同人在不同时代构建的应用程序,我现在必须“按原样”开发它。

德罗卡

经过一番摸索,我找到了一些线索。首先,我的两个jar包所在的同名,在不同的文件夹中。在将 jars 重命名为也有不同的名称后,gradle 设法在构建变体切换后选择正确的一个,前提是完成了额外的“同步项目与 gradle 文件”。所以现在它不是立竿见影的,但最终它正在起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

不同的buildConfigFields的Dynamic Gradle编译依赖关系

Gradle编译:如何从依赖项中识别组和模块?

如何生成,编译,jar和依赖Gradle模块

非Java构建对Gradle的依赖关系使用

如何通过gradle构建android的不同变体

在Android Gradle依赖关系中编译多个模块

如何获取Spring Cloud Config依赖关系以从Gradle多模块构建的父配置中解析?

Gradle依赖关系:使用本地jar进行编译还是通过Maven存储库进行编译?

Gradle 构建错误解决依赖关系

Gradle:声明顶级构建文件与模块构建文件中的依赖关系?

Android编译依赖项-Gradle构建

如何使用Gradle在Java / Android中正确处理类依赖关系以利用增量编译?

我可以使用同一多模块项目中构建的版本覆盖Gradle模块的依赖关系吗?

Gradle如何处理冗余依赖关系

如何查看Gradle的buildSrc的依赖关系树?

Gradle在编译任务中使用具有依赖关系的jar

如何在Android Studio中将gradle内置模块作为依赖关系导入?

使用Gradle在WAR之间共享依赖关系构建EAR

Gradle:如何从模块依赖项运行测试?

如何在模块的build.gradle中检查构建变体

如何在多项目Gradle中为子项目定义不同的依赖关系?(Java)

使用不同的依赖版本重复gradle构建

如何从Android项目中的依赖项检查Gradle构建变体(调试或发布)?

Gradle依赖性:使用相互依赖性配置多模块构建

包含gradle依赖关系的intellij构建jar工件

Gradle构建无法解决AAR库依赖关系(Trnql SDK)

在本地构建gradle项目以用作依赖关系而不是联系?

基于构建类型和风格的Gradle依赖关系

添加Appium依赖关系后出现Gradle构建错误