android打包自动生成版本号

常见版本命名规则(引自百度百科)

版本控制比较普遍的 3 种命名格式 :

1、GNU 风格版本号
主版本号 . 子版本号 . 修正版本号 build- 编译版本号 
示例:1.0.0 build-1234
2、Windows 风格版本号
主版本号 . 子版本号 . 修正版本号 . 编译版本号 
示例:1.0.0.1234
3、Net Framework 风格版本号
主版本号 . 子版本号 . 编译版本号 . 修正版本号
示例:1.0.1234.0

Android自动生成版本号

当使用git进行代码管理时,我们可以考虑将“编译版本号”稍作改变,替换成当前分支下git提交次数,偷换概念后得到了一个动态版本号,规避打包时手动设置版本号问题。此方式在编译指定git tag时,获取到的是tag对应分支的提交次数,所以对于一个git tag来说,它的版本号是固定了,不会受其它分支提交次数的影响。这种方式相对于编译版本号按照编译次数累加来说尤其特有优势。

上代码,Android studio需要打包的build.gradle中如下配置

//通过指令获取当前分支提交次数commitCount
Process process = "git rev-list --count HEAD".execute()
process.waitFor()
int commitCount = process.getText() as int
//这是配置文件自定义的一个基础版本号
int baseVersionCode = project.versionCode as int
//基础版本号和git提交次数求和,得到新版本
def newVersionCode = commitCount + baseVersionCode
android {
    defaultConfig {
       //配置versionCode
        versionCode newVersionCode
        //或者
        //versionCode commitCount 

        //配置versionName,project.versionName为自定义的版本名,请按项目情况自定义
        versionName "$project.versionName.${newVersionCode}"
        //或者
        //versionName "1.0.0.${newVersionCode}"

        //控制台打印下newVersionCode、commitCount 
        println "newVersionCode: ${newVersionCode}"
        println "commitCount : ${commitCount }"
    }
   .....
}

 

你可能感兴趣的:(android)