Gradle script para autoversion e incluir el hash de commit en Android

Necesito escribir un script de gradle a la versión automática de mi aplicación en cada commit. También necesito incluir el hash de commit como una referencia en la aplicación para probadores.

Estoy confundido cómo funciona el control automático de versiones. ¿Puede alguien explicar el proceso de autoversión?

Gracias

Encontré un problema similar, pero no quería modificar el nombre de versión para incluir el git hash. Queríamos mantener eso como algo como 1.2.2, pero todavía tienen la posibilidad de mostrar el hash git en la interfaz de usuario.

He modificado el código de la otra respuesta aquí para utilizar la tarea buildConfigField para generar un valor BuildConfig.GitHash que se puede hacer referencia en el código Java.

Agregue esto encima de la sección android del archivo build.gradle de su módulo:

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

A continuación, agregue la siguiente línea a la sección defaultConfig de la sección android de build.gradle, es decir, debajo de versionName :

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

Esto genera la siguiente línea en el archivo BuildConfig.java generado automáticamente:

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

Ahora puede obtener el git hash en su código Java con BuildConfig.GitHash .

Una solución ideal podría ser agarrar la versión del estado git del proyecto. De esta manera el versionado no se basa en que recuerde aumentar una variable, o cambiar cualquier texto en el gradle o archivos de configuración.

Puede encontrar un ejemplo descriptivo en http://ryanharter.com/blog/2013/07/30/automatic-versioning-with-git-and-gradle/

La idea es obtener la información de git con la función getVersionName, y usar esa función en el script gradle.

Otro enfoque (basado también en obtener la información de la versión de git) podría ser éste, como un complemento gradle: https://github.com/GeoNet/gradle-build-version-plugin

Si desea agregar commit id después de versionName, parece 1111-abcdefg

Añada a continuación en su aplicación / build.gradle encima de la sección android (no la raíz build.gradle)

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

Añada a continuación en android {defaultConfig {HERE}}

 versionNameSuffix '-'+getVersionName() 
  • Los archivos Jar en la carpeta libs no se utilizan en la compilación de Android Gradle
  • Versión de Android 24.0.0 y Excepción de gradle de Espresso 2.0
  • ShrinkResources establecido en true, pero todos los recursos no utilizados (específicamente dibujables) no se eliminan
  • Junit testing con gradle para un proyecto android
  • Añadir ViewPagerIndicator a Android Studio
  • Prueba de Android: 'Múltiples archivos dex' cuando se usa 'cheque de gradle chequeado'
  • Proyecto de gradle de Android proyecto de compilación en un árbol de directorio diferente
  • ¿Por qué Gradle crea mi módulo en el modo Release cuando la aplicación está en Debug
  • Vista personalizada en una biblioteca aar local no accesible?
  • Android Studio, error de actualización de Gradle
  • Android: la aplicación se bloquea en dispositivos Pre-Lollipop
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.