Android 发布自动版本号方案 ( gradle + git )/ git rev-list HEAD/git describe --tags

Posted Mars-xq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 发布自动版本号方案 ( gradle + git )/ git rev-list HEAD/git describe --tags相关的知识,希望对你有一定的参考价值。

常用:

# 获取当前分支的提交总次数:
> git rev-list HEAD --count
1042
# 使用commit的哈希值作为版本号也是可以的,获取最新的一次提交的哈希值的前七个字符
> git rev-list HEAD --abbrev-commit --max-count=1
cc450c1de
# 获取最新的一个tag信息
> git describe --tags
v1.9.0-4-gcc450c1de
# v1.9.0 : tag名
# 4 : 打tag之后又有四次提交
# gcc450c1de :开头 g 为git的缩写,在多种管理工具并存的环境中很有用处
# cc450c1de : 当前分支最新的commitID前几位

demo :

def gitVersionCode() {  
    def cmd = 'git rev-list HEAD --first-parent --count'
    cmd.execute().text.trim().toInteger()
}
 
def gitVersionTag() {  
    def cmd = 'git describe --tags'
    def version = cmd.execute().text.trim()
 
    def pattern = "-(\\\\d+)-g"
    def matcher = version =~ pattern
 
    if (matcher) {
        version = version.substring(0, matcher.start()) + "." + matcher[0][1]
    } else {
        version = version + ".0"
    }
 
    return version
}
 
android {  
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
 
    defaultConfig {
        applicationId "com.race604.example"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName '1.0'
    }
    buildTypes {
        debug {
            // 为了不和 release 版本冲突
            applicationIdSuffix ".debug"
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    applicationVariants.all { variant ->
        if (variant.buildType.name.equals('release')) {
            variant.mergedFlavor.versionCode = gitVersionCode()
            variant.mergedFlavor.versionName = gitVersionTag()
        }
    }
}

以上是关于Android 发布自动版本号方案 ( gradle + git )/ git rev-list HEAD/git describe --tags的主要内容,如果未能解决你的问题,请参考以下文章

使用gradle构建Android时 版本号versionName中嵌入git提交信息

使用 Artifactory 和/或 Gradle 自动化版本号

Android Studio 打包apk,自动追加版本号和版本名称

Android Studio 打包apk,自动追加版本号和版本名称

Android Studio 如何快速改插件与Gradle的版本号

react-native android/ios 手动/自动 修改版本号