5 методов автоматического обновления кода версии в Android Gradle

Управление кодами версий в Android Gradle может оказаться утомительной задачей, особенно если вам приходится вручную обновлять их при каждом выпуске. Однако существует несколько методов, которые могут автоматизировать этот процесс и сэкономить ваше время и усилия. В этой статье мы рассмотрим пять различных подходов к автоматическому обновлению кода версии в вашем проекте Android Gradle.

Метод 1: использование счетчика системы контроля версий (VCS).
Один простой метод автоматического обновления кода версии — использование счетчика коммитов вашей системы контроля версий (VCS). Вы можете извлечь количество коммитов с помощью скрипта или плагина и использовать его в качестве кода версии. Вот пример использования Git и Gradle:

android {
    defaultConfig {
        // ...
        versionCode getGitCommitCount()
        // ...
    }
}
def getGitCommitCount() {
    def process = "git rev-list --count HEAD".execute()
    process.text.toInteger()
}

Метод 2: использование времени сборки
Другой подход — использовать время сборки в качестве кода версии. Это гарантирует, что каждая сборка получит уникальный код версии. Этого можно добиться, извлекая текущую временную метку во время процесса сборки. Вот пример:

android {
    defaultConfig {
        // ...
        versionCode getCurrentTimestamp()
        // ...
    }
}
def getCurrentTimestamp() {
    return new Date().getTime().toString()
}

Метод 3: интеграция с инструментами непрерывной интеграции (CI).
Если вы используете систему непрерывной интеграции (CI), такую ​​как Jenkins или Travis CI, вы можете использовать их переменные среды для автоматического обновления кода версии. Эти системы часто предоставляют переменные, содержащие информацию, специфичную для сборки. Вот пример использования Jenkins:

android {
    defaultConfig {
        // ...
        versionCode getJenkinsBuildNumber()
        // ...
    }
}
def getJenkinsBuildNumber() {
    return System.getenv("BUILD_NUMBER")
}

Метод 4: анализ имени версии
Если имя вашей версии соответствует определенному формату, включающему код версии, вы можете извлечь его программно в сценарии сборки Gradle. Вот пример, в котором предполагается, что имя версии имеет формат «X.Y.Z-versionCode»:

android {
    defaultConfig {
        // ...
        versionCode extractVersionCodeFromName()
        // ...
    }
}
def extractVersionCodeFromName() {
    def versionName = android.defaultConfig.versionName
    def versionCode = versionName.split("-")[1]
    return versionCode.toInteger()
}

Метод 5: пользовательская задача Gradle
Вы можете создать пользовательскую задачу Gradle, которая автоматически увеличивает код версии при каждой сборке. Вот пример:

android {
    defaultConfig {
        // ...
        versionCode getIncrementedVersionCode()
        // ...
    }
}
def getIncrementedVersionCode() {
    def lastVersionCode = android.defaultConfig.versionCode
    def currentVersionCode = lastVersionCode + 1
    return currentVersionCode
}

Автоматизация процесса обновления кода версии в Android Gradle может значительно улучшить рабочий процесс разработки. В этой статье мы рассмотрели пять различных методов достижения этой цели, включая использование количества VCS, времени сборки, инструментов CI, анализа имен версий и создания пользовательских задач Gradle. Внедрив один из этих подходов, вы сможете сэкономить время и обеспечить точное управление версиями в своих проектах Android.