我需要编写gradle脚本以在每次提交时自动对应用程序进行版本控制。我还需要在测试人员的应用程序中包含提交哈希作为引用。

我对自动版本控制通常如何工作感到困惑。有人可以解释自动版本化过程吗?

最佳答案

我遇到了类似的问题,但不想修改versionName以包括git哈希。我们希望将其保持为1.2.2,但是仍然可以在UI中显示git hash。

我修改了the other answer here中的代码,以使用buildConfigField任务生成可在Java代码中引用的BuildConfig.GitHash值。

将其添加到模块的build.gradle文件的android部分上方:

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

然后将以下行添加到build.gradle的defaultConfig部分的android部分,即versionName下面:
buildConfigField "String", "GitHash", "\"${getGitHash()}\""

这将在自动生成的BuildConfig.java文件中生成以下行:
// Fields from default config.
public static final String GitHash = "e61af97";

现在,您可以使用BuildConfig.GitHash在Java代码中获取git哈希。

08-26 07:37