android studio 多渠道打包 gradle 詳解

? ? ?? 今天先來無事講講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同級目錄下的相同命名資源


圖1


圖2

??????? 這樣打包的時候啟動圖片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)容了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容