У нас есть приложение с тремя типами сборки (альфа, бета, выпуск) и несколькими вариантами продукта, которые зависят от страны, в которой развернуто приложение.
Я пытаюсь автоматизировать наши задачи по градиенту и не могу понять, как изменить код версии для разных типов сборки. Идея состоит в том, чтобы иметь код версии в виде «major.minor.patch.».
Моя текущая конфигурация Gradle по умолчанию выглядит так:
final VERSION_MAJOR = 0
final VERSION_MINOR = 7
final VERSION_PATCH = 1
android {
defaultConfig {
applicationId "com.app"
multiDexEnabled true
versionName "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
versionCode VERSION_MAJOR * 10000000 + VERSION_MINOR * 100000 + VERSION_PATCH * 1000
}
Я попытался изменить versionCode в конкретном типе сборки, но это невозможно, поскольку в типах сборки нет этого поля.
Я получаю сообщение об ошибке «Ошибка: невозможно установить значение свойства «versionCode» только для чтения для объекта типа com.android.build.gradle.internal.api.ApplicationVariantImpl». для следующей функции:
applicationVariants.all { variant ->
if(variant.buildType.name.equals("release"))
variant.versionCode += 0
if(variant.buildType.name.equals("beta"))
variant.versionCode += 1
if(variant.buildType.name.equals("debug"))
variant.versionCode += 2
}
}
Я не знаю, как решить эту проблему. Я, очевидно, не могу использовать разные ароматы, поскольку мы уже используем ароматы для указания страны. PS: я знаю о использовать другой VersionCode для отладки/выпуска android gradle build, но они меняют код версии во вкусе.
versionCode
должен различаться в зависимости от типа сборки? Я вижу желание, чтобы они имели разные значения, но это может быть просто монотонно увеличивающееся целое число для каждой сборки, независимо от типа. Если вы не делаете десятки тысяч сборок в день, у вас не закончатсяInteger.MAX_VALUE
коды версий. - person CommonsWare   schedule 09.11.2016