April 12

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