Android 从最后一个git标记设置versionCode
我试图让Gradle从Git中提取最后一个标记,并将其用作Android 从最后一个git标记设置versionCode,android,git,gradle,Android,Git,Gradle,我试图让Gradle从Git中提取最后一个标记,并将其用作versionName。我定义了这个简单的任务: def gitTag() { def cmd = "git describe --abbrev=0 --tags" def proc = cmd.execute() return proc.text.trim() } 然后像这样使用它: defaultConfig { // (...) versionName gitTag() ?
versionName
。我定义了这个简单的任务:
def gitTag() {
def cmd = "git describe --abbrev=0 --tags"
def proc = cmd.execute()
return proc.text.trim()
}
然后像这样使用它:
defaultConfig {
// (...)
versionName gitTag() ?: "NO_VERSION"
}
问题是,这仅在从命令行构建时按预期工作。当我尝试从Android Studio运行应用程序时,我总是得到“无版本”
编辑:在一些测试之后,它似乎失败了,因为运行Android Studio时的工作目录是~/.AndroidStudio/system/compile server
,所以上面的命令失败了,因为该目录不是git存储库
EDIT2:在玩了更多的游戏之后,似乎只有一些命令失败了。如果我用git--version
或git status
替换命令,我会得到预期的输出,但是如果我使用类似于git rev list HEAD--count的东西,那么stdout和stderr都是空的。使用git rev list HEAD
也可以。沃特
那么,如何使用Gradle项目目录作为工作目录来执行git命令呢 您尝试过git命令行的完整路径吗?@Quanturium是的,结果是一样的。问题似乎与使用的工作目录有关。命令的输出是什么?这似乎与以下问题相同:Trycd/path/to/working/directory&&git descripe--abbrev=0--tags
。