Gradle ароматы с повторяющимися именами, но разным измерением
Возможно ли иметь следующую настройку:
flavorDimension "production", "staging"
productFlavors {
staging {
dimension "staging"
...
}
production {
dimension "production"
...
}
flavorOne {
dimension "staging"
...
}
flavorOne {
dimension "production"
...
}
}
flavourOne существует два раза и содержит разные настройки, но также и с разными размерами.
То, что мне нужно, это аромат flavour One с производством и подготовкой, а также файлы res для flavourOneStage и flavour One. Если я делаю это так, я вижу только flavournenetagg и flavournease Release (выпуск и отладка - мои buildTypes), но не flavourneneroduction..
Нужно ли создавать аромат для каждой комбинации? Подготовка и производство содержат данные, которые никогда не изменяются, за исключением файлов res и flavOne. Это только один из N. Я не хочу создавать N*2 вариантов, чтобы иметь каждый вариант в производстве и подготовке? Какие-либо решения?
3 ответа
Что вам нужно это:
flavorDimension "environment", "flavorType"
productFlavors {
staging {
dimension "environment"
...
}
production {
dimension "environment"
...
}
flavorOne {
dimension "flavorType"
...
}
flavorTwo {
dimension "flavorType"
...
}
}
Предполагая, что ваши типы сборки являются релизом и отладкой, это даст:
staging-flavorone-release.apk
staging-flavorone-debug.apk
staging-flavortwo-release.apk
staging-flavortwo-debug.apk
release-flavorone-release.apk
release-flavorone-debug.apk
release-flavortwo-release.apk
release-flavortwo-debug.apk
AFAIK нет способа сделать это по умолчанию - однажды у меня была такая же проблема, и я решил ее так:
applicationVariants.all {вариант ->
def variantName = variant.name
if (variantName == "flavorOneProduction") {
variant.buildConfigField "String", "FOO",'"BAR"'
} else if (variantName == "flavorOneStaging") {
variant.buildConfigField "String", "FOO",'"BAR2"'
} else if (variantName == "flavorTwoProduction") {
variant.buildConfigField "String", "FOO",'"BAR3"'
} else if (variantName == "flavorTwoStaging") {
variant.buildConfigField "String", "FOO",'"BAR4"'
}
}
Я думаю, вы поняли суть
Пожалуйста, прочитайте: http://tools.android.com/tech-docs/new-build-system/user-guide
Там вы должны увидеть, что вам следует поступить иначе: использовать постановку и постановку в качестве ароматизаторов и, возможно, затем применить к ним размеры (если они все еще необходимы).