gradle多渠道打包替換圖片、xml等資源文件

用gradle多渠道打包一般在build.gradle文件里面,productFlavors 標(biāo)簽下添加自己的渠道名,像下面這樣

android {
   productFlavors {
     "xiaomi"{
       manifestPlaceholders = [channelName: "xiaomi"]
     }
     "360market"{
       manifestPlaceholders = [channelName: "360market"]
     }
     "baidu"{
       manifestPlaceholders = [channelName: "baidu"]
     }
     "wandoujia"{
       manifestPlaceholders = [channelName: "wandoujia"]
     }
   }
 }

或者

android {
 productFlavors {
   "xiaomi"{}
   "360market"{}
   "baidu"{}
   "wandoujia"{}
 }
 productFlavors.all {
   flavor -> flavor.manifestPlaceholders = [channelName: name]
 }
}

gradle就會自動幫我們替換AndroidManifest.xml文件里面的${channelName}

<meta-data android:name="channel" android:value="${channelName}"/>

但最近有個需求,每個渠道的app圖標(biāo)和里面一些界面的圖片和文字會不一樣,按照上面的方法雖然也可以但會造成打包時會多余出無用的圖片和增加一些垃圾代碼。后來查了下,在main的同級目錄下創(chuàng)建以渠道名命名的文件夾,然后在文件夾里面創(chuàng)建資源文件(資源文件在文件夾里面的路徑要和原資源文件在main文件夾里面的路徑要一致),然后資源文件就會自動替換或者合并。
比如在原資源文件目錄main\res\mipmap-hdpi\ic_launcher.png,那xiaomi渠道要在xiaomi\res\mipmap-hdpi\ic_launcher.png放進資源文件,打包小米渠道的時候會自動替換圖片。
還有合并的情況,比如在main下面Strings.xml文件內(nèi)容是

<string name="loading">加載中…</string>
<string name="loading_no_more">已加載全部</string>

xiaomi下面Strings.xml文件內(nèi)容是

<string name="loading">正在加載中,不要著急嗎客官…</string>

打包xiaomi渠道會變成

<string name="loading">正在加載中,不要著急嗎客官…</string>
<string name="loading_no_more">已加載全部</string>

當(dāng)然在main下面的所有文件可以替換或者合并。。。

最后編輯于
?著作權(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)容