我正在使用Android Studio,我需要在我的Android build.gradle文件中为versionNameSuffix添加后缀。我有三种不同的buildTypes,我只需要将日期时间附加到我的" beta"发布,我的实际文件是:
defaultConfig {
versionCode 14
versionName "0.7.5"
minSdkVersion 9
targetSdkVersion 18
}
buildTypes {
beta {
packageNameSuffix ".beta"
versionNameSuffix "-beta"
signingConfig signingConfigs.debug
}
....
}
对于测试和自动部署,我需要获得最终版本名称:0.7.5-beta-build20131004
,0.7.5-beta-build1380855996
或类似的东西。有什么想法吗?
答案 0 :(得分:142)
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() {
return new Date().format('yyyyMMddHHmmss')
}
答案 1 :(得分:35)
您可以在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())
}
然后你可以使用它:
android {
defaultConfig {
versionName "${versionMajor}-beta-build-${buildTime()}"
}
}
或者如果你想在你的versionNameSuffix
中添加它beta {
versionNameSuffix "-beta-build-${buildTime()}"
}
答案 2 :(得分:9)
另外,不要忘记将导入添加为Gradle第一行:
import java.text.SimpleDateFormat;
...
答案 3 :(得分:2)
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")
}
}
答案 4 :(得分:1)
我不熟悉Android Studio,但我会假设Gradle的行为和平常一样。在构建项目配置中添加这样的东西应该可以解决这个问题:
allProjects {
gradle.taskGraph.whenReady { taskGraph ->
versionNameSuffix += '-build' + // Java/Groovy code to produce the timestamp formatted the way you want
}
}
答案 5 :(得分:0)
你可以测试
task timenow {
println(new Date().getTime())
}
运行gradle:gradle timenow
查看详情。将它放在顶级构建
上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
}