【发布时间】:2018-12-05 18:24:02
【问题描述】:
我想根据选择的 buildType 为属性设置不同的值。但我通过检查 gradle 控制台意识到,在配置阶段,所有 3 个 buildTypes 都已执行,并且最后一次构建的值保留在属性中。我认为这不是它应该如何工作的。 我是不是做错了什么?
android {
signingConfigs {
...
}
compileSdkVersion 28
defaultConfig {
...
}
productFlavors {
normal {
manifestPlaceholders = [appName: "@string/app_name"]
signingConfig signingConfigs.configNormalRelease
}
}
buildTypes {
release {
println("app release build")
rootProject.ext.test = false
}
debug {
println("app debug build")
rootProject.ext.test = false
}
staging {
println("app staging build")
rootProject.ext.test = true
}
}
sourceSets {
main {
aidl.srcDirs = ['src/main/aidl']
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
checkReleaseBuilds true
abortOnError false
}
flavorDimensions 'tier'
productFlavors {
normal {
dimension "tier"
}
}
}
输出是
app release build
app debug build
app staging build
'test' 属性的值始终为真,无论我调用 assembleRelease、assembleDebug 还是 assembleStaging
为什么我到处都能看到人们将 api 密钥、url 和其他自定义内容放入 buildTypes 中,但最后一个却被最后一个覆盖了?我知道 gradle 可能会在配置阶段调用所有构建类型,但是在哪里放置上面提到的值呢?
【问题讨论】:
标签: android gradle build.gradle