項目中有這個需求:
不同變體flavor對應的不同buildType要配置不同的buildConfigField 字段。
如A變體的debug和release中分別設置不同的應用名稱,或者設置不同的接口地址等等。
我們在flavor中默認配置debug下的buildConfigField,在applicationVariants.all中對應做release的處理,當buildVariant選了debug/release時就會根據配置去設置不同的字段了。
//以下配置都在build.gradle android {}內
//版本變體配置
productFlavors {
A {
applicationId "com.example.a"
buildConfigField 'String', 'APP_TITLE', '"應用A Debug"'
}
B {
applicationId "com.example.b"
buildConfigField 'String', 'APP_TITLE', '"應用B Debug"'
}
}
buildTypes {
release {
...
}
debug {
...
}
}
...
//修改打包名稱、字段
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def buildTypeName = ""
def flavorName = variant.flavorName.capitalize()
if (variant.buildType.name == "release") {
buildTypeName = "Release"
} else {
buildTypeName = "Debug"
}
if (flavorName == "A" && buildTypeName == "Release") {
variant.buildConfigField "String", "APP_TITLE", '"應用A Release"'
}
output.outputFileName = "${flavorName}_${buildTypeName}.apk"
}
}