动态修改VersionCode

每次发布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
        }
	}
	......
}

你可能感兴趣的:(android)