利用gradle新增構建版本號
阿新 • • 發佈:2019-01-31
在java的程式中,貌似都沒有這個構建版本號的概念,用的諸如eclipse, idea和android studio的IDE也沒有直接提供構建版本號的選項。不過我卻想在android程式的版本號當中新增一個構建版本號,當然,這個只是個人的蛋疼需求。雖然在stackoverflow上看到其他人也有這種需求,但相信人不多。
這裡分享一下我的解決方法。
首先在app的build.gradle中的android方法裡面,把defaultConfig的程式碼替換成以下程式碼:
def verName = "1.0.0" def suffix = "(RC)" defaultConfig { applicationId "cn.irains.access.v2" minSdkVersion 14 targetSdkVersion 20 versionCode 5 versionName verName + suffix } def versionPropsFile = file('version.properties') if (versionPropsFile.canRead()) { def Properties versionProps = new Properties() versionProps.load(new FileInputStream(versionPropsFile)) def name = versionProps['VERSION_NAME'].toInteger() def runTasks = gradle.startParameter.taskNames if ('b' in runTasks || 'build' in runTasks ) { name++ } versionProps['VERSION_NAME']=name.toString() versionProps.store(versionPropsFile.newWriter(), null) defaultConfig { versionName verName + "." + name + suffix } } android.applicationVariants.all { variant -> def file = variant.outputFile variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk")) }
上面的android.applicationVariant.all就是指定了新的apk的檔名。前面的一大堆程式碼都是構建版本號的邏輯。因為是構建版本號,所以先讀取任務,僅在任務為b(build的縮寫)或build的情況下,版本號才加一。
然後我們還需要在build.gradle的同級目錄下建立一個叫version.properties的檔案,用於儲存構建版本號。
完成之後,構建一下試試吧。