版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/84772805
Android配置build.gradle编译release包时以日期时间加序列号为Version Code且Version Code自动增长(二)
Android官方推荐以一个自然增长的整数值为Version Code,比如以基础数值1为基础,每次发一个release包时候Version值自增长1,于是Version Code以1,2,3,4,5,,,,这种样式的自然整数增长下去。然而有时候,可能项目本身想利用Version Code表达一些有意义的事情,比如用时间日期+序列号,表明该release包是具体什么日期打的包。举例2018年12月3日打了第一个release包,那么这个包的Version Code值为:2018120301,如果修复了一些小问题,当天又打了第二个release包,于是Version Code值变为:2018120302,至于20181203后面的01,02表示打出的release包序列号,整齐期间个位数前面补齐补上0。通常两位数就够用了,一天之内,不太可能打出上百个release包,一般也就最多不超过两位数。
为实现上述目的,现在在附录文章1的基础上改进,关键还是配置app目录下的build.gradle文件:
import java.text.DecimalFormat
apply plugin: 'com.android.application'
android {
......
def currentVersionCode = getVersionCode()
defaultConfig {
......
versionCode currentVersionCode
versionName "1.0"
......
}
......
}
dependencies {
.......
}
def getVersionCode() {
def versionCodeFile = file('version_code.properties')
if (versionCodeFile.canRead()) {
Properties properties = new Properties()
properties.load(new FileInputStream(versionCodeFile))
def versionCode = properties['VERSION_CODE'].toInteger()//读取version_code.properties文件存放的版本号。
def runTasks = gradle.startParameter.taskNames
def task = ':app:assembleRelease'
if (task in runTasks) {
properties['VERSION_CODE'] = (++versionCode).toString()
properties.store(versionCodeFile.newWriter(), null)
}
return Integer.parseInt(getVersionCodePrefix() + addZeroForNumber(versionCode))
} else {
throw new GradleException("无法读取version_code.properties文件!")
}
}
//Version Code的前缀。年月日,例如20181203。
def getVersionCodePrefix() {
def date = new Date()
def versionCode = date.format('yyyyMMdd')
return versionCode
}
//给一个int整数左边补上0。比如一个整数值为1,经过addZeroForNumber处理后,返回01。
def addZeroForNumber(versionCode) {
DecimalFormat df = new DecimalFormat('00')
return df.format(versionCode);
}
附录:
1,《Android配置build.gradle实现Version Code编译release包时自动增长(一)》链接:https://blog.csdn.net/zhangphil/article/details/84770126