9.X升级至最新
1 SDK9.4.4版本优势
合规优化:符合5月1日 监管新规
新增隐私授权结果上传API
新版集成测试支持(点击查看新版集成测试优势)
优势适配Android 10、11系统
该版本SDK支持搭配友盟+其他新SDK使用:如U-APM(原错误分析升级,独立崩溃分析SDK,丰富崩溃捕获类型,增加错误细查、崩溃回调和卡顿分析)、友盟超链(U-LInk)、ABtest和在线参数;
修复版本号隔离问题
支持5G采集
跟随Android 系统新特征,做自身优化
简化了页面模式选择,降低sdk集成或升级时错误的可能性。
2 升级操作教程
友盟+SDK的使用主要分为三部分:集成->初始化->功能使用。其中集成和初始化为必要步骤,完成后您即可使用U-App的新增启动活跃等基础统计分析。如需要事件分析或其他功能,需要单独进行代码开发。接下来会根据这三部分,分别介绍升级操作。
如您同时接入过友盟+多款SDK,为保障整体合规和不报错,请将所集成的SDK同时升级。
2.1 集成SDK
2.1.1 如果您为手动集成SDK9.x.x
在工程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/' }
}
}2. 在工程App 对应build.gradle配置脚本dependencies段中添加统计SDK库和其它库依赖
原crash包名称变为了apm、deeplink能力和ABTest能力都独立为了单独的包,您可以按照升级后的需求选择集成
dependencies {
implementation fileTree(include:['*.jar'], dir:'libs')
// 下面各SDK根据宿主App是否使用相关业务按需引入。
// 友盟统计SDK
implementation 'com.umeng.umsdk:common:9.4.4'// 必选
implementation 'com.umeng.umsdk:asms:1.4.1'// 必选
//下列组件可选用
implementation 'com.umeng.umsdk:apm:1.2.0'//推荐,错误分析升级为U-APM产品,关注crash数据需集成
implementation 'com.umeng.umsdk:abtest:1.0.0'//U-App中ABTest能力
}1.在官网下载业务包后,按照以下操作重新导入线上jar包。
选择SDK功能组件并下载,解压.zip文件得到相应组件包(umeng-common-9.3.8.jar),在Android Studio的项目工程libs目录中拷入相关组件jar包,右键Android Studio的项目工程 —> 选择Open Module Settings —> 在 Project Structure弹出框中 —> 选择 Dependencies选项卡 —> 点击左下“+” —> 选择组件包类型 —> 引入相应的包。
2. 导入aar组件
如果您的项目工程没有使用过.so动态库,或者仅适配armeabi 平台,则可以从解压的.zip文件中,找到umeng-asms-armeabi-vx.x.x.aar库和umeng-apm-armeabi-vx.x.x.aar库(注意:umeng-asms-armeabi-vx.x.x.aar库和和umeng-apm-armeabi-vx.x.x.aar库默认仅适配armeabi平台),在项目工程的libs目录中拷入umeng-asms-armeabi-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-armeabi-vx.x.x', ext:'aar')
implementation (name:'umeng-abtest-vx.x.x', ext:'aar')
implementation (name:'umeng-apm-armeabi-vx.x.x', ext:'aar')
}3.多架构平台适配
如果您的项目工程需要适配armeabi 以外的平台,如:armeabi-v7、x86等,则需要下载umeng-asms-vx.x.x库和umeng-apm-vx.x.x库,在Android Studio的项目工程libs目录中拷入所有组件jar包,右键Android Studio的项目工程 —> 选择Open Module Settings —> 在 Project Structure弹出框中 —> 选择 Dependencies选项卡 —> 点击左下“+” —> 选择组件包类型 —> 引入相应的包。然后根据您项目工程对应的平台分别考入对应的.so。
2.2 初始化友盟+
由于工信部的合规要求App在用户同意隐私政策前不可以获取任何个人信息,所以友盟+修改初始化为以下操作:
请务必确保您已经将友盟+SDK升级到满足监管新规的最新版本。各类最新SDK下载链接:https://developer.umeng.com/sdk
请务必在《隐私政策》中向用户告知使用友盟SDK,参考条款如下:
使用SDK名称:友盟SDK
服务类型:请按SDK功能填写,如统计分析
收集个人信息类型:设备信息(IMEI/MAC/Android ID/IDFA/OpenUDID/GUID/IP地址/SIM 卡 IMSI 信息等) 隐私权政策链接:https://www.umeng.com/page/policy
(该部分的改动是为了适用更多的App,若您之前已经添加过了友盟+的隐私透出,可以不用修改)
3. 在用户同意隐私政策后才可以正式初始化友盟+SDK,具体技术操作如下:
SDK预初始化
//在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit(),预初始化函数不会采集设备信息,也不会向友盟后台上报数据。
// SDK预初始化函数
// preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验
public static void preInit(Context context,String appkey,String channel)b. 同意隐私协议后的正式初始化
一旦App获取到《隐私政策》的用户授权,后续的App冷启动,开发者应该保证在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit()。正式初始化函数UMConfigure.init可以按需调用(可以在预初始化函数之后紧接着调用,也可以放到后台线程中延迟调用,但还是必须调用,不能遗漏)
//初始化方法一,优先级最高
UMConfigure.init(Context context,String appkey,String channel,int deviceType,String pushSecret);
/**
* 初始化方法二
* 注意:如果您已经在AndroidManifest.xml中配置过appkey和channel值,可以调用此版本初始化函数。
*/
UMConfigure.init(Context context,int deviceType,String pushSecret);c. 初始化后,即可使用集成测试进行集成校验。
2.3 功能变动
2.3.1 页面采集
由于版本迭代原因,Android页面采集分为四种。为了避免大家混淆,在common SDK 9.4.2版本中,删除了两种采集模式,和iOS采集功能拉齐,分为自动采集和手动采集两种模式。
在9.x.x版本升级至9.4.2版本时,若您:
此时页面模式为AUTO
如果您需要页面路径分析,可以保持不改变。如果您不需要页面分析,可以改页面模式为Manual,节省您用户使用App时的流量消耗。
此时页面模式为MANUAL
可以删除所有activity页面的onResume/onPause函数中调用的MobclickAgent.onResume / MobclickAgent.onPause 函数。
此时页面模式为LEGACY_MANUAL
选择Manual模式,并删除所有activity页面的onResume/onPause函数中调用的MobclickAgent.onResume / MobclickAgent.onPause 函数。
您也可以不进行改变,但是要保证以后的activity都需要手动调用MobclickAgent.onResume / MobclickAgent.onPause 函数。
此时页面模式为LEGACY_AUTO
如果您需要页面路径分析,。改为AUTO即可。如果您不需要页面分析,可以改页面模式为Manual,节省您用户使用App时的流量消耗。
注意,如果您在9.x.x版本中,未设置页面模式,且没有对所有的Activity手动埋点,则您的新增启动活跃等基础数据统计是不正确的,在您升级至9.4.2版本后,数据会有较大幅度的上升。
页面采集模式的详细介绍,可以点击查看文档。
2.3.2 自定义事件
API无变化
2.3.3 Android Q适配
统计SDK 9.3.8及以上版本自带oaid模块和三方oaid库(联想、小米、oppo、vivo、华为)不会发生包名冲突,开发者可同时集成两者。开发者可以通过如下api获得oaid:
UMConfigure.getOaid(mContext,newOnGetOaidListener());样例代码:
import com.umeng.commonsdk.listener.OnGetOaidListener;
UMConfigure.getOaid(mContext,newOnGetOaidListener(){
@Override
public void onGetOaid(String oaid){
android.util.Log.i("mob","oaid"+oaid);
}
}2.3.4 错误分析(稳定性)
错误分析在9.3.8版本中,已经独立为了单独的jar包,因为错误分析变为了独立的产品U-APM(移动性能监测产品),加强了错误捕获和分析能力,新增了启动分析、卡顿分析等能力。
集成U-APM的jar包可以点击查看文档。
移动统计错误分析升级到U-APM的集成文档
2.3.5 在线参数
在9.3.8版本中,该能力独立为单独的jar包,您可以按需导入。
2.3.6 新版本集成测试
新版集成测试仅适配9.4.0及以上版本的Android SDK
新版集成测试需要配置URL Schemes
新版集成测试需要在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>打开app后,页面显示如下表示升级成功