繁体   English   中英

使用gradle更新Android应用程序版本(存储在build.gradle中)

[英]Update Android Application version (stored in build.gradle) with gradle

在gradle中执行某些任务时,是否可以更新Android或库的版本versionCodeversionName versionCode / Name放在我的android / build.gradle中

我正在寻找一个完整的gradle脚本,而不是shell脚本。

它与如何在Android Gradle中自动增加versionCode的方式不同,因为versionCode和versioName存储在build.gradle中,而不在清单中

在您要更新的build.gradle中,我更改了脚本以编辑当前的build.gradle并递增versionCode和versionName。

将此任务添加到您的gradle中:

task incrementVersionCode << {
    println("Incrementing Version Code...")
    def manifestFile = file("build.gradle")
    def patternVersionCode = Pattern.compile("versionCode (\\d+)")
    def manifestText = manifestFile.getText()
    def matcherVersionCode = patternVersionCode.matcher(manifestText)
    matcherVersionCode.find()
    def mVersionCode = Integer.parseInt(matcherVersionCode.group(1))
    def mNextVersionCode = mVersionCode + 1
    def manifestContent = matcherVersionCode.replaceAll("versionCode " + mNextVersionCode)
    println("> Set versionCode(" + mVersionCode + ") to " + mNextVersionCode);
    manifestFile.write(manifestContent)
}

task incrementVersionName << {
    println("Incrementing Version Name...")
    def manifestFile = file("build.gradle")
    def patternVersionNumber = Pattern.compile("versionName \"(\\d+)\\.(\\d+)\\.(\\d+)\"")
    def manifestText = manifestFile.getText()
    def matcherVersionNumber = patternVersionNumber.matcher(manifestText)
    matcherVersionNumber.find()
    def majorVersion = Integer.parseInt(matcherVersionNumber.group(1))
    def minorVersion = Integer.parseInt(matcherVersionNumber.group(2))
    def pointVersion = Integer.parseInt(matcherVersionNumber.group(3))
    def mVersionName = majorVersion + "." + minorVersion + "." + pointVersion
    def mNextVersionName = majorVersion + "." + minorVersion + "." + (pointVersion + 1)
    def manifestContent = matcherVersionNumber.replaceAll("versionName \"" + mNextVersionName + "\"")
    println("> Set versionName(" + mVersionName + ") to " + mNextVersionName);
    manifestFile.write(manifestContent)
}

用法

如果要在运行./gradlew bintrayUpload时更新版本(例如mut,它可能是您想要的任务),请添加以下内容:

bintrayUpload.dependsOn incrementVersionCode
bintrayUpload.dependsOn incrementVersionName

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM