Gradle script для автовверсии и включить хеш-код фиксации в Android
Мне нужно написать gradle script для автоматической версии моего приложения для каждой фиксации. Мне также нужно включить хеш фиксации в качестве ссылки в приложении для тестеров.
Я смущен, как обычно работает управление версиями. Кто-нибудь может объяснить процесс автовключения?
спасибо
Ответы
Ответ 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()