Incrementar versión en la compilación del proyecto

En Android Studio tengo en build.gradle información por defecto sobre la versión de la aplicación:

 android { defaultConfig { versionCode 24 versionName "0.1 beta" } } 

¿Cómo puedo incrementar el versionCode automáticamente en cada compilación del proyecto?

Citando mi libro :

Dado que el android:versionCode es un monótonamente creciente entero, un enfoque para automatizarlo es simplemente incrementarlo en cada compilación. Aunque esto puede parecer un despilfarro, dos mil millones de compilaciones son muchas , por lo que es improbable que un desarrollador solo se acabe. Sincronizar tales valores de versionCode en un equipo será un poco más complejo, pero para un caso individual (desarrollador, servidor de compilación, etc.), es eminentemente factible usar Groovy.

El proyecto de ejemplo Gradle/HelloVersioning utiliza un archivo version.properties como el almacén de respaldo para la información de versión:

 def versionPropsFile = file('version.properties') if (versionPropsFile.canRead()) { def Properties versionProps = new Properties() versionProps.load(new FileInputStream(versionPropsFile)) def code = versionProps['VERSION_CODE'].toInteger() + 1 versionProps['VERSION_CODE']=code.toString() versionProps.store(versionPropsFile.newWriter(), null) defaultConfig { versionCode code versionName "1.1" minSdkVersion 14 targetSdkVersion 18 } } else { throw new GradleException("Could not read version.properties!") } 

En primer lugar, intentamos abrir un archivo version.properties y fallar si no existe, lo que requiere que el desarrollador cree manualmente un archivo de inicio:

 VERSION_CODE=1 

Por supuesto, una implementación más robusta de este script manejaría este caso y proporcionaría un valor inicial para el desarrollador.

La secuencia de comandos utiliza la lógica read-the-custom-properties ilustrada en la sección anterior [NOTA: del libro, no incluida aquí] para leer el valor existente … pero incrementa el valor anterior por 1 para obtener el nuevo código usar. El código revisado se vuelve a escribir en el archivo de propiedades antes de que se aplique en el bloque defaultConfig .

En este caso, el script lanza una GradleException para detener la compilación si el archivo version.properties no se pudo encontrar o de lo contrario no se pudo leer.

  • Gradle Duplicate Entry
  • Diferencia entre limpio, gradlew limpio
  • ¿Cómo puedo implementar la versión de código gradle auto increrement?
  • Kotlin: Recopilación incremental con Gradle
  • Varios archivos dex definen Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat con Gradle
  • ¿Por qué debo incluir una dependencia de gradle como `@ aar`
  • Android Studio Gradle no puede encontrar 'com.android.support:design:22.2.0' (Android Design Support Library)
  • ¿Cómo puedo agregar un JAR en mi proyecto gradle?
  • ¿Pueden los recursos de ID de Android referirse hacia adelante?
  • Dependencias -> No se pudo crear el complemento del tipo 'AppPlugin'
  • ¿Cómo publicar una biblioteca de Android como un artefacto Maven en Bitbucket?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.