一.先上鏈接
http://blog.csdn.net/tiankong1206/article/details/50444232
對(duì)productFlavors的各種用法介紹的蠻詳細(xì)
http://blog.csdn.net/angusing/article/details/47721765
對(duì)productFlavors這些是干啥用的還不清楚的可以看看這個(gè)
http://blog.csdn.net/tiankong1206/article/details/50436007
http://www.reibang.com/p/81eff804d1b8
這兩個(gè)都是介紹利用productFlavors替換baseurl的
http://www.cnblogs.com/qianxudetianxia/p/4948499.html
http://www.csdn.net/article/2015-08-10/2825420/2
這兩個(gè)介紹的各種用法比較偏
http://tech.meituan.com/mt-apk-adaptation.html
這是美團(tuán)的渠道管理適配的一些例子,相當(dāng)有用
二.理解圖示
這個(gè)圖示不看也罷...
三.上代碼
1.替換不同版本的資源
a.創(chuàng)建統(tǒng)一文件夾
首先創(chuàng)建需要的版本
//設(shè)置不同的版本
productFlavors {
//debug版本,調(diào)試用
db {
}
}
在src下main的同級(jí)目錄創(chuàng)建版本文件夾,此處注意:文件夾名字就是在gradle里定義的版本名字!
接下來(lái)就看你想替換什么資源了,例如想要不同版本顯示不同應(yīng)用名稱,可以在版本文件夾下創(chuàng)建res/values/string.xml,里面換個(gè)不同的名字就可以.想要更換不同的圖片,例如想要每個(gè)版本有各自的icon,在drawable里復(fù)制不同的icon就可以,但必須資源名字一致.
原理:在productFlavors多版本的情況下,編譯打包會(huì)首先檢查你想要編譯的版本下的資源文件,如果沒(méi)有才會(huì)使用main目錄下的.
另外,我也嘗試過(guò)復(fù)制java文件到各版本的文件夾下,但是沒(méi)有效果.根據(jù)上面的鏈接里介紹說(shuō),編譯時(shí)是先查看main下的java文件再查看版本下的Java文件.下次再實(shí)驗(yàn)下...
b.替換mainfest字段
如果僅僅想要改變版本應(yīng)用名稱,這里有種更簡(jiǎn)單的方法.本方法適用于更改mainfest里的一切字段,多渠道打包的原理也是這個(gè).
原理:在mainfest里按照一定格式自定義個(gè)可變的字段,在gradle里根據(jù)不同版本賦予不同的值.
注意:自定義mainfest字段的格式為:${YOUR_NAME};例如${APP_NAME}
2.替換已有的字段
gradle在編譯之后會(huì)生成一個(gè)buildConfirg的配置文件,它默認(rèn)給我們定義了一些字段,例如;
applicationId,versionCode,versionName這些
所以我們可以直接在我們的gradle版本里根據(jù)不同版本設(shè)置不同的應(yīng)用標(biāo)識(shí)和版本號(hào)這些
3.替換自定義字段
gradle默認(rèn)的字段畢竟只有幾個(gè),有時(shí)我們會(huì)想要自定義個(gè)字段.以下以多版本不同url為例:
按照?qǐng)D中格式,APP_URL是字段名,可以隨意,后面是不同版本對(duì)應(yīng)的根url
在代碼中引用就可以了
另外,鏈接中也有通過(guò)創(chuàng)建文件夾這種方法實(shí)現(xiàn)不同根url的.
4.選擇版本
差點(diǎn)忘了,在平時(shí)調(diào)試時(shí)如何選擇想要的版本:
最后,up新手,寫的疏漏,忘多包涵.因?yàn)橛玫牟皇呛苌?所以暫時(shí)就了解到這了.推薦大家有空的話找找gradle的官方文檔來(lái)讀!