Часто у меня есть несколько разновидностей, чтобы различать dev и сборку релиза, а также включить или отключить функцию, основанную на разновидности.
Я, например. иметь 3 flavorDimensions
с 2 записями каждая, это означает, что у меня будет 8 вариантов. Поэтому я отфильтровываю все ненужные варианты и получаю 3 основных варианта, таких как:
withFeature1DevNormalDebug
withFeature1PlayForTestRelease
withFeature1PlayNormalRelease
Что я хочу сделать:
Я хочу переименовать эти 3 варианта во что-то вроде следующего:
withFeature1DevNormalDebug
=> DevBuild
withFeature1PlayForTestRelease
=> TestReleaseBuild
withFeature1PlayNormalRelease
=> ReleaseBuild
Могу я как-нибудь это сделать? Я не могу переименовать аромат внутри variantFilter
, потому что соответствующий атрибут name
является атрибутом только для чтения. Есть ли способ переименовать имена вариантов сборки?
Код
Вот небольшой пример моих вкусов:
flavorDimensions "dimFeature1", "dimBuild", "dimTarget"
productFlavors {
// 1) dimBuild
dev {
dimension "dimBuild"
resConfigs('de', 'xhdpi')
}
play {
dimension "dimBuild"
}
// 2) dimFeature1
withFeature1 {
dimension "dimFeature1"
buildConfigField "boolean", "WITH_FEATURE_1", "true"
}
withoutFeature1 {
dimension "dimFeature1"
buildConfigField "boolean", "WITH_FEATURE_1", "false"
}
// 3) dimTarget
normal {
dimension "dimTarget"
buildConfigField 'boolean', 'TEST', 'false'
}
forTest {
dimension "dimTarget"
applicationIdSuffix '.test'
buildConfigField 'boolean', 'TEST', 'true'
}
}
А это моя фильтрация вариантов сборки:
variantFilter { variant ->
def names = variant.flavors*.name
def buildTypeName = variant.buildType.name
if (names.contains("dev") && buildTypeName == "release") {
variant.ignore = true
}
if (names.contains("play") && buildTypeName == "debug") {
variant.ignore = true
}
if (names.contains("forTest") && buildTypeName == "debug") {
variant.ignore = true
}
// currently this feature is completely disabled!
if (names.contains("withFeature1")) {
variant.ignore = true
}
}