APP在每次編寫完成時 , 要上傳 Google Play 都必須變更 VersionCode 才能讓使用者按照 VersionCode 比對更新 , 更新原則與限制如下
- VersionCode 號碼需要比上次的 VersionCode 號碼還要大
- VersionCode 最高極限為 2100000000 , 總共10碼
所以按照以上兩點原則來看 , 想讓系統自動處理 , 又想加上日期當作區隔 , 就需要作一點手腳
最後我想要的格式如右 年+月+日+版本號碼
年 = 使用民國年 , 又考慮到辨識問題 , 所以保留三碼民國年號碼 ex.108 , 這邊有個限制是萬一一天編譯超過100次(含)又剛好超過民國210年號碼就會爆掉 , 但這問題還要等30年 , 以我的年紀來說 , 我暫時還不想理會這問題 (就算超過 , 到時候取民國年後兩碼也可以 , 但目前因為已好辨識為原則 , 所以還是取3碼民國年)
月 , 日 = 使用各兩碼 , 不足補0 , 所以變成 0515 這樣
版本號碼 = 每編譯程式一次就+1 , 從1開始 , 最高 999 , 因為最高極限為10碼 , 這邊一天只能編譯不能超過 999 次 , 超過 Google Play 就不允許啦 , 但這個機會很少 , 所以乾脆不考慮這問題 , 另外這邊還需判斷前面的年月日是否相同 , 若相同才會繼續家 , 不同就會從1開始
- 在app目錄底下新增一個名為 version.properties 的檔案 , 內容如下
VERSION_DATE=1080515 VERSION_CODE=1
VERSION_DATE = 這邊紀錄上次的編譯時間
VERSION_CODE = 這邊紀錄上次的編譯次數(版本號碼)
- 參考以下內容編輯 gradle
android { compileSdkVersion 26 buildToolsVersion '28.0.3' defaultConfig { applicationId "tw.com.songbor.temple" minSdkVersion 18 targetSdkVersion 26 //抓取今天日期並寫換算成民國年 def today_date = Integer.parseInt(new Date().format("yyyyMMdd"))-19110000 //抓取版本紀錄檔案 def versionPropsFile = file('version.properties') Properties versionProps = new Properties() //讀取版本紀錄檔案 if (versionPropsFile.canRead()) { versionProps.load(new FileInputStream(versionPropsFile)) } //初始話版本號碼 def code //取得版本紀錄檔案-上次日期 def last_date = Integer.parseInt(versionProps['VERSION_DATE']) //如果 上次日期 = 今天日期 if(last_date == today_date){ //回填號碼 = 版本號碼+1 code = versionProps['VERSION_CODE'].toInteger()+1 } else { //版本號碼=1 code = 1 } //準備回填資料 , 判斷版本號碼不足3碼時自動補0 if(code.toString().length() != 3){ if(code.toString().length() == 1){ versionProps['VERSION_CODE']="00"+code.toString() } else { versionProps['VERSION_CODE']="0"+code.toString() } } versionProps['VERSION_DATE']=today_date.toString() //回寫資料到版本紀錄檔案 versionProps.store(versionPropsFile.newWriter(), null) // versionCode = 今天日期 + 版本號碼 versionCode Integer.parseInt(today_date.toString()+versionProps['VERSION_CODE']) versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }