如何创建Android Studio构建脚本以在构建版本中插入git commit hash?

时间:2013-11-06 09:23:15

标签: android-manifest android-studio android-gradle

我想在我的AndroidManifest中插入最后一个git commit的哈希值(更具体地说是versionCode标签)。

我正在使用Android Studio Gradle。

2 个答案:

答案 0 :(得分:3)

要回答OQ,请将以下内容添加到应用程序build.gradle的android部分

def getGitHash = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'rev-parse', 'HEAD'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}

由于versionCode是数字,因此将defaultConfig versionName更改为

versionName getGitHash()

更好的实施

我实际上对自己的项目做的是将值注入BuildConfig变量并以这种方式访问​​它。

我在android部分使用这些方法:

def getGitHash = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'rev-parse', 'HEAD'
        standardOutput = stdout
    }
    return "\"" + stdout.toString().trim() + "\""
}

def getGitBranch = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'rev-parse', '--abbrev-ref', 'HEAD'
        standardOutput = stdout
    }
    return "\"" + stdout.toString().trim() + "\""
}

并将其添加到BuildConfig部分:

productFlavors {
    dev {
        ...
        buildConfigField "String", "GIT_HASH", getGitHash()
        buildConfigField "String", "GIT_BRANCH", getGitBranch()
        ...
    }
 }

然后在源代码中,例如Application.java

Log.v(LOG_TAG, "git branch=" + BuildConfig.GIT_BRANCH);
Log.v(LOG_TAG, "git commit=" + BuildConfig.GIT_HASH);

答案 1 :(得分:1)

来自Ryan Harter的this post,标记您的提交并将以下内容添加到您的build.gradle脚本中。

/*
 * Gets the version name from the latest Git tag
 */
def getVersionName = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'describe', '--tags'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}

然后更改versionName中的defaultConfig以使用getVersionName()