Cómo agregar la fecha de compilación a versionNameSuffix en gradle

Estoy usando Android Studio y necesito añadir un sufijo a versionNameSuffix en mi archivo build.gradle de Android. Tengo tres diferentes buildTypes y sólo tengo que añadir el datetime a mi versión beta, mi archivo real es:

defaultConfig { versionCode 14 versionName "0.7.5" minSdkVersion 9 targetSdkVersion 18 } buildTypes { beta { packageNameSuffix ".beta" versionNameSuffix "-beta" signingConfig signingConfigs.debug } .... } 

Para probar e implementar automáticamente, necesito obtener una 0.7.5-beta-build20131004 final como: 0.7.5-beta-build20131004 , 0.7.5-beta-build1380855996 o algo así. ¿Algunas ideas?

 beta { packageNameSuffix ".beta" versionNameSuffix "-beta" + "-build" + getDate() signingConfig signingConfigs.debug } def getDate() { def date = new Date() def formattedDate = date.format('yyyyMMddHHmmss') return formattedDate } 

Condensado:

 def getDate() { new Date().format('yyyyMMddHHmmss') } 

Puede definir en sus funciones y variables personalizadas build.gradle.

 def versionMajor = 3 def buildTime() { def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'") // you can change it df.setTimeZone(TimeZone.getTimeZone("UTC")) return df.format(new Date()) } 

Entonces usted puede utilizarlo:

 android { defaultConfig { versionName "${versionMajor}-beta-build-${buildTime()}" } } 

O si quieres añadirlo en tu versionNameSuffix

 beta { versionNameSuffix "-beta-build-${buildTime()}" } 

Además, no olvide agregar la importación como primera línea de Gradle:

 import java.text.SimpleDateFormat; ... 

No estoy familiarizado con Android Studio, pero asumo que Gradle se comporta como normalmente lo hace. Añadir algo como esto a su configuración de proyecto de construcción debe hacer el truco:

 allProjects { gradle.taskGraph.whenReady { taskGraph -> versionNameSuffix += '-build' + // Java/Groovy code to produce the timestamp formatted the way you want } } 

Puedes probar

 task timenow { println(new Date().getTime()) } 

Gradle de carrera: gradle timenow

Ver detalles. Colóquelo en la versión de nivel superior

 ext { configuration = [ appName : "vBulletin", applicationId : "com.vbulletin", minSdkVersion : 14, targetSdkVersion : 19, compileSdkVersion: 19, versionCode : 6, versionName : "1.3.6", buildToolsVersion: "25.0.0", ] } task createBrand { appConfig.applicationId = appConfig.applicationId + ".${brand}" appConfig.versionCode = new Date().getTime() appConfig.versionName = version } 
  • Ejecutar pelusa al construir proyectos de estudio de android
  • Robolectric + Gradle falla cuando se inicia la prueba
  • Cómo poner mis bibliotecas delante de android.jar editando build.gradle en Android-Studio
  • Gradle Android Plugin: Gancho en la tarea posterior a la compilación para todos los sabores del producto
  • Adición de dependencias de Maven a Gradle en Android Studio
  • Build.gradle y libs de proyectos
  • Error después de agregar biblioteca de juegos de servicios: ': app: transformClassesWithJarMergingForDebug'
  • Error: Error de ejecución de la tarea ': app: dexDebug'. Com.android.ide.common.process.ProcessException
  • Publicar automáticamente la aplicación beta de Android en Google Play Store
  • Explicar la estrategia de dependencias transitivas descrita en la documentación de Android Build System
  • Programas funcionan bien con LibGDX -desktop pero no LibGDX - Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.