我正在寻找一种方法在构建它时将 git branch name 包含到我的android apk文件名中。
我想在构建它时自动命名我的apk文件“ProjectName- git branchname .apk”。 “
示例:“MyTestProject-master.apk”
我在线搜索并阅读了gradle文档,但找不到如何将分支名称包含在输出文件名中的参考。
一般来说,我知道如何使用gradle构建文件名。我特别询问git分支参考。
答案 0 :(得分:4)
This stackoverflow post显示了如何从命令行获取git branch name。
撰写它们以获得您需要的东西
共享代码来执行此操作:
Git可执行文件必须在您的系统路径上。
def changeApkName = { variant ->
variant.outputs.each { output ->
def apk = output.outputFile;
def newName = androidApplicationName;
def branch = getGitRevParseInfo("--abbrev-ref");
if (variant.buildType.name == "release") {
newName += "-v" + variant.mergedFlavor.versionName + "-" + branch + "-release.apk";
} else {
newName += "-v" + variant.mergedFlavor.versionName + "-" + branch + ".apk";
}
if (!output.zipAlign) {
newName = newName.replace(".apk", "-unaligned.apk");
}
output.outputFile = new File(apk.parentFile, newName);
println 'INFO: Set outputFile to ' + output.outputFile + " for [" + output.name + "]"
}
}
def getGitRevParseInfo(what) {
def cmd = "git rev-parse " + what + " HEAD"
def proc = cmd.execute()
proc.text.trim()
}
android {
applicationVariants.all { variant ->
variant.outputs.each { output ->
changeApkName(variant)
}
}
}
}
答案 1 :(得分:0)
因为您知道如何使用Gradle构建文件名
以下是获取当前git分支名称到Gradle中的任务......
def getBranchName = { ->
try {
println "Task Getting Branch Name.."
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--abbrev-ref', 'HEAD'
standardOutput = stdout
}
println "Git Current Branch = " + stdout.toString()
return stdout.toString()
}
catch (Exception e) {
println "Exception = " + e.getMessage()
return null;
}
}
您可以将其与文件名连接。
希望有所帮助......