我进行了广泛的搜索,但可能是由于 Android Studio 和 Gradle 的新颖性。我还没有找到有关如何执行此操作的任何描述。我想基本上完全按照 这篇文章 中描述的去做,但是使用 Android Studio、Gradle 和 Windows 而不是 Eclipse 和 Linux。
原文由 Mike Yount 发布,翻译遵循 CC BY-SA 4.0 许可协议
我进行了广泛的搜索,但可能是由于 Android Studio 和 Gradle 的新颖性。我还没有找到有关如何执行此操作的任何描述。我想基本上完全按照 这篇文章 中描述的去做,但是使用 Android Studio、Gradle 和 Windows 而不是 Eclipse 和 Linux。
原文由 Mike Yount 发布,翻译遵循 CC BY-SA 4.0 许可协议
将以下内容放入项目的 build.gradle 文件中。无需直接修改清单:Google 提供了必要的挂钩到他们的配置中。
def getVersionCode = { ->
try {
def code = new ByteArrayOutputStream()
exec {
commandLine 'git', 'tag', '--list'
standardOutput = code
}
return code.toString().split("\n").size()
}
catch (ignored) {
return -1;
}
}
def getVersionName = { ->
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags', '--dirty'
standardOutput = stdout
}
return stdout.toString().trim()
}
catch (ignored) {
return null;
}
}
android {
defaultConfig {
versionCode getVersionCode()
versionName getVersionName()
}
}
请注意,如果机器上未安装 git,或者在获取版本名称/代码时出现其他错误,它将默认为您的 android 清单中的内容。
原文由 moveaway00 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答1.4k 阅读✓ 已解决
3 回答942 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答711 阅读✓ 已解决
2 回答891 阅读✓ 已解决
1 回答823 阅读✓ 已解决
4.1k 阅读
获得最近获得关注的结果的一种更合适和更精简的方法是使用 grgit 集成,它使用 JGit Java 库。因为它使用 JGit,所以它甚至不需要安装 git 就可以工作(这简化了构建管道中的事情)。
这是一个显示类似(但在 gitVersionName 字符串中有一些附加信息)解决方案的基本示例:
正如您在 Grgit API 文档 中看到的那样, describe 操作 提供了除历史记录中可访问的最新标记之外的其他信息:
无论如何,它不会告诉状态是否脏。通过查看存储库的 干净状态 并在不干净的情况下附加一个字符串,可以轻松添加此信息。