Можно ли установить код и имя версии Android с помощью задачи Gradle?

Я пытаюсь автоматизировать процесс сборки на CI, с которым я работаю. Я могу вызвать curl и присвоить ему некоторые переменные, такие как код версии и имена. Затем CI (в моем случае Bitrise CI) поймает его и запустит сборку Release. Однако перед этим я хочу установить код версии и имя версии на основе того, что было передано curl в файл build.gradle а затем build.gradle процесс.

Итак, я думаю, что могу написать плагин / задачу, которая получает код / ​​имя версии из командной строки, а затем build.gradle ее в файл build.gradle . Команда типа ./gradlew setVersion 1 1.0 .

Прежде всего, выполнив эту команду из сценария, который я напишу, я смогу запустить эту задачу градиента, и все из любого места в глобусе смогут создать сборку релиза с помощью curl . Довольно интересно 🙂

Я могу написать задачу, подобную следующему коду, и поместить ее в мой основной файл build.gradle .

 task setVersion << { println versionCode println versionName } 

И передайте ему некоторые параметры через командную строку:

 ./gradlew -PversionCode=483 -PversionName=v4.0.3 setVersion 

Это мой вывод:

 :setVersion 483 v4.0.3 BUILD SUCCESSFUL Total time: 6.346 secs 

Все идет нормально. Мой вопрос заключается в том, как установить его в файле build.gradle ? благодаря

Solutions Collecting From Web of "Можно ли установить код и имя версии Android с помощью задачи Gradle?"

Вы можете создавать методы для обновления versionCode и versionName из командной строки:

 def getMyVersionCode = { -> def code = project.hasProperty('versionCode') ? versionCode.toInteger() : -1 println "VersionCode is set to $code" return code } def getMyVersionName = { -> def name = project.hasProperty('versionName') ? versionName : "1.0" println "VersionName is set to $name" return name } 

Затем в блоке андроида:

 defaultConfig { applicationId "your.app.id" minSdkVersion 15 targetSdkVersion 23 versionCode getMyVersionCode() versionName getMyVersionName() archivesBaseName = "YourApp-${android.defaultConfig.versionName}" } 

Тогда вы можете просто вызвать любую задачу:

 ./gradlew assembleDebug -PversionCode=483 -PversionName=4.0.3 

Подробнее об этом читайте здесь: https://robertomurray.co.uk/blog/2013/gradle-android-inject-version-code-from-command-line-parameter/