android 打包版本号自增

2023-09-26  本文已影响0人  风___________
  1. 在根目录创建文件version.properties
# 文件中添加下面,用于记录版本号
VERSION_CODE=1
  1. 添加下面代码build.gradle(:app)
// 下面是版本号自增逻辑(目的是生成这俩资源`verCode`和`verName`)
def verCode = 1
def verName = "1.0.0"
def versionPropsFile = file('../version.properties')
if (versionPropsFile.canRead()) {
    Properties versionProps = new Properties()
    versionProps.load(new FileInputStream(versionPropsFile))
    //从version.properties根据关键字"VERSION_CODE"取Integer
    verCode = versionProps['VERSION_CODE'].toInteger()
    // 判断build模式,如果是特定模式 则自增版本号,并且写回version.properties文件中
    def runTasks = gradle.startParameter.taskNames
    println runTasks
    // 根据实际换成自己的`ReleaseTest`
    if (runTasks.toString().contains("ReleaseTest")) {
        println "run2"
        //版本号自增
        verCode++
        verName = "1.0.$verCode"
        // 写入版本控制文件
        versionProps['VERSION_CODE'] = verCode.toString()
        versionProps.store(versionPropsFile.newWriter(), null)
    }
    println "run3"
} else {
    throw new GradleException("Could not find version.properties!")
}

/** 获取当前时间 */
import java.text.SimpleDateFormat
def getCurrentTime() {
    def dateFormat = new SimpleDateFormat("HH_mm")
    dateFormat.timeZone = TimeZone.getTimeZone("GMT+8")
    return dateFormat.format(new Date())
}
// 下面是 项目配置
android {
    compileSdk 33
    // 这里是关键,使用上面生成的`verCode`和`verName`
    defaultConfig {
        versionCode verCode
        versionName verName
        ....
    }

    buildTypes {
        releaseTest {...}
        ...
        // 重命名生成apk --- 这里是我重新设置了生成的apk的文件名!
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def oldFile = output.outputFile
                if (oldFile != null && oldFile.name.endsWith('.apk')) {
                    //重命名apk文件名: 项目名_v版本名_构建类型_打包时间.apk
                    def fileName = "xxx_v${defaultConfig.versionName}_${variant.buildType.name}_${getCurrentTime()}.apk"
                    // 执行重命名操作
                    output.outputFileName = fileName
                    println "Renamed APK to: $fileName"
                }
            }
        }
   }
}
!!!! 注意,代码中的ReleaseTest 是我用来设置打包某个apk,才会递增版本
上一篇 下一篇

猜你喜欢

热点阅读