Android配置build.gradle編譯release包時以日期時間加序列號為Version Code且Version Code自動增長(二)
阿新 • • 發佈:2018-12-09
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