美文网首页
android 打包版本号自增

android 打包版本号自增

作者: 风___________ | 来源:发表于2023-09-26 15:29 被阅读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,才会递增版本

    相关文章

      网友评论

          本文标题:android 打包版本号自增

          本文链接:https://www.haomeiwen.com/subject/vedhbdtx.html