Подтвердить что ты не робот

Gradle script для автовверсии и включить хеш-код фиксации в Android

Мне нужно написать gradle script для автоматической версии моего приложения для каждой фиксации. Мне также нужно включить хеш фиксации в качестве ссылки в приложении для тестеров.

Я смущен, как обычно работает управление версиями. Кто-нибудь может объяснить процесс автовключения?

спасибо

4b9b3361

Ответ 1

Я столкнулся с аналогичной проблемой, но не хотел изменять имя versionName, чтобы включить хэш git. Мы хотели сохранить это как что-то вроде 1.2.2, но все же иметь возможность отображать хэш git в пользовательском интерфейсе.

Я изменил код из другого ответа здесь, чтобы использовать задачу buildConfigField для генерации значения BuildConfig.GitHash, на которое можно ссылаться в коде Java.

Добавьте это выше раздела android вашего файла сборки build.gradle:

def getGitHash = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'rev-parse', '--short', 'HEAD'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}

Затем добавьте следующую строку в раздел defaultConfig раздела android файла build.gradle, т.е. ниже versionName:

buildConfigField "String", "GitHash", "\"${getGitHash()}\""

Это генерирует следующую строку в автоматически сгенерированном файле BuildConfig.java:

// Fields from default config.
public static final String GitHash = "e61af97";

Теперь вы можете получить хэш git в коде Java с помощью BuildConfig.GitHash.

Ответ 2

Одним идеальным решением может быть захват версии из состояния git проекта. Таким образом, управление версиями не зависит от того, как вы помните, чтобы увеличить переменную или изменить любой текст в файлах gradle или config.

Вы можете найти один описательный пример в http://ryanharter.com/blog/2013/07/30/automatic-versioning-with-git-and-gradle/

Идея заключается в получении информации git с помощью функции getVersionName и использования этой функции в gradle script.

Другим подходом (основанным также на получении информации о версии от git) может быть этот, как плагин gradle: https://github.com/GeoNet/gradle-build-version-plugin

Ответ 3

Если вы хотите добавить идентификатор фиксации после versionName, выглядит как 1111-abcdefg

добавьте ниже в свой файл app/build.gradle выше раздела Android (не root build.gradle)

def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--short' , 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}

добавить ниже в android {defaultConfig {ЗДЕСЬ}}

versionNameSuffix '-'+getVersionName()