Android gradle 正式编译自动修改版本号

1,332 阅读1分钟

功能包含:正式编译自动修改版本号,编译APK自动签名,生成APK自动改名字

Github地址:github.com/naqunmiemie…

编译APK自动签名,生成APK自动改名字自行查看源码,这里只讲自动修改版本号的方法

1.在app的build.gradle添加如下代码

// ---------  version -------------------------------------------------
updateVersion()

def updateVersion() {
    def propertiesFile = file("build.properties")
    Properties properties = readProperties(propertiesFile)

    def versionCode = properties["version_code"].toString().toInteger()
    def versionName = properties["version_name"].toString().toInteger()

    if (isReleaseTask()) {
        System.out.println(">>> Building Release...")
        versionCode++
        versionName++
        properties["version_code"] = versionCode.toString()
        properties["version_name"] = versionName.toString()
        writeProperties(propertiesFile, properties)
    }

    android.defaultConfig.versionCode = versionCode
    android.defaultConfig.versionName = versionName + getDateTime()

    System.out.println(">>> " + project.parent.name + "   versionName:" + versionName)

}


def isReleaseTask() {
    def tasks = gradle.getStartParameter().getTaskNames()
    return ":app:assembleRelease" in tasks ||
            "ass" in tasks ||
            "assemble" in tasks ||
            "assembleRelease" in tasks ||
            ":app:bundleRelease" in tasks ||
            "bundleRelease" in tasks
}

static Properties readProperties(propertiesFile) {
    if (propertiesFile.canRead()) {
        Properties properties = new Properties()
        def inputStream = new FileInputStream(propertiesFile)
        properties.load(inputStream)
        inputStream.close()
        return properties
    } else {
        def message = ">>> Could not read " + propertiesFile.name + " file!"
        System.err.println(message)
        throw new GradleException(message)
    }
}

def static writeProperties(propertiesFile, properties) {
    def writer = propertiesFile.newWriter()
    properties.store(writer, "Build Properties")
    writer.close()
}

def getDateTime(){
    return new Date().format(".yyMMddHH", TimeZone.getTimeZone("GMT+08:00"))
}

// ---------  version -------------------------------------------------

判断是否是正式编译如下图 image.png

2.修改android/defaultConfig下的versionCode和versionName

image.png

3.同级目录创建build.properties文件

image.png 即可使用