Android 从清单中获取versionCode和versionName

Android 从清单中获取versionCode和versionName,android,gradle,android-studio,android-gradle-plugin,build.gradle,Android,Gradle,Android Studio,Android Gradle Plugin,Build.gradle,我有一个脚本可以自动增加Manifest.xml中的versionName和versionCode。Android studio使用build.gradle中的versionName和versionCode build.gradle: 如何将版本代码从清单获取到build.gradle?但是您可以直接在build.gradle文件下的android->buildConfig中的gradle中设置应用程序版本代码/名称。。您可以从清单中删除这些file@Cata但我需要它来自动增加代码和号码。同意

我有一个脚本可以自动增加Manifest.xml中的versionName和versionCode。Android studio使用build.gradle中的versionName和versionCode

build.gradle:


如何将版本代码从清单获取到build.gradle?

但是您可以直接在build.gradle文件下的android->buildConfig中的gradle中设置应用程序版本代码/名称。。您可以从清单中删除这些file@Cata但我需要它来自动增加代码和号码。同意。这种方法至少在2014年夏天就已经过时了。下面是一个示例项目,它演示了在不影响清单的情况下自动递增versionCode:动态修改versionName或从versionCode生成versionName,或从一组公共值(例如,主/次/补丁级别)生成这两个值,也有类似的方法。
task('increaseVersionCode') << {
def manifestFile = file("src/main/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)
}

task('incrementVersionName') << {
def manifestFile = file("src/main/AndroidManifest.xml")
def patternVersionNumber = Pattern.compile("versionName=\"(\\d+)\\.(\\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 buildVersion = Integer.parseInt(matcherVersionNumber.group(4))
def mNextVersionName = majorVersion + "." + minorVersion + "." + pointVersion + "." + (buildVersion + 1)
def manifestContent = matcherVersionNumber.replaceAll("versionName=\"" + mNextVersionName + "\"")
manifestFile.write(manifestContent)
}

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