第一、在項目 app 創(chuàng)建文件version.properties

image.png
[version.properties]
第二、在version.properties中創(chuàng)建
VERSION_CODE = YOUR CODE (比如 110)
VERSION_NAME = YOUR NAME (比如 1.1.0)

image.png
第三、在app.build中android{ .... } 中寫入如下代碼:
def versionCode = getVersionCode()
def versionName = getVersionName()
這兩句不要在defaultConfig{ .. }中添加,接著在defaultConfig中
versionCode = versionCode
versionName = versionName
全部代碼:
apply plugin: 'com.android.application'
android {
def versionCode = getVersionCode()
def versionName = getVersionName()
defaultConfig {
......
versionCode versionCode
versionName versionName
......
}
......
}
//設置versionCode 自增長
def getVersionCode() {
def versionFile = file('version.properties')
if (versionFile.canRead()) {
Properties properties = new Properties()
properties.load(new FileInputStream(versionFile))
def versionCode = properties['VERSION_CODE'].toInteger()//讀取 version.properties文件存放的版本號。
def runTasks = gradle.startParameter.taskNames
def task = ':app:assembleICBC_APPRelease' //(此處一定要注意)
if (task in runTasks) { //僅在每次打正式包的時候是增加版本號,普通運行下無法自增長
properties['VERSION_CODE'] = (++versionCode).toString()
properties.store(versionFile.newWriter(), null)
}
return versionCode
} else {
throw new GradleException("Could not find version.properties!")
}
}
//獲取版本號,設置版本號自增
def getVersionName(){
def versionFile = file('version.properties')
if(versionFile.canRead()){ //判斷文件讀取異常
Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionFile))
def versionName = versionProps['VERSION_NAME'].toString() //讀取文件中的版本號
def runTasks = gradle.startParameter.taskNames
def task = ':app:assembleICBC_APPRelease' //此要注意 ***
if(task in runTasks){ //僅在每次打正式包的時候是增加版本號,普通運行下無法自增長
// 版本號自增之后再寫入文件(此處是關鍵,版本號自增+1)
versionProps['VERSION_NAME'] = ++versionName
versionProps.store(versionFile.newWriter(),null)
print('ICBC versionName : ' + versionName)
}
return versionName
}else{
throw new GradleException("Could not find version.properties!")
}
}
第四 變量task定義容易出錯
def task = ':app:assembleICBC_APPRelease'
在打包的時候能看到這個task的值

image.png
紅框的值就是task的值,一定要寫對,要不然versionCode和versionName無法自增
OK完畢,再次總結一下。
后記:VERSION_NAME = YOUR NAME (比如 1.1.0)設置成這種格式,不適合自增加,還需手動設置為好。