這篇文章給大家分享的是有關(guān)android studio如何打包自動生成版本號與日期的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),江岸企業(yè)網(wǎng)站建設(shè),江岸品牌網(wǎng)站建設(shè),網(wǎng)站定制,江岸網(wǎng)站建設(shè)報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,江岸網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,由美國Google公司和開放手機聯(lián)盟領(lǐng)導及開發(fā)。
一. 打開項目選擇如圖示1 (build.gradle 項目位置)
二. 1. build.gradle 文件添加內(nèi)容如下。gradle是【com.android.tools.build:gradle:3.0.0 以下版本】
android{ defaultConfig {...} 自動追加版本號和版本名稱 android.applicationVariants.all { variant->variant.outputs.each { output-> output.outputFile = new File(output.outputFile.parent,"app_device_v"+defaultConfig.versionName+"_"+new Date().format("yyyy-MM-dd")+"_"+buildType.name+".apk") } } }
output.outputFile.parent 可以指定輸出到指定文件夾
2. build.gradle 文件添加內(nèi)容如下。 gradle是【com.android.tools.build:gradle:3.0.0及其以上版本】
android{ defaultConfig {...} //release版本輸出包名自動追加版本號和版本名稱 applicationVariants.all { variant -> variant.outputs.all { //只處理生產(chǎn)版本 if (buildType.name == 'release') { def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00")) // app包名稱 outputFileName = "app_v" + defaultConfig.versionName + "_" + createTime + "_" + buildType.name + ".apk" ////指定release輸出到指定文件夾 variant.getPackageApplication().outputDirectory = new File(config.appReleaseDir + "/${createTime}") } } } }
三. 打包查看結(jié)果:圖示3(直接點擊assembleRelease即可)
補充知識:Android編譯gradle 動態(tài)修改版本號
在構(gòu)建代碼的時候不想每次都修改版本號,需能夠增加一個功能在特定的條件下動態(tài)的修改版本號
在manifest里面加入占位符號
修改build.gradle
import com.google.gson.Gson class Version { int versionCode String versionName } def versionJsonFile = file('./version.json')//這個文件最好放一個所有項目人員都能夠訪問的地方 def versionJsonObject = new Gson().fromJson(versionJsonFile.text, Version.class) android.applicationVariants.all { variant -> println("variants name : " + variant.name) //只有滿足特定條件的情況下才會版本自增一,這個可以看看各個項目的特定配置 if (variant.name.toLowerCase().contains("ceshirelease") ) { println("variants name : versionCode " + versionJsonObject.versionCode + "versionname: " + versionJsonObject.versionName) versionJsonObject.versionCode = versionJsonObject.versionCode + 1 int lastIndexPoint = versionJsonObject.versionName.lastIndexOf(".") String newStr = versionJsonObject.versionName.substring(0, lastIndexPoint) println("newStr" + newStr) versionJsonObject.versionName = newStr + "." + versionJsonObject.versionCode println("versonJsonStr.versionName " + versionJsonObject.versionName) } //這句是核心,可以調(diào)整版本號和版本明,修改了這個會影響到BuildConfig.class里面的屬性 variant.mergedFlavor.versionCode = versionJsonObject.versionCode variant.mergedFlavor.versionName = versionJsonObject.versionName //如果沒有加下面這句,當應用安裝后會出現(xiàn)應用信息沒有版本號的問題,這個必須有 variant.mergedFlavor.manifestPlaceholders.put("versioncode", versionJsonObject.versionCode) variant.mergedFlavor.manifestPlaceholders.put("versionname", versionJsonObject.versionName) } //為了記住最新的版本號,是需要進行文件的回寫的,什么時候回寫會好一點 //個人認為只有當打包apk的動作執(zhí)行成功后 回寫文件記錄的版本號最優(yōu) afterEvaluate { project -> gradle.taskGraph.afterTask { task, taskState -> //這里如果assembleceshirelease 就具體的打包的變種項目,各個應用肯定不一樣,需要調(diào)整下 if (task.name.toLowerCase().contains("assembleceshirelease") && taskState.getFailure() == null) { println("try assemble ceshi release" ) //回寫文件操作 versionJsonFile.withPrintWriter { out -> out.println(new Gson().toJson(versionJsonObject)) } } } }
給apk重新命名也是同樣的道理
variant.getOutputs().all { File file = it.outputFile; println(" file property file.canRead() " + file.canRead() + " file.canWrite " + file.canWrite()) String pathString = file.getPath(); println(" path String : " + pathString + " File.pathSeparator: " + File.separator) //指定最終輸出的文件的目錄和名字 pathString = file.getParent() + File.separator + "test.apk"; println(" path pathString : " + pathString) file.renameTo(pathString) }
感謝各位的閱讀!關(guān)于“android studio如何打包自動生成版本號與日期”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!