Android build.gradle 获取Git 仓库数据

读取 Git commit number

def gitGitVersionCode() {
    try {
        return 'git rev-list HEAD --first-parent --count'.execute().text.trim().toInteger()
    }
    catch (ignored) {
        return 1
    }
}

可以作为 app 的Version Code

defaultConfig {
    versionCode rootProject.gitGitVersionCode()
}

读取 Git Tag

def getGitVersionName() {
    try {
        def stdout = new ByteArrayOutputStream()
        exec {
            commandLine 'git', 'describe', '--tags'
            standardOutput = stdout
        }
        return stdout.toString().trim()
    }
    catch (ignored) {
        return "1.0.0"
    }
}

可以作为 app 的 Version Name

defaultConfig {
    versionName rootProject.getGitVersionName()
}

读取 Git 日志

def getGitVersionInfo() {
    return 'git rev-parse --short HEAD'.execute().text.trim()
}

获取 Git 分支名

def getGitBranch() {
    return 'git symbolic-ref --short -q HEAD'.execute().text.trim()
}

可以在BuildConfig生成自定义字段BRANCH,用于代码中区分不同分支。

buildTypes {
    debug {
        buildConfigField 'String', 'BRANCH', '"' + rootProject.getGitBranch() + '"'       
    }
}

源码

在开源模块化框架 RxFluxArchitecture 中,欢迎大家指正点赞。可以提取有用的代码,单独编写!

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 122,057评论 17 134
  • 本片内容转自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃儿阅读 4,350评论 2 88
  • 第21天·21天告别拖延 #玩卡不卡·每日一抽#每一位都可以通过这张卡片觉察自己: 1、直觉他叫什么名字?丹 2、...
    独宠我一人阅读 70评论 0 0
  • 2015年的清明,如妈妈所愿,一家四口从三个地方聚集在安徽——她的老家。回去的原因很简单,回乡祭祖。祭祖对我来说,...
    淼沁侑子阅读 273评论 0 2