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?
- Importar biblioteca en Eclipse sin jar
- Gradle - DependencySubstitution para la aplicación de Android con una biblioteca
- Error de compilación de Android Studio y Gradle
- Gradle firma la aplicación con packageRelease "especificado para la propiedad 'signedConfig.storeFile' no existe"
- Uso de la biblioteca personal alojada en github como dependencia gradle
Gracias
- Android studio no puede resolver import org.json.JSONObject
- Gradle Build Android Project Error "No se pudo resolver todas las dependencias"
- Cómo importar RecyclerView para Android L-preview
- ¿Por qué CardView y RecyclerView requieren minSdkVersion L?
- Aplicación de Appdynamics
- Quitar la biblioteca externa de clases obfuscated.jar (en Android Studio / Gradle)
- AndroidStudio Gradle: cómo configurar buildTypes, y comprobar que buildType al construir?
- Gradle no puede resolver todas las dependencias, url personalizado maven en la biblioteca
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()
- El redireccionamiento de URL no funciona en Android a través de Intent – (Error de página no encontrada)
- Android dibujar círculo alrededor de texto