1. 程式人生 > >Android 渠道包(多渠道打包)

Android 渠道包(多渠道打包)

某日,突然有個需求,要打多渠道包(沒辦法~~坑逼的國內環境~)

之後就在網上找了找,自己總結了一下,以免以後踩坑~~

首先 在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市場