? ? ?? 今天先來無事講講gradle的多渠道打包棵红,首先我們新建立一個項目里面有gradle的基本配置如下圖
??????? 現在如果有兩個渠道兩個渠道的包名不同,那我們不必每次去改動包名后再打包腔稀。這樣就可以分渠道打包gradle提供productFlavors來分渠道打包层释,每個渠道改一下包名如圖配置
????????? _H99和_H100是渠道號可以任意改寫握联,這樣我們就可以打兩個渠道的包了他們的包名一個是com.example.administrator.myapplication1另一個是com.example.administrator.myapplication2如下圖
?????? 此時我們就可以批量分渠道打包苔严,同時可以一次性打n個包這里演示兩個。如果我們要批量修改打出來apk的名稱看起來更加規(guī)范可以在buildTypes里面這樣配置蟀瞧。這里一華融證券開戶為例沉颂。
??? 打出來的包看起來就比較整齊也不用一個個改
? ? ? 同樣我們可以在我們的渠道名方法_H199 {}和_H100 {}里面去修改其他的配子包括minSdkVersion15条摸,targetSdkVersion25,versionCode1铸屉,versionName"1.0" 等等钉蒲,可以讓不同的渠道用不同的sdk以及版本號海報闊自定義字段(稍后講解),在打包的時候渠道的配子會自動替換defaultConfig里面的配子彻坛,并且調試的時候可以在build variants里面運行需要調試的渠道顷啼;
??????? 以上只是簡單的那么 加入現在有一個需求不同渠道使用的很多資源不同, 比如不同渠道的app啟動畫面的圖片不一樣怎么辦呢昌屉?這個時候我們就需要建立一個與main同級的目錄文件名要與渠道名稱相同钙蒙,這里打包是會替換main同級目錄下的相同命名資源
??????? 這樣打包的時候啟動圖片yd_pic01.png會自動替換main里面的默認圖片,沒一個包的啟動圖片就是不同的圖片怠益,同樣不僅僅的drawable仪搔,也可以建立res文件里面同目錄同名稱的文件字段都會替換,包塊app的名稱也可以在res下面建立values文件夾 再建立string里面app名稱字段都可以替換如圖:
? 當我們不同的渠道可以自定義變量蜻牢,比如不同渠道訪問接口地址不同可以每一個渠道號里面配子:
在java代碼里面使用如下:
這樣不同的渠道獲得的url就不一樣。如果mainfaset某些渠道使用的字段不一樣偏陪,比如地圖api key抢呆,不同渠道包名不同 那么地圖api key就不一樣,我們就可以使用占位符笛谦,在渠道里面寫manifestPlaceholders如圖
manifest配置如下
其中 CHANNEL_VALUE 為占位符名稱可以隨意抱虐,這樣不同的渠道使用了不同的地圖api key了。
最后一點饥脑, 如果我們不同的渠道加載不同的包怎么辦呢恳邀?那么我們在dependencies里面這樣配置去掉
compile fileTree(include: ['*.jar'],dir:'libs')這個加載所有的包改為一個個導入包。摸個渠道特有的包就渠道名稱+Compile files('libs/包名')如下圖:
到此多渠道打包就差不多這么多內容了灶轰。