如何将日期构建附加到 gradle 上的 versionNameSuffix
Posted
技术标签:
【中文标题】如何将日期构建附加到 gradle 上的 versionNameSuffix【英文标题】:how append date build to versionNameSuffix on gradle 【发布时间】:2013-10-10 22:34:49 【问题描述】:我正在使用 android Studio,我需要在我的 Android build.gradle 文件上的 versionNameSuffix
上附加一个后缀。我有三种不同的构建类型,我只需要将日期时间附加到我的“测试版”版本。我的实际文件是:
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
或类似的名称。有什么想法吗?
【问题讨论】:
【参考方案1】: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')
【讨论】:
配置好build.gradle后如何生成apk? como 通用 el apk despues?【参考方案2】:您可以在 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()"
【讨论】:
versionNameSuffix 已损坏至少一年buildTime
加下划线:不支持内部方法。
如何导入 Date()?【参考方案3】:
另外,别忘了在第一行添加 import as Gradle:
import java.text.SimpleDateFormat;
...
【讨论】:
或避免悲伤并使用 Date().format("yyyyMMdd'T'HHmmssZ")【参考方案4】: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")
【讨论】:
【参考方案5】:我不熟悉 Android Studio,但我会假设 Gradle 的行为正常。在你的构建项目配置中添加这样的东西应该可以解决问题:
allProjects
gradle.taskGraph.whenReady taskGraph ->
versionNameSuffix += '-build' + // Java/Groovy code to produce the timestamp formatted the way you want
【讨论】:
【参考方案6】:你可以测试
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
【讨论】:
【参考方案7】:这适用于 Kotlin DSL (build.gradle.kts):
// At the top of the file
import java.time.LocalDate
import java.time.format.DateTimeFormatter.*
// ...
android
buildTypes
getByName("debug")
val date = LocalDate.now().toString()
val date2 = LocalDate.now().format(ISO_LOCAL_DATE)
val date3 = LocalDate.now().format(ofPattern("yyyy-MM-dd"))
versionNameSuffix = date
您还可以将创建日期提取到函数中:
android
buildTypes
getByName("debug")
versionNameSuffix = generateDate()
fun generateDate() = LocalDate.now().toString()
// OR fun generateDate() = LocalDate.now().format(ISO_LOCAL_DATE)
// OR fun generateDate() = LocalDate.now().format(ofPattern("yyyy-MM-dd"))
【讨论】:
以上是关于如何将日期构建附加到 gradle 上的 versionNameSuffix的主要内容,如果未能解决你的问题,请参考以下文章
Gradle 学习总结—— 如何将 Spring Boot 构建工具从 Maven 迁移到 Gradle
Gradle 学习总结—— 如何将 Spring Boot 构建工具从 Maven 迁移到 Gradle
在哪里或如何找到 BizTalk 服务器的数据库以将它们附加到 SQL 服务器?