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