新版友盟+360 加固打多渠道包

1,676 阅读3分钟

新版的友盟不需要再去配置多渠道了,文档也更简单了.友盟文档,对着文档引入就可以了.大体步骤如下:

  • 1.在友盟新建应用,获取AppKey
    1. 集成 sdk,推荐自动集成

maven依赖配置

在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】sdk 新maven仓库地址。如下图。

代码:

复制代码到剪切板

  1. maven { url 'https://dl.bintray.com/umsdk/release' }

maven1

maven2

在工程App 对应build.gradle配置脚本dependencies段中添加基础组件库和统计SDK库依赖:

代码:

复制代码到剪切板

  1. compile 'com.umeng.umsdk:analytics:8.0.0'
  2. compile 'com.umeng.umsdk:common:2.0.0'

maven3

在Android Studio 3.1及以上版本开发环境下,指定引用最新版本依赖写法”latest.integration”可能导致下载库超时,此时需要指定具体版本号。

    1. 集成配置,主要是一些权限和混淆
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
-keep class com.umeng.** {*;}
-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
    1. 选择想要集成的功能, 可以自选,下面主要集成渠道和统计功能
  //加入渠道名称,上传给友盟,在 Application 里初始化
        UMConfigure.init(this, "友盟 AppKey",
            Utils.getUMChannelName(this), UMConfigure.DEVICE_TYPE_PHONE, "")
        UMConfigure.setLogEnabled(true)

获取渠道的方法,和渠道有关,方法如下:

  /**
     * 获取渠道名
     *
     * @param ctx 此处习惯性的设置为activity,实际上context就可以
     * @return 如果没有获取成功,那么返回值为空
     */
    public static String getUMChannelName(Context ctx) {
        if (ctx == null) {
            return null;
        }
        String channelName = null;
        try {
            PackageManager packageManager = ctx.getPackageManager();
            if (packageManager != null) {
                //注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfo
                ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
                if (applicationInfo != null) {
                    if (applicationInfo.metaData != null) {
                        channelName = applicationInfo.metaData.getString("UMENG_CHANNEL");
                    }
                }
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return channelName;
    }
  • 5.在App中每个Activity的onResume方法中调用 MobclickAgent.onResume(context),onPause方法中调用 MobclickAgent.onPause(context)。
@Override
public void onResume() {
    super.onResume();
    MobclickAgent.onResume(this);
}
@Override
public void onPause() {
    super.onPause();
    MobclickAgent.onPause(this);
}
注意:

确保在所有的Activity中都调用 MobclickAgent.onResume和onPause方法(如果是在AUTO页面采集模式下,则需要注意,所有Activity中都不能调用MobclickAgent.onResume和onPause方法,详见后续页面采集章节),这两个调用不会阻塞应用程序的主线程,也不会影响应用程序的性能。

注意:如果您的Activity之间有继承或者控制关系,请不要同时在父和子Activity中重复添加nPause和nResume方法,否则会造成重复统计,导致启动次数异常增高。(例如:使用TabHost、TabActivity、ActivityGroup时)。

当应用在后台运行超过30秒(默认)再回到前台,将被认为是两次独立的Session(启动),例如:用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。即被认为是两个独立的Session。
  • 6.加固 配置签名
    image.png
    配置多渠道,需要哪些配置哪些,统计平台这里选择友盟,渠道编号自定义
    image.png
    在设置中设置好输入路径,在应用加固中上传文件,就可以完成加固,最终会得到一个没有渠道的包和其他渠道的包.所有的包都需要重新签名才可以安装.在工具包中签名 APK,就完成了打多渠道包和加固,可以一次选择一个或者多个 apk 文件签名。渠道打包这一项,设置好多渠道,可以直接选择渠道打包,打出来的所有包再签名一次就可以了。
    image.png
    最好对着友盟文档来配置,这样不容易出错. demo