动态修改VersionCode

本文介绍了一种在构建Android应用时自动化生成VersionCode和VersionNameSuffix的方法,通过使用git提交次数和时间戳,避免了手动更新版本信息的繁琐步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每次发布release、debug版本的时候,都需要手动修改versionCode的值,为了避免麻烦,可以让VersionVode根据指定规则自动生成,我这里是根据时间来生成;
VersionCode、versionNameSuffix生成代码:

ext.revisionNumberCMD = 'git rev-list HEAD --count'
ext.revisionNumber = revisionNumberCMD.execute().getText().trim().toInteger()   //git提交次数
ext.revisionDescriptionCMD = 'git describe --always'
ext.tempRevisionDescription = revisionDescriptionCMD.execute().getText().trim() //获取commitid
ext.revisionDescription = (tempRevisionDescription == null || (tempRevisionDescription).size() == 0) ? new Date().format("yyMMdd") : (tempRevisionDescription).substring((tempRevisionDescription).size() - 6)

def getVersionCode(boolean flag) {  //获取APP版本号
    String today = new Date().format("yyyyMMdd")
    String time = new Date().format("HHmmss")

    Integer.parseInt(today) + Integer.parseInt(time)
}

def getVersionNameSuffix(String buildType) {    //获取versionNameSuffix的后缀名
    "." + buildType + "." + revisionDescription
}

给VersionCode、VersionNameSuffix赋值

android {
	......
	
    defaultConfig {
        ......
        versionCode getVersionCode(false) //75 这个方法必须带一个参数,否则调用不到
		......


    buildTypes {
		......
        debug { //测试开发版本
            debuggable true    //是否为debug状态,也可以不配置,默认为true
            applicationIdSuffix '.test'    //这里是在applicationId中添加了一个后缀
            versionNameSuffix getVersionNameSuffix("Debug") //'.Debug'       //这个会显示在版本号后面
            proguardFiles 'proguard-rules.pro'
        }

        debugSign.initWith(debug)
        debugSign { //测试打包版本,给非开发人员的安装版本
            signingConfig signingConfigs.debugSign
            versionNameSuffix getVersionNameSuffix("DebugSign")     //版本号,一直往上加
            matchingFallbacks = ['release', 'debug']    //关键代码,release, debug为library中已有buildType
        }
	}
	......
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值