用gradle多渠道打包一般在build.gradle文件里面,productFlavors 標簽下添加自己的渠道名雀瓢,像下面這樣
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圖標和里面一些界面的圖片和文字會不一樣,按照上面的方法雖然也可以但會造成打包時會多余出無用的圖片和增加一些垃圾代碼刃麸。后來查了下醒叁,在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>
當然在main下面的所有文件可以替換或者合并捆愁。。窟却。