android - 使用带有 Gradle 的 git describe 对 Android 构建进行自动版本控制

标签 android git gradle android-build auto-versioning

我进行了广泛的搜索,但可能是由于 Android Studio 和 Gradle 的新颖性。我还没有找到有关如何执行此操作的任何描述。我想基本上完全按照 this post 中的描述进行操作,但使用 Android Studio、Gradle 和 Windows 而不是 Eclipse 和 Linux。

最佳答案

将以下内容放入项目的 build.gradle 文件中。无需直接修改 list :Google 在其配置中提供了必要的 Hook 。

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 manifest 中的内容。

关于android - 使用带有 Gradle 的 git describe 对 Android 构建进行自动版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097263/

相关文章:

android - 如何在 Android 上正确访问实时相机数据? Skype 是如何做到的?

android - 默认描边并填充SVG

android - 可穿戴设备上未显示通知操作图标

git - 是否有可用的测试 GIT 存储库?

java - @string/action_settings 中的值是多少?

git - 为什么 git 会暂存我 checkin 的文件,这些文件是在 merge 中拾取的,但我没有触及?

git - .gitignore 不忽略 .idea 路径

android - 发布相同的应用程序但有两个版本

android - 在Android Gradle中,有没有办法使用本地快照依赖?

maven - 我如何使用gradle包装Maven或任何其他构建系统,以便依赖项起作用