gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-28 23:52:44 24 4
gpt4 key购买 nike

我有几种构建类型:debugrelease。我也有两种口味 pubdev

pub 风格的应用程序依赖于 pub 库,dev 风格的应用程序类似。现在我希望 debug 构建类型的应用程序依赖于库的 debug 构建。以下方法不起作用:

pubReleaseCompile project(path: ':common', configuration: "pubRelease")
devReleaseCompile project(path: ':common', configuration: "devRelease")
pubDebugCompile project(path: ':common', configuration: "pubDebug")
devDebugCompile project(path: ':common', configuration: "devDebug")

注意:该库设置为编译所有变体。

有没有办法根据风格和构建类型指定条件项目依赖?

编辑:为避免混淆,请遵循我当前正在使用的项目中的相关 build.gradle 文件。

project/common/build.gradle(库)

apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.hugo' // annotation-based code generated logs only in debug build

android {
defaultPublishConfig "pubRelease"
publishNonDefault true // four variants of the library are built

buildTypes {
debug {}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
pub {
// custom build config fields
}
dev {
// custom build config fields
}
}
}

dependencies {
// ...
}

project/parent/build.gradle(使用该库的应用模块之一)

apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.hugo'

android {
// ...

signingConfigs {
release {
// ...
}
}

buildTypes {
release {
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
shrinkResources true
minifyEnabled true
}
debug {
versionNameSuffix '-debug'
}
}
productFlavors {
pub {
// custom res values
}
dev {
// custom res values
}
}
}

dependencies {
// ...
pubCompile project(path: ':common', configuration: "pubRelease")
devCompile project(path: ':common', configuration: "devRelease")
}

最佳答案

适用于 Gradle 3.x.x 的 Android 插件

构建插件 3.x.x 使用变体感知依赖解析,因此应用模块的 devDebug 变体将自动使用其库模块依赖的 devDebug 变体。要回答这个问题,这就足够了:

implementation project(':common')

在此处阅读更多信息:https://developer.android.com/studio/build/dependencies.html#variant_aware

原答案

我在这里找到了解决方案:https://github.com/JakeWharton/u2020/blob/master/build.gradle

更多关于为什么我的原始代码不够用的信息可以在这里找到:https://code.google.com/p/android/issues/detail?id=162285

工作解决方案:

configurations {
pubDebugCompile
devDebugCompile
pubReleaseCompile
devReleaseCompile
}

dependencies {
pubReleaseCompile project(path: ':common', configuration: "pubRelease")
devReleaseCompile project(path: ':common', configuration: "devRelease")
pubDebugCompile project(path: ':common', configuration: "pubDebug")
devDebugCompile project(path: ':common', configuration: "devDebug")
}

关于android - 基于构建类型和风格的 Gradle 依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28137853/

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