我正在使用Android Studio,Gradle,git。
每次推送到主分支机构,我都想构建一个新的App版本,该版本已上传到Google Play商店的Alpha频道。为此,我需要为每个版本增加App的versionCode。
为此我似乎有几个选择:
目前,我最喜欢3个。
有人有明确的方法吗?
答案 0 :(得分:21)
我没有使用上述内容 - 就像你一样,我不想改变每个版本的回购,也不想改变任何文件。
Jenkins对每个构建都有一个不断增加的值,通过BUILD_NUMBER
环境变量公开。
在Gradle中,我在构建时以编程方式生成versionCode
值,使用BUILD_NUMBER
值确保versionCode
始终高于上一版本。
我build.gradle
的片段:
// Used to set the package version name and version code
ext.versionMajor = 1
ext.versionMinor = 2
android {
defaultConfig {
versionName computeVersionName()
versionCode computeVersionCode()
}
}
// Will return "1.2" in this example
def computeVersionName() {
// Basic <major>.<minor> version name
return String.format('%d.%d', versionMajor, versionMinor)
}
// Will return 120042 for Jenkins build #42
def computeVersionCode() {
// Major + minor + Jenkins build number (where available)
return (versionMajor * 100000)
+ (versionMinor * 10000)
+ Integer.valueOf(System.env.BUILD_NUMBER ?: 0)
}
所以我只需要在发布版本时更新顶部的两个值。对于所有其他构建类型,我可以让Gradle / Jenkins自动设置versionCode
,然后upload to Google Play。
这也意味着,对于Play商店中列出的任何alpha版本,或者通过检查APK,我可以立即看到Jenkins构建它来自哪里,并从那里获得git commit。