如何将附加date生成到gradle上的versionNameSuffix

我正在使用Android Studio,我需要在我的Android build.gradle文件的versionNameSuffix上附加一个后缀。 我有三个不同的buildType,我只需要将date时间附加到我的“testing版”版本,我的实际文件是:

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

对于testing和自动部署,我需要得到一个最终0.7.5-beta-build20131004 ,如: 0.7.5-beta-build20131004 0.7.5-beta-build1380855996或类似的东西。 有任何想法吗?

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

凝结:

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

你可以在你的build.gradle自定义函数和variables中定义。

 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()) } 

那么你可以使用它:

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

或者如果你想在你的versionNameSuffix中添加它

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

另外,不要忘记添加导入作为Gradle的第一行:

 import java.text.SimpleDateFormat; ... 

我不熟悉Android Studio,但是我会假设Gradle像往常一样工作。 添加这样的东西到您的生成项目configuration应该做的伎俩:

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

你可以testing

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

运行gradle:gradle timenow

查看具体信息。 将其放置在顶层构build中

 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 } 
 for simple one row solution define this property above android section final BUILD_DATE = new Date().format('yyyy_MM_dd_HHmm') and then android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { applicationId APPLICATION_ID minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.compileSdkVersion versionName GIT_TAG_NAME versionCode GIT_COMMIT_COUNT setProperty("archivesBaseName",`enter code here` "com-appname-$BUILD_DATE-$versionName") } }