#android #gradle #android-gradle-plugin
#Android #градация #android-gradle-плагин
Вопрос:
У меня есть разные типы сборки и разные вкусовые характеристики в моем приложении. Я хочу добавить определенный вкусовой суффикс к идентификатору приложения только для одного конкретного типа сборки.
Например, для stageApi
комбинации вкусов и beta
типов сборки я бы хотел добавить суффиксы .stageapi
, и .beta
поэтому результирующий идентификатор приложения будет my.application.stageapi.beta
, но для debug
и release
я не хочу этого делать (я бы хотел иметь my.application.debug
и my.application
без суффикса api).
У меня уже был этот код раньше, и он работал просто отлично:
productFlavors {
...
beta {
applicationIdSuffix ".beta"
}
}
applicationVariants.all { variant ->
def name = variant.getName()
if (name.contains("StageApiBeta")) {
def mergedFlavor = variant.mergedFlavor
mergedFlavor.setApplicationIdSuffix(".stageapi")
}
}
Но после обновления до Gradle plugin 4.1 он перестал работать. Он не выдает никакой ошибки, но результирующий идентификатор приложения my.application.beta
равен without .stageapi
.
Я пробовал разные подходы, но просто не могу понять, как это сделать сейчас. Мне также кажется, что в 4.2 будут и другие изменения API, но я бы хотел, чтобы это работало и в 4.1.
Комментарии:
1. Я сталкиваюсь с той же проблемой после обновления до версии 4.1.1, mergedFlavor.setApplicationId все еще работает, поэтому, если я не смогу найти лучшее решение, я просто объединю все идентификаторы приложений и установлю их таким образом.
Ответ №1:
Используйте flavorDimensions
и устанавливайте разные суффиксы для ваших вариантов.
flavorDimensions "dimen1" "dimen2"
productFlavors {
beta {
applicationIdSuffix ".beta"
dimension "dimen1"
}
stageapi {
applicationIdSuffix ".stageapi"
dimension "dimen2"
}
}
Комментарии:
1. Как я уже упоминал в вопросе, я хотел бы иметь его только для определенных комбинаций. При таком подходе он будет применен ко всем из них. Например, комбинация debug-stageApi приведет к
my.application.stageapi.debug
, чего я не хочу.