美文网首页项目
Android多渠道打包(Gradle和360加固宝)

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

作者: 迷失的小白 | 来源:发表于2017-03-25 17:16 被阅读2024次

一.场景

应用需要接入统计服务,了解应用在不同应用市场的表现时,分发到不同应用市场的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加固宝的配置信息中进行多渠道配置

如上图添加了三个渠道
选择友盟统计平台对应步骤(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 "";
}

相关文章

网友评论

  • 我一定会学会:我想问一下,我在android studio中已经设置多渠道了,但是我觉得太慢,所以想用360多渠道打包,那我是不是得我android studio的多渠道方式去掉
  • 86b2f432852f:我用360加固我的base包,然后发一个patch包没有加固的,热更新的时候发现更新不了,报一个这样的错误:java.security.SignatureException: error:0400008c:RSA routines:OPENSSL_internal:WRONG_SIGNATURE_LENGTH
    我的patch也需要加固吗?应该怎么加固?
  • 悠闲的拖鞋:你好,请问按照你的方式,友盟后台无法获得渠道号,是因为什么原因
  • D___Will:请问一下获取渠道信息进行验证这代码应该放在哪

本文标题:Android多渠道打包(Gradle和360加固宝)

本文链接:https://www.haomeiwen.com/subject/vbecottx.html