Android多渠道打包(Gradle和360加固寶)

一.場景

應(yīng)用需要接入統(tǒng)計服務(wù),了解應(yīng)用在不同應(yīng)用市場的表現(xiàn)時,分發(fā)到不同應(yīng)用市場的apk需要一個渠道名區(qū)分不同應(yīng)用市場。這時就需要打多個不同的包,每個包對應(yīng)一個渠道名, 即對應(yīng)一個應(yīng)用市場。

二.多渠道打包實踐(以友盟統(tǒng)計為例)

1.Gradle方式
(1)在AndroidManifest.xml清單文件中設(shè)置友盟統(tǒng)計的APPKEY和應(yīng)用推廣的渠道名稱。
<!--友盟統(tǒng)計APPKEY-->
<meta-data android:name="UMENG_APPKEY" android:value="58cba6" />
 <!--應(yīng)用推廣的渠道名稱-->
 <!--${UMENG_CHANNEL_VALUE}的值就是gradle中自定義配置的UMENG_CHANNEL_VALUE的值-->
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/>
(2)在項目Module的build.gradle文件的android標(biāo)簽下添加代碼,配置多個渠道。
//多渠道配
productFlavors {
   //設(shè)置百度應(yīng)用市場渠道名為baidu
    baidu {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu "]
    }
   //設(shè)置360應(yīng)用市場渠道名為360
    360 {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"]
    }
    //設(shè)置wandoujia 應(yīng)用市場渠道名為wandoujia 
    wandoujia {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia "]
    }
}
(3)簽名打包,這時就會生成對應(yīng)(2)中配置的三個渠道的三個apk文件。
(4)特殊需求:每個渠道包的圖標(biāo)和應(yīng)用名都不一樣。
a.在AndroidManifest.xml清單文件中設(shè)置包名和圖標(biāo)時如下
<application
  android:icon="${app_icon}"
  android:label="${app_name}">
b.步驟(2)中修改以下
productFlavors {
    baidu {
        //設(shè)置百度應(yīng)用市場渠道下渠道名為baidu   
        //應(yīng)用名@string/app_name_baidu
        //應(yīng)用名@string/app_name_baidu
        manifestPlaceholders = [app_name: "@string/app_name_baidu",
                                app_icon: "@string/app_name_baidu",
                                UMENG_CHANNEL_VALUE: "baidu"]
    }
    360{
        manifestPlaceholders = [app_name: "@string/app_name_360",
                                app_icon: "@mipmap/no2",
                                UMENG_CHANNEL_VALUE: "360"]
    }
    wandoujia{
        manifestPlaceholders = [app_name: "@string/app_name_wandoujia",
                                app_icon: "@mipmap/no3",
                                UMENG_CHANNEL_VALUE: "wandoujia"]
    }
}
2.使用360加固寶
(1)在AndroidManifest.xml清單文件中設(shè)置友盟統(tǒng)計的APPKEY和應(yīng)用推廣的渠道名稱。
<!--友盟統(tǒng)計APPKEY-->
<meta-data android:name="UMENG_APPKEY" android:value="58cba6c6e88bad3c540008d3" />
 <!--設(shè)置一個默認(rèn)的渠道名:service-->
<meta-data android:name="UMENG_CHANNEL" android:value="service"/>
(2)360加固寶的配置信息中進(jìn)行多渠道配置

如上圖添加了三個渠道
選擇友盟統(tǒng)計平臺對應(yīng)步驟(1)中設(shè)置渠道名中的name:UMENG_CHANNEL
填寫渠道編號對應(yīng)步驟(1)中設(shè)置渠道名中的value:wandoujia

(3)使用AndroidStudio打包一個apk,再用360加固寶對apk加固,這時就會產(chǎn)生3個加固后的apk。(都這里別和我說加固寶不會用)

三.獲取渠道信息

想要驗證渠道包的渠道名是不是相對應(yīng),這就需要獲取渠道信息進(jìn)行驗證,代碼如下。

//key為渠道名的key,對應(yīng)友盟的 UMENG_CHANNEL
private String getChannel(Context context,String key) {
    try {
        PackageManager pm = context.getPackageManager();
        ApplicationInfo appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
        return appInfo.metaData.getString(key);
    } catch (PackageManager.NameNotFoundException ignored) {
    }
    return "";
}
最后編輯于
?著作權(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)容