? ? ?? 今天先來無事講講gradle的多渠道打包,首先我們新建立一個項目里面有g(shù)radle的基本配置如下圖

??????? 現(xiàn)在如果有兩個渠道兩個渠道的包名不同,那我們不必每次去改動包名后再打包。這樣就可以分渠道打包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里面的配子,并且調(diào)試的時候可以在build variants里面運行需要調(diào)試的渠道;

??????? 以上只是簡單的那么 加入現(xiàn)在有一個需求不同渠道使用的很多資源不同, 比如不同渠道的app啟動畫面的圖片不一樣怎么辦呢?這個時候我們就需要建立一個與main同級的目錄文件名要與渠道名稱相同,這里打包是會替換main同級目錄下的相同命名資源


??????? 這樣打包的時候啟動圖片yd_pic01.png會自動替換main里面的默認圖片,沒一個包的啟動圖片就是不同的圖片,同樣不僅僅的drawable,也可以建立res文件里面同目錄同名稱的文件字段都會替換,包塊app的名稱也可以在res下面建立values文件夾 再建立string里面app名稱字段都可以替換如圖:

? 當(dāng)我們不同的渠道可以自定義變量,比如不同渠道訪問接口地址不同可以每一個渠道號里面配子:

在java代碼里面使用如下:

這樣不同的渠道獲得的url就不一樣。如果mainfaset某些渠道使用的字段不一樣,比如地圖api key,不同渠道包名不同 那么地圖api key就不一樣,我們就可以使用占位符,在渠道里面寫manifestPlaceholders如圖

manifest配置如下

其中 CHANNEL_VALUE 為占位符名稱可以隨意,這樣不同的渠道使用了不同的地圖api key了。
最后一點, 如果我們不同的渠道加載不同的包怎么辦呢?那么我們在dependencies里面這樣配置去掉
compile fileTree(include: ['*.jar'],dir:'libs')這個加載所有的包改為一個個導(dǎo)入包。摸個渠道特有的包就渠道名稱+Compile files('libs/包名')如下圖:

到此多渠道打包就差不多這么多內(nèi)容了。