如何将附加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") } }