Gradle配置教程之自定義APK名稱與輸出路徑
前言
接觸Android Stuidio有一陣子了,之前用的時(shí)候有很多小問題,不過現(xiàn)在的版本感覺已經(jīng)很好用了,所以準(zhǔn)備徹底從Eclipse轉(zhuǎn)戰(zhàn)Android Stuidio,這段時(shí)間把以前經(jīng)常使用的公用庫都從Eclipse移植過來了,今天研究了一下在Android Studio下進(jìn)行打包簽名之類的操作,其實(shí)主要是研究Gradle了,以前沒有用過Gradle,但是早就耳聞Gradle是非常強(qiáng)大的構(gòu)建系統(tǒng),經(jīng)過一天的奮戰(zhàn),現(xiàn)在整理記錄下,以供大家參考和以后查閱。
需求
需求是這樣的,我們的項(xiàng)目在上線的時(shí)候需要根據(jù)公司的明明規(guī)則重新對apk文件命名后才能發(fā)布到市場上。于是生成的每個(gè)apk文件都需要重新命名,如果渠道較少還好說,但是如果多的話就麻煩了。
其實(shí)方法很簡單,只需要在你的app的Build.gradle文件中添加以下代碼就可以了。
android {
……//省略部分代碼
applicationVariants.all {
//判斷是release還是debug版本
def buildType = it.buildType.name
def fileName
//下面的channel是獲取渠道號,你獲取渠道號不一定會和我的代碼一樣,因?yàn)橛锌赡苣愕那烂Q的規(guī)則和我的不一樣,我的規(guī)則是${渠道名}-${applicationId},所以我是這樣取的。
def channel = it.productFlavors[0].name.split("-")[0]
//獲取當(dāng)前時(shí)間的"YYYY-MM-dd"格式。
def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
//只對Release包起作用,如果不是Release包則不變更輸出路徑,否則可能導(dǎo)致AS無法自動安裝debug包。
if (buildType == "release") {
it.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/apks/${it.productFlavors[0].applicationId}/${createTime}")
}
it.outputs.each {
//只對Release包起作用,如果不是Release包則不變更名稱。
if (buildType == "release") {
//我此處的命名規(guī)則是:渠道名_項(xiàng)目名_版本名_創(chuàng)建時(shí)間_構(gòu)建類型.apk
fileName = "${channel}_項(xiàng)目名稱_v${defaultConfig.versionName}_${createTime}-${buildType}.apk"
//將名字打印出來,以便及時(shí)查看是否滿意。
println "文件名:-----------------${fileName}"
//重新對apk命名。(適用于Gradle4.0以下版本)
//it.outputFile = new File(it.outputFile.parent, fileName)
//重新對apk命名。(適用于Gradle4.0(含)以上版本)如果你Gradle版本是4.0以下版本則將上面的一行代碼放開并注釋下面的這一行。
it.outputFileName = fileName
}
}
}
……//省略部分代碼
}
怎么樣?上面的代碼是不是很簡單,只需要把代碼拷貝到你的項(xiàng)目中然后響應(yīng)的地方改成你的就OK了。代碼相信大家都能看懂,都是Groovy代碼,如果不懂可以去百度一下,教程一堆。
補(bǔ)充一點(diǎn):
上面代碼中一句println fileName可能有的同學(xué)不知道在哪里查看,這個(gè)需要到Gradle Console中去查看。不知道在哪里的看下面的圖片:
如果你覺得文章內(nèi)容對你有幫助請幫忙頂一下,你的支持是對我最大的鼓勵(lì)。謝謝!??!

總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Android?縮放動畫?ScaleAnimation的使用小結(jié)
ScaleAnimation即縮放動畫,應(yīng)用場景特別多,比如常見的隱藏菜單點(diǎn)擊顯示,這篇文章主要介紹了Android?縮放動畫?ScaleAnimation的使用小結(jié),需要的朋友可以參考下2024-03-03
Android如何利用svg實(shí)現(xiàn)可縮放的地圖控件
這篇文章主要給大家介紹了關(guān)于Android如何利用svg實(shí)現(xiàn)可縮放的地圖控件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
Android組件DrawerLayout仿網(wǎng)易新聞v4.4側(cè)滑菜單
這篇文章主要為大家詳細(xì)介紹了Android組件DrawerLayout仿網(wǎng)易新聞v4.4側(cè)滑菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Android基于ViewPager實(shí)現(xiàn)類似微信頁面切換效果
這篇文章主要介紹了Android基于ViewPager實(shí)現(xiàn)類似微信頁面切換效果,通過Fragment適配器實(shí)現(xiàn)頁面切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android將應(yīng)用調(diào)試log信息保存在SD卡的方法
Android將應(yīng)用調(diào)試log信息保存在SD卡的方法大家都知道嗎,下面腳本之家小編給大家分享Android將應(yīng)用調(diào)試log信息保存在SD卡的方法,感興趣的朋友參考下2016-04-04
Android實(shí)戰(zhàn)之Cocos游戲容器搭建
這篇文章主要介紹了Android實(shí)戰(zhàn)之Cocos游戲容器搭建,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06
Android實(shí)戰(zhàn)打飛機(jī)游戲之子彈生成與碰撞以及爆炸效果(5)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)戰(zhàn)打飛機(jī)游戲之子彈生成與碰撞以及爆炸效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
Android取消EditText自動獲取默認(rèn)焦點(diǎn)
本文主要介紹了Android取消EditText自動獲取焦點(diǎn)默認(rèn)行為的方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
當(dāng)ListView有Header時(shí) onItemClick里的position不正確的原因
這篇文章主要介紹了當(dāng)ListView有Header時(shí) onItemClick里的position不正確的原因的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07

