这是我解决这个问题的方法:
def GAME_DIMENSION = "game"
def BUILD_DIMENSION = "building"
flavorDimensions GAME_DIMENSION, BUILD_DIMENSION
productFlavors {
lollipop {
dimension BUILD_DIMENSION
minSdkVersion 21
}
normal {
dimension BUILD_DIMENSION
}
game_1 {
dimension GAME_DIMENSION
ext {
fields = [
[type: 'String', name: 'TESTSTRING', values: [debug: 'debugstring', release: 'releasestring']],
[type: 'int', name: 'TESTINT', values: [debug: '1234', release: '31337']]
]
}
}
game_2 {
dimension GAME_DIMENSION
ext {
fields = [] // none for game_2
}
}
}
applicationVariants.all { variant ->
// get the GAME dimension flavor
def game = variant.getProductFlavors()
.findAll({ flavor -> flavor.dimension == GAME_DIMENSION})
.get(0)
println "Adding " + game.ext.fields.size() + " custom buildConfigFields for flavor " + variant.name
// loop over the fields and make appropriate buildConfigField
game.ext.fields.each { field ->
def fldType = field['type']
def fldName = field['name']
def fldValues = field['values']
// get debug/release specific value from values array
def fldSpecificValue = fldValues[variant.getBuildType().name]
// add quotes for strings
if (fldType == 'String') {
fldSpecificValue = '\"' + fldSpecificValue + '\"'
}
println " => " + fldType + " " + fldName + " = " + fldSpecificValue
variant.buildConfigField fldType, fldName, fldSpecificValue
}
}
ext.fields
(我还不能确定一种风味是否存在)