¿Es posible establecer el código de la versión de Android y el nombre a través de una tarea de Gradle?

Estoy tratando de automatizar el proceso de construcción en CI con el que estoy trabajando. Puedo llamar a un curl y asignarle algunas variables como código de versión y nombres. Entonces CI (en mi caso, Bitrise CI) lo captura e inicia la generación de Release. Sin embargo, antes de que quiero establecer el código de versión y el nombre de la versión basada en lo que se ha pasado por curl en el archivo build.gradle y luego se inicia el proceso de construcción.

Por lo tanto, estoy pensando que puedo escribir un plugin / tarea que recibe el código de la versión / nombre de una línea de comandos y luego inyectarlo en el archivo build.gradle . Un comando como ./gradlew setVersion 1 1.0 .

Por lo tanto, al ejecutar este comando a partir de un script que voy a escribir, podré ejecutar esta tarea gradle y todo el mundo desde cualquier lugar en el glob es capaz de crear una versión de construcción por curl . Bastante interesante 🙂

Soy capaz de escribir una tarea similar al código siguiente y ponerlo en mi archivo build.gradle principal.

 task setVersion << { println versionCode println versionName } 

Y pasar algunos parámetros a través de la línea de comandos:

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

Esta es mi salida:

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

Hasta aquí todo bien. Mi pregunta es cómo configurarlo en el archivo build.gradle ? Gracias

Puede crear métodos para actualizar el versionCode y versionName desde la línea de comandos:

 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 } 

Luego en el bloque de Android:

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

Entonces usted puede llamar a cualquier tarea realmente:

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

Lea más sobre esto aquí: https://robertomurray.co.uk/blog/2013/gradle-android-inject-version-code-from-command-line-parameter/

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.