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

一.场景

应用需要接入统计服务,了解应用在不同应用市场的表现时,分发到不同应用市场的apk需要一个渠道名区分不同应用市场。这时就需要打多个不同的包,每个包对应一个渠道名, 即对应一个应用市场。

二.多渠道打包实践(以友盟统计为例)

1.Gradle方式
(1)在AndroidManifest.xml清单文件中设置友盟统计的APPKEY和应用推广的渠道名称。
<!--友盟统计APPKEY-->
<meta-data android:name="UMENG_APPKEY" android:value="58cba6" />
 <!--应用推广的渠道名称-->
 <!--${UMENG_CHANNEL_VALUE}的值就是gradle中自定义配置的UMENG_CHANNEL_VALUE的值-->
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/>
(2)在项目Module的build.gradle文件的android标签下添加代码,配置多个渠道。
//多渠道配
productFlavors {
   //设置百度应用市场渠道名为baidu
    baidu {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu "]
    }
   //设置360应用市场渠道名为360
    360 {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"]
    }
    //设置wandoujia 应用市场渠道名为wandoujia 
    wandoujia {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia "]
    }
}
(3)签名打包,这时就会生成对应(2)中配置的三个渠道的三个apk文件。
(4)特殊需求:每个渠道包的图标和应用名都不一样。
a.在AndroidManifest.xml清单文件中设置包名和图标时如下
<application
  android:icon="${app_icon}"
  android:label="${app_name}">
b.步骤(2)中修改以下
productFlavors {
    baidu {
        //设置百度应用市场渠道下渠道名为baidu   
        //应用名@string/app_name_baidu
        //应用名@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清单文件中设置友盟统计的APPKEY和应用推广的渠道名称。
<!--友盟统计APPKEY-->
<meta-data android:name="UMENG_APPKEY" android:value="58cba6c6e88bad3c540008d3" />
 <!--设置一个默认的渠道名:service-->
<meta-data android:name="UMENG_CHANNEL" android:value="service"/>
(2)360加固宝的配置信息中进行多渠道配置

《Android多渠道打包(Gradle和360加固宝)》

如上图添加了三个渠道
选择友盟统计平台对应步骤(1)中设置渠道名中的name:UMENG_CHANNEL
填写渠道编号对应步骤(1)中设置渠道名中的value:wandoujia

(3)使用AndroidStudio打包一个apk,再用360加固宝对apk加固,这时就会产生3个加固后的apk。(都这里别和我说加固宝不会用)

三.获取渠道信息

想要验证渠道包的渠道名是不是相对应,这就需要获取渠道信息进行验证,代码如下。

//key为渠道名的key,对应友盟的 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 "";
}
    原文作者:迷失的小白
    原文地址: https://www.jianshu.com/p/8baf9f0b0cb5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞