我想在我的AndroidManifest中插入最后一个git commit的哈希值(更具体地说是versionCode标签)。
我正在使用Android Studio Gradle。
答案 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()
。