共计 3478 个字符,预计需要花费 9 分钟才能阅读完成。
APP 性能监测工具之友盟的 U-APM 产品入门应用
前言:
最近公司做了一款新的 APP,要求可能看到用户每天的新增量和沉闷量,还有一些页面的点击量、停留时间等的监测,还有更重要的一点就是可能监测到 app 的异常情况。于是开始对第三方工具开始一番钻研,比照之后我抉择应用了友盟。废话不多说,开始介绍下我的集成过程。
这里有一个整体的流程图
注释:
第一步:集成筹备
友盟的利用性能监控平台 U-APM 的传送门:https://at.umtrack.com/HHDSrm
如果没有账号能够先注册一下,注册完登录后,间接点击进入后盾
进入后盾后,点击立刻创立,填写上利用的相干信息,点击注册利用即可
这里的 AppKey 很重要哦,集成的时候要用到的,而后点击持续集成,上面就能够欢快的集成了。
第二步:开始集成,集成分主动集成和手动集成两种模式
还是先来看下整个集成的流程图
主动集成(举荐)
通过在 Android Studio 工程 build.gradle 配置脚本中增加 maven 线上依赖,导入最新版本组件化统计 SDK。
maven 依赖配置
在工程 build.gradle 配置脚本中 buildscript 和 allprojects 段中增加【友盟 +】SDK 新 maven 仓库地址。
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:9.4.2’// 必选
implementation ‘com.umeng.umsdk:asms:1.4.1’// 必选
implementation ‘com.umeng.umsdk:apm:1.4.2’ // 谬误剖析降级为独立 SDK,看 crash 数据请肯定集成,必选
implementation ‘com.umeng.umsdk:abtest:1.0.0’// 应用 U -App 中 ABTest 能力,可选
}
留神:在 Android Studio 3.1 及以上版本开发环境下,指定援用最新版本依赖写法”latest.integration”可能导致下载库超时,此时须要指定具体版本号。
清单文件中的权限配置
<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”/>
如果利用应用了代码混同,请增加如下配置,以防止【友盟 +】SDK 被谬误混同导致 SDK 不可用
-keep class com.umeng.* {;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
办法调用
在 Applicaiton.onCreate 函数中调用预初始化函数 UMConfigure.preInit(),正式初始化函数 UMConfigure.init 能够按需调用 (能够在预初始化函数之后紧接着调用,也能够放到后盾线程中提早调用,但还是必须调用,不能脱漏),但确保 App 首次冷启动时,在用户浏览《隐衷政策》并获得用户受权之后,才调用正式初始化函数 UMConfigure.init(),如果用户不批准《隐衷政策》受权,则不能调用 UMConfigure.init() 初始化函数。
// SDK 预初始化函数不会采集设施信息,也不会向友盟后盾上报数据。
// preInit 预初始化函数耗时极少,不会影响 App 首次冷启动用户体验
public static void preInit(Context context, String appkey, String channel)
/**
- 留神: 即便您曾经在 AndroidManifest.xml 中配置过 appkey 和 channel 值,也须要在 App 代码中调
- 用初始化接口(如须要应用 AndroidManifest.xml 中配置好的 appkey 和 channel 值,
- UMConfigure.init 调用中 appkey 和 channel 参数请置为 null)。
*/
UMConfigure.init(Context context, String appkey, String channel, int deviceType, String pushSecret);
代码示例
手动集成(不举荐)
手动集成没有应用,我这里就不做介绍了,有须要的小伙伴能够点开 https://developer.umeng.com/d… 进行学习应用。
到这里已实现了对数据统计和异常情况监测的 sdk 集成。
然而呢,平时生产反馈的异样问题,咱们哼哧哼哧调试好半天才搞定,节约了本该逍遥快活的大好工夫。所以咱们就想对 app 异常情况做更进一步的剖析反馈。不要焦急,友盟也给咱们想好了,友盟给咱们预留了解体回调办法,当解体产生时,能够在该回调办法中返回 string 类型的业务自定义数据,该数据会写入到解体文件中并上传到服务器展现。留神:解体回调中返回 string 类型数据的长度限度为 256 个字符。
接口示例
UMCrash.registerUMCrashCallback(newUMCrashCallback(){
@Override
publicString onCallback(){
return” 解体时 register 的自定义内容字符串 ”;
}
});
上传后即可在谬误详情 - 自定义字段中查看到回调信息
咱们还能够自定义异样接口,如果捕捉了谬误,须要手动上传到【友盟 +】服务器能够调用上面两种办法:
办法一:
public static void UMCrash.generateCustomLog(Throwable e,String type)
办法一示例:
try{
// 抛出异样的代码
}catch(Exception e){
UMCrash.generateCustomLog(e,”UmengException”);
}
办法二:
public static void UMCrash.generateCustomLog(String e,String type)
办法二示例:
String e =” 自定义异样代码 ”;
UMCrash.generateCustomLog(e,”UmengException”);
应用自定义谬误,查看时请在谬误列表页面抉择【自定义异样】。
好了,开始运行我的项目,看下友盟后盾是不是有数据了,如果有用户数据那阐明集成胜利,能够庆贺了。
因为异常情况的数据还没有,只能给大家截个款式图了,但成果都是一样的。
整个集成过程还是比较简单的,目前友盟的性能还是比拟弱小的,包含利用的各种数据统计、异样日志的反馈、推送、分享等,当前会缓缓学习钻研,退出到我的项目里,使利用的监控和性能更加丰盛。
总结:
U-APM 是友盟 + 推出的 App 稳定性监控、性能监控和云真机测试平台。通过轻量级的集成接入即可领有实时、牢靠、全面的利用解体、ANR、自定义异样等捕捉能力,及卡顿、启动剖析等性能能力,反对多场景、多通道智能告警监控,帮忙开发者高效还原异样、卡顿用户的拜访门路和业务现场,缩短故障排查工夫。这一块的性能是我比拟喜爱的,倡议大家不论是统计的集成,还是推送、分享的集成,都能够试试使用上 U -APM 的性能,你会发现不一样的应用和便捷。
对产品的倡议是:产品自身还是比拟成熟的,临时没有发现什么须要改良的中央。
个人简介:我叫王太达,就任于中邮信息科技(北京)有限公司,是一名全栈工程师,当初主攻 Java 方向,喜爱分享常识和工作中遇到的问题,励志帮忙小伙们少踩坑,省下工夫专研更有意思的事件。