集成流程
引入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 *;
}
埋点验证配置
该功能仅9.4.0及以上版本的SDK支持详情可见:
新版集成测试需要在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>
合规初始化
合规三步走
请务必确保您已经将友盟+SDK升级到满足监管新规的最新版本。各类最新SDK下载链接:https://devs.umeng.com
请务必在《隐私政策》中向用户告知使用友盟SDK,参考条款如下: 使用SDK名称:友盟SDK 服务类型:请按SDK功能填写,如统计分析 收集个人信息类型:设备信息(IMEI/MAC/Android ID/OAID/IDFA/OpenUDID/GUID/IP地址/ICCID/SIM 卡 IMSI 信息等)及粗略位置(可选) 隐私权政策链接:https://www.umeng.com/page/policy
采集目的
基于设备信息用于生成脱敏的终端用户设备唯一性标识,以确保提供SDK服务;
基于粗略位置用于区域维度的应用分析,提供地区数据报表;
卸载分析功能:基于应用列表实现应用安装与卸载统计;
3. 您务必确保用户同意《隐私政策》之后,再初始化友盟+SDK。具体初始化步骤详见下文。
如您需要iOS合规指南,请您点击此处查看。
初始化步骤
本方案支持友盟统计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可以按需调用(可以在预初始化函数之后紧接着调用,也可以放到后台线程中延迟调用,但还是必须调用,不能遗漏)。
常见问题
更多集成问题可点我进入[常见问题]
若以上答案,仍未解决您的问题,请拨打我们的热线电话:4009901848 或者 提交工单进行反馈。感谢您的支持与厚爱!
点击或拖拽上传图片