Android 渠道包(多渠道打包)
阿新 • • 發佈:2019-02-06
某日,突然有個需求,要打多渠道包(沒辦法~~坑逼的國內環境~)
之後就在網上找了找,自己總結了一下,以免以後踩坑~~
首先 在AndroidManifest.xml 裡面新增如下程式碼:
<meta-data
android:name="CHANNEL"
android:value="${CHANNEL_VALUE}" />
網上很多都是 name =“UMENG_CHANNEL” 這是為了友盟的統計,如果需求沒有就不用按照友盟的命名方式啦~~~
然後是build.gradle 檔案下
productFlavors {
anzhimarket {
manifestPlaceholders = [CHANNEL_VALUE: "anzhimarket_1" ]
}
shoujizhushou91 {
manifestPlaceholders = [CHANNEL_VALUE: "shoujizhushou91_2"]
}
jifengmarket {
manifestPlaceholders = [CHANNEL_VALUE: "jifengmarket_3"]
}
wandoujia {
manifestPlaceholders = [CHANNEL_VALUE: "wandoujia_4" ]
}
shoujizhushou360 {
manifestPlaceholders = [CHANNEL_VALUE: "shoujizhushou360_5"]
}
baidu {
manifestPlaceholders = [CHANNEL_VALUE: "baidu_6"]
}
andriodmarker {
manifestPlaceholders = [CHANNEL_VALUE: "andriodmarker_7" ]
}
tencent {
manifestPlaceholders = [CHANNEL_VALUE: "tencent_8"]
}
yingyonghui {
manifestPlaceholders = [CHANNEL_VALUE: "yingyonghui_9"]
}
xiaomi {
manifestPlaceholders = [CHANNEL_VALUE: "xiaomi_10"]
}
}
※※※ 注意: CHANNEL_VALUE: “xiaomi_10” 這裡的 值 必須是 字母開頭 不能單獨是數字或數字開頭,否則 會出現取值時 出現 null的情況!!!! ※※※
在java程式碼裡 可以通過下面方法取到 CHANNEL_VALUE 的值
this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA).metaData.getString("CHANNEL");
就是這樣~~
有人可能會問 這樣有什麼用呢~~
比如說 專案中有個要評分的需求,那有那麼多市場到底去哪個市場評分?最好的方式當然是在哪個市場下載的就去那個市場評分。這樣今天寫的這種多渠道打包就可以用到了(這裡比較是天朝沒有Google市場)