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

使用gradle更新Android应用程序版本(存储在build.gradle中),android,android-studio,gradle,Android,Android Studio,Gradle,在gradle中执行某些任务时,是否可以更新Android或库版本versionCode和versionName?versionCode/Name放在我的android/build.gradle中 我在寻找一个完整的gradle脚本,而不是shell脚本 它不同于,因为versionCode和versionName存储在build.gradle中,而不是存储在您的build.gradle的清单中。gradle如果要更新,我已更改了一个脚本来编辑当前的build.gradle并递增versionC

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

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


它不同于,因为versionCode和versionName存储在build.gradle中,而不是存储在您的build.gradle的清单中。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)
}

@EdGeorge的可能重复它与Android Gradle中自动增加版本代码的方式不同,因为版本代码和版本名称存储在build.Gradle中,而不是在manifests中。上面的文章展示了这两种方法的技术,如果这与任何一种解决方案不同,并且完成了相同的任务,它应该作为这个问题的答案而不是它自己的答案发布question@EdGeorge通过编辑
AndroidManifest.xml
指定问题。在搜索此解决方案时,我没有找到任何答案,并且在搜索过程中没有输出“posibble replicate”。
bintrayUpload.dependsOn incrementVersionCode
bintrayUpload.dependsOn incrementVersionName