Автоматизация версий и именования 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