Android 自动设置版本号与版本名称

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

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

    def versionMajor = properties["version_major"].toString().toInteger()
    def versionMinor = properties["version_minor"].toString().toInteger()
    def versionPatch = properties["version_patch"].toString().toInteger()
    def versionBuild = properties["version_build"].toString().toInteger()
    def versionStore = properties["version_store"].toString().toInteger()

    if (isReleaseTask()) {
        System.out.println(">>> Building Release...")
        versionPatch++
        versionStore++
        versionBuild = 0
        properties["version_patch"] = versionPatch.toString()
        properties["version_store"] = versionStore.toString()
        properties["version_build"] = versionBuild.toString()
        writeProperties(propertiesFile, properties)
    }
    if (isTestTask()) {
        System.out.println(">>> Running Tests...")
        versionBuild++
        properties["version_build"] = versionBuild.toString()
        writeProperties(propertiesFile, properties)
    }

    def versionName = "${versionMajor}.${versionMinor}.${versionPatch}"
    def applicationId = android.defaultConfig.applicationId
    if (!isReleaseTask()) {
        versionName = versionName + ".${versionBuild}"
        applicationId = applicationId + android.buildTypes.debug.applicationIdSuffix
    }
    System.out.println(">>> " + project.parent.name + " " + versionName + " (" + versionStore + ") " + applicationId)
    android.defaultConfig.versionCode = versionStore
    android.defaultConfig.versionName = versionName
}

def isTestTask() {
    def tasks = gradle.getStartParameter().getTaskNames()
    return ":app:testDebugUnitTest" in tasks || "testDebugUnitTest" in tasks ||
            ":app:testReleaseUnitTest" in tasks || "testReleaseUnitTest" in tasks
}

def isReleaseTask() {
    def tasks = gradle.getStartParameter().getTaskNames()
    return ":app:assembleRelease" 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()
}

根目录新建文件  build.properties内容如下

#Build Properties
#Sat Aug 07 14:32:46 EDT 2021

version_store=1


version_major=1
version_patch=0
version_minor=0
version_build=0

在每次编译正式版本后版本就会加1 非常的人性化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值