Автоматизация версий и именования APK в Gradle для Android Projects
Когда вы разрабатываете приложения для Android, управление кодами версий и именование APK-файлов может упростить процесс выпуска и обеспечить согласованность. В этом руководстве я расскажу, как автоматизировать увеличение versionCode и настройку имен APK с помощью Gradle.
Автоматизация увеличения Version Code
Для каждого нового билда важно увеличивать version code, чтобы поддерживать правильный порядок выпуска, особенно при публикации в таких магазинах, как Play Store. В этом скрипте мы автоматизируем увеличение versionCode с помощью механизма tasks.register в Gradle.
tasks.register('increaseVersion') {
doLast {
if (project.hasProperty('versionCode')) {
def currentVersionCode = project.versionCode.toInteger()
android.defaultConfig.versionName = "0.0.1.${currentVersionCode + 1}"
project.versionCode = currentVersionCode + 1
}
}
}
preBuild.dependsOn increaseVersionОбъяснение:
• Регистрация задачи: tasks.register('increaseVersion') регистрирует новую задачу Gradle с именем increaseVersion.
• Условие: Проверяем, существует ли свойство versionCode в проекте.
• Увеличение: versionCode увеличивается на 1, а versionName обновляется с новым значением.
• Зависимость задачи: Задача preBuild зависит от increaseVersion, что гарантирует её выполнение перед каждым билдом.
Таким образом, вы автоматизируете процесс увеличения versionCode, и вам больше не придётся обновлять его вручную.
Автоматическое именование APK-файлов
Настройка имени APK упрощает управление множеством билдов, особенно при работе с несколькими вариантами (variants). В этом разделе мы добавим пользовательский формат к имени APK, включая тип сборки (flavor), тип билда и текущую дату.
applicationVariants.all { variant ->
variant.outputs.all {
def project = variant.flavorName
def SEP = "_"
def buildType = variant.buildType.name
def date = new Date()
def fromatDate = date.format('dd_MMM_yy')
def apkName = project + SEP + buildType + SEP + fromatDate + ".apk"
outputFileName = new File(apkName)
}
}Объяснение:
• Обработка вариантов: applicationVariants.all перебирает все варианты сборки (например, flavors и типы билдов, такие как debug и release).
• Пользовательское имя: Для каждого выхода варианта генерируется имя APK с использованием:
◦ Flavor проекта: variant.flavorName
◦ Тип билда: variant.buildType.name
◦ Дата: Отформатированная текущая дата (например, 05Oct24)
• Итоговый файл: outputFileName устанавливается в это динамически сгенерированное имя APK.
Это помогает создавать APK-файлы с более информативными именами, такими как myFlavordebug05Oct24.apk, что упрощает различение билдов.
Преимущества автоматизации
1. Согласованность: Обеспечивает автоматическое управление версиями без ручного вмешательства.
2. Экономия времени: Уменьшает трудозатраты на ручное обновление version codes и переименование APK.
3. Лучшая организация: APK-файлы имеют понятные имена, что упрощает поиск нужного файла для определённого варианта сборки и даты.
#AndroidDev #Gradle #APK #MobileDevelopment #VersionControl #Android