android - 如何在 Android Gradle 中自动增加 versionCode

我正在试验基于 Gradle 的新 Android 构建系统,我在想,用它自动增加 versionCode 的最佳方法是什么。我正在考虑两种选择

  1. 创建 versionCode 文件,从中读取数字,增加并写回文件
  2. 解析AndroidManifest.xml,从中读取versionCode,增加并写回AndroidManifest.xml

还有更简单或更合适的解决方案吗?

有没有人使用过上面提到的选项之一并可以与我分享?

最佳答案

我已决定第二个选项 - 解析 AndroidManifest.xml。这是工作 fragment 。

task('increaseVersionCode') << {
    def manifestFile = file("AndroidManifest.xml")
    def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
    def manifestText = manifestFile.getText()
    def matcher = pattern.matcher(manifestText)
    matcher.find()
    def versionCode = Integer.parseInt(matcher.group(1))
    def manifestContent = matcher.replaceAll("versionCode=\"" + ++versionCode + "\"")
    manifestFile.write(manifestContent)
}

tasks.whenTaskAdded { task ->
    if (task.name == 'generateReleaseBuildConfig') {
        task.dependsOn 'increaseVersionCode'
    }
}

versionCode 在这种情况下是为发布版本发布的。为调试构建增加它在 task.whenTaskAdded 回调中更改 task.name 方程。

https://stackoverflow.com/questions/17448565/

相关文章:

xcode - 如何在 Xcode 中启用构建时间?

java - 如何在 Eclipse 中更新 Maven 存储库?

php - 错误构建 : fatal error: pcre. h:没有这样的文件或目录

unit-testing - 没有找到测试。确保已安装的测试发现器和执行器、平台和框架版本设置正确,

go - go build 是什么意思? (去构建与去安装)

android - 错误 - Android 资源链接失败(AAPT2 27.0.3 Daemon

javascript - 使用 Webpack 基于环境的条件构建

android - 错误 :(6, 0) 未找到 Gradle DSL 方法: 'google()'

testing - 如何在不从命令行测试的情况下运行 sbt 汇编命令?

shell - 运行 shell 脚本时如何在 Jenkins 中将构建标记为不稳定