集成流程

引入SDK

maven自动集成(推荐)

通过在Android Studio工程build.gradle配置脚本中添加maven线上依赖,导入最新版本组件化统计SDK。

maven依赖配置

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

maven { url 'https://repo1.maven.org/maven2/' }
buildscript { repositories { google() jcenter() maven { url 'https://repo1.maven.org/maven2/' } } dependencies { classpath 'com.android.tools.build:gradle:3.4.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() maven { url 'https://repo1.maven.org/maven2/' } } }

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

dependencies { implementation fileTree(include:['*.jar'], dir:'libs') // 下面各SDK根据宿主App是否使用相关业务按需引入。 // 友盟统计SDK implementation 'com.umeng.umsdk:common:+'//必选 implementation 'com.umeng.umsdk:asms:+'//必选 implementation 'com.umeng.umsdk:uyumao:+' //高级运营分析功能依赖库(可选)。使用卸载分析、开启反作弊能力请务必集成,以免影响高级功能使用。common需搭配v9.6.3及以上版本,asms需搭配v1.7.0及以上版本。需更新隐私声明。需配置混淆,以避免依赖库无法生效,见本文下方【混淆设置】部分。 implementation 'com.umeng.umsdk:abtest:+'//使用U-App中ABTest能力(可选)
说明

「高级运营分析功能依赖库」需采集设备的应用列表、网络和地理位置相关信息,须在隐私声明中添加相关话术,可参考Android采集详情

更改默认配置项请见UYMManager类采集配置

重要

集成「高级运营分析功能依赖库」后需配置混淆,以避免【友盟+】SDK被错误混淆导致SDK不可用,依赖库无法生效。见本文下方【混淆设置】部分。

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

说明

注意:OAID目前为目前国内市场主流的Android Q设备标识。目前主流厂商(华为、oppo、vivo、联想、小米)均已在新版本系统中支持该标识的获取,具有权威性。 SDK 9.3.6版本中移除了稳定性模块(错误捕获),如需,请集成应用性能监控SDK。集成文档为:https://developer.umeng.com/docs/193624/detail/194590 SDK 9.3.6版本中移除了分析裂变能力,如需,请集成智能超链SDK。集成文档为:https://developer.umeng.com/docs/191212/detail/191230

手动集成

访问【友盟+】官网组件化SDK下载地址,选择Android平台下载页面,选择对应业务SDK进行下载。

将下载的SDK zip包解压缩,得到如下文件:

  • umeng-common-9.6.7.jar // 统计SDK(必选)

  • umeng-asms-vx.x.x.aar // 重要组件(必选),如不集成会在初始化时输出e级别的LOG提示和Toast提示

  • uyumao-x.x.x.aar //重要组件(可选),高级运营分析功能依赖库。使用卸载分析、反作弊能力请务必集成,以免影响高级功能使用。common需搭配v9.6.3及以上版本,asms需搭配v1.7.0及以上版本。需更新隐私声明。需配置混淆,以避免依赖库无法生效,见本文下方【混淆设置】部分。

  • umeng-abtest-vx.x.x.aar //U-App中ABTest模块依赖组件

说明

「高级运营分析功能依赖库」需采集设备的应用列表、网络和地理位置相关信息,须在隐私声明中添加相关话术,可参考Android采集详情

更改默认配置项请见UYMManager类采集配置

重要

集成「高级运营分析功能依赖库」后需配置混淆,以避免【友盟+】SDK被错误混淆导致SDK不可用,依赖库无法生效。见本文下方【混淆设置】部分。

Android Studio集成 (推荐)

  • 选择SDK功能组件并下载,解压.zip文件得到相应组件包(umeng-common-9.x.x.jar),在Android Studio的项目工程libs目录中拷入相关组件jar包,右键Android Studio的项目工程 —> 选择Open Module Settings —> 在 Project Structure弹出框中 —> 选择 Dependencies选项卡 —> 点击左下“+” —> 选择组件包类型 —> 引入相应的包。

  • umeng-asms SDK从v1.8.4版本开始,不再支持armeabi架构,仅保留armeabi-v7a、arm64-v8a、x86三种CPU架构。(注意:从v1.8.4版本开始,友盟官网下载的asms离线包和maven中心库在线依赖包都是包含全部三种

    CPU架构so文件)。在项目工程的libs目录中拷入umeng-asms-vx.x.x.aar组件和umeng-apm-armeabi-vx.x.x.aar组件,在app的build.gradle文件中引入相应的组件包。参考示例如下:

repositories{ flatDir{ dirs 'libs' } } dependencies { implementation fileTree(include:['*.jar'], dir:'libs') implementation (name:'umeng-asms-vx.x.x', ext:'aar') implementation (name:'umeng-uyumao-1.1.2', ext:'aar') implementation (name:'umeng-abtest-vx.x.x', ext:'aar') }
  • 如果您的项目工程需要适配armeabi 以外的平台,如:armeabi-v7、x86等,则需要下载umeng-apm-vx.x.x库,在Android Studio的项目工程libs目录中拷入所有组件jar包,右键Android Studio的项目工程 —> 选择Open Module Settings —> 在 Project Structure弹出框中 —> 选择 Dependencies选项卡 —> 点击左下“+” —> 选择组件包类型 —> 引入相应的包。然后根据您项目工程对应的平台分别考入对应的.so。

    umeng-apm-vx.x.x库文件下载链接:https://developer.umeng.com/docs/119267/detail/191190

常见问题:so库加载失败、couldn’t find “libumeng-spy.so” 、couldn’t find “libcrashsdk.so”该如何解决?查看解决方案

Eclipse集成

  • 选择SDK功能组件并下载,解压.zip文件得到相应组件包(例如:umeng-common-9.x.x.jar等)。

  • 在Eclipse中右键工程根目录,选择Properties —> Java Build Path —> Libraries,然后点击Add External JARs… 选择指向jar的路径,点击OK,即导入成功。(ADT17及以上不需要手动导入)。

Android Q OAID库接入说明

SDK 9.2.4及以上版本自带oaid采集模块,不再需要开发者再手动引用OAID库!!!

友盟+自带oaid模块和三方oaid库不会发生包名冲突,开发者可同时集成两者。开发者可以通过如下api获得oaid:

UMConfigure.getOaid(mContext,new OnGetOaidListener();

样例代码:

import com.umeng.commonsdk.listener.OnGetOaidListener; UMConfigure.getOaid(mContext,new OnGetOaidListener() { @Override public void onGetOaid(String oaid) { android.util.Log.i("mob", "oaid"+oaid); }});

UTDID接入说明

UTDID:

  • utdid4all-x.x.x.x_proguard.jar 是阿里UTDID服务的补充包,可以自行选择是否集成。

接入方法:

  • 解压从【友盟+】组件化SDK下载页下载的.zip文件把解压缩后得到的目录下的thirdparties目录里的utdid4all-.*这个jar文件拷贝到项目工程的libs目录。若编译时报ta.utdid2.xx或ut.device.xx等冲突异常,请将项目工程的libs目录中的utdid4all-.*这个jar文件删除,重新编译即可。

配置SDK

权限授予

统计SDK需要宿主APP授予如下权限:

权限

用途

ACCESS_NETWORK_STATE

检测联网方式,在网络异常状态下避免数据发送,节省流量和电量。

READ_PHONE_STATE

获取用户设备的IMEI,通过IMEI对用户进行唯一标识,以便提供统计分析服务。

ACCESS_WIFI_STATE

获取WIFI mac地址,在平板设备或电视盒子上,无法通过IMEI标识设备,我们会将WIFI mac地址作为用户的唯一标识,以便正常提供统计分析服务。

INTERNET

允许应用程序联网和发送统计数据的权限,以便提供统计分析服务。

ACCESS_FINE_LOCATION(可选)

通过获取位置信息,为开发者提供反作弊功能,剔除作弊设备;同时校正用户的地域分布数据,使报表数据更加准确。

ACCESS_COARSE_LOCATION(可选)

通过获取位置信息,为开发者提供反作弊功能,剔除作弊设备;同时校正用户的地域分布数据,使报表数据更加准确。

下面给出AndroidManifest.xml清单文件示例:

<manifest ……> <uses-sdk android:minSdkVersion="8"></uses-sdk> <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"/> <application ……>

混淆设置

如果您的应用使用了代码混淆,请添加如下配置,以避免【友盟+】SDK被错误混淆导致SDK不可用。

-keep class com.umeng.** {*;} -keep class org.repackage.** {*;} -keep class com.uyumao.** { *; } -keepclassmembers class * { public <init> (org.json.JSONObject); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); }

SDK需要引用导入工程的资源文件,通过了反射机制得到资源引用文件R.java,但是在开发者通过proguard等混淆/优化工具处理apk时,proguard可能会将R.java删除,如果遇到这个问题,请添加如下配置:

-keep public class [您的应用包名].R$*{ public static final int *; }

埋点验证配置

  1. 该功能仅9.4.0及以上版本的SDK支持详情可见:

    https://developer.umeng.com/docs/119267/detail/118639

  2. 新版集成测试需要在manifest.xml文件中配置,您需要在其中找到响应android.intent.action.MAIN的activity(也就是应用可以被外部唤起的第一个Activity),加上如下代码,让应用能被指定连接scheme唤起。

//1.唤起码默认为“um.该app对应的appkey”,不可改变 //2.请使用单独intent-filter,和其他intent-filter并列,不要将上述代码填入其他intent-filter里; //3.该功能仅9.4.0及以上版本的SDK支持 <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="um.该app对应的appkey" /> </intent-filter> </activity>

合规初始化

合规三步走

  1. 请务必确保您已经将友盟+SDK升级到满足监管新规的最新版本。各类最新SDK下载链接:https://devs.umeng.com

  2. 请务必在《隐私政策》中向用户告知使用友盟SDK,参考条款如下: 使用SDK名称:友盟SDK 服务类型:请按SDK功能填写,如统计分析 收集个人信息类型:设备信息(IMEI/MAC/Android ID/OAID/IDFA/OpenUDID/GUID/IP地址/ICCID/SIM 卡 IMSI 信息等)及粗略位置(可选) 隐私权政策链接:https://www.umeng.com/page/policy

  3. 采集目的

    • 基于设备信息用于生成脱敏的终端用户设备唯一性标识,以确保提供SDK服务;

    • 基于粗略位置用于区域维度的应用分析,提供地区数据报表;

    • 卸载分析功能:基于应用列表实现应用安装与卸载统计;

3. 您务必确保用户同意《隐私政策》之后,再初始化友盟+SDK。具体初始化步骤详见下文。

初始化步骤

重要

本方案支持友盟统计SDK 9.4.7及更高版本,强烈建议目前集成6.x.x、7.x.x、8.x.x、9.3.x以下 版本的开发者将统计SDK升级到9.4.7及更高版本。最新SDK版本可点击查看详情

为保证您的在集成【友盟+】统计SDK之后,能够满足工信部相关合规要求,您应确保在App安装后首次冷启动时按照如下方式进行初始化。

1.调用预初始化函数

预初始化函数需要在Application.onCreate函数中主线程内调用,预初始化函数不会采集设备信息,也不会向友盟后台上报数据。

// SDK预初始化函数 // preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验 public static void preInit(Context context,String appkey,String channel)

示例:

UMConfigure.preInit(this,"您的appkey","您的渠道");

2.首次冷启动,同意隐私政策后,再调用正式初始化函数

确保App首次冷启动时,在用户阅读您的《隐私政策》并取得用户授权之后,才调用正式初始化函数UMConfigure.init()初始化统计SDK,此时SDK才会真正采集设备信息并上报数据。反之,如果用户不同意《隐私政策》授权,则不能调用UMConfigure.init()初始化函数。

3.后续的冷启动,同意隐私政策后,调用正式初始化函数

一旦App获取到《隐私政策》的用户授权,后续的App冷启动,开发者应该保证在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit()。正式初始化函数UMConfigure.init可以按需调用(可以在预初始化函数之后紧接着调用,也可以放到后台线程中延迟调用,但还是必须调用,不能遗漏)。

常见问题

[SDK申请敏感权限相关问题]

[混淆相关问题]

更多集成问题可点我进入[常见问题]

说明

若以上答案,仍未解决您的问题,请拨打我们的热线电话:4009901848 或者 提交工单进行反馈。感谢您的支持与厚爱!

该文档内容是否给您带来了帮助?
赞同
反对
为了不断改善我们的文档质量,请问您在阅读文档中是否遇到了以下相关问题?
选择图片

null

点击或拖拽上传图片

相关视频