目录
前言
注释
一、U-APM 利用性能监控平台介绍
- 大外围劣势
- U-APM 与其余产品性能比照
二、集成友盟 SDK 步骤
第一步、进入 U -APM 性能首页
第二步、填写应用程序信息并注册
第三步、下载并集成根底 SDK
第四步、初始化代码
第五步、察看控制台统计数据
三、集成 SDK 过程中遇到的问题
问题 1. 谬误: 程序包 com.umeng.commonsdk 不存在
问题 2. SDK 集成好后,监控平台没有看到相干的统计数据
问题 3. 报错:Installation did not succeed. The application could not be in-stalled: INSTALL_FAILED_CONFLICTING_PROVIDER
四、理论问题定位与解决 - 解体实例剖析
- 设置告警策略
- 其余性能
结尾
前言
友盟推出了全新的利用性能监控平台 U-APM,U-APM 能够帮忙咱们深刻理解利用的性能和稳定性,帮忙咱们高效晋升利用的品质。通过实时采集新版本上线后的解体信息,提供了多种辅助定位问题的要害信息及多维度剖析报表,从而可能疾速发现问题、定位问题、解决问题。
注释
一、U-APM 利用性能监控平台介绍
1. 大外围劣势
1)捕捉采集类型丰盛,反对 Java、Native、Swift、Objective-C、ANR、自定义异样的捕获。
2)疾速定位谬误本源,提供行为日志、具体日志、内存快照、设施信息、自定义字段,帮您疾速发现问题起因,晋升问题解决效率。
3)智能告警业余服务,提供邮件、钉钉、飞书、企业微信告警触达通道,多时间段、多指标组合式告警,助您 7 *24 小时监控利用状况。提供业余客服 + 技术支持,丰盛用户课程,线下沙龙等,助您疾速上手。
4)支流热门机型,随时随地获取海量 Android 和 iOS 云端真机,稳固不掉线,操作晦涩无提早,省却百万真机购入费用,保障 App 品质。
2. U-APM 与其余产品性能比照
二、集成友盟 SDK 步骤
如果想要集成友盟的 SDK 也是须要肯定操作步骤的,在同类产品中,过程不算法简单,但也不是很简略。至于如何更加便捷,是不是能够思考把填写利用信息的步骤省略掉?好了,这个问题留给咱们产品同学吧。接下来,咱们开始具体介绍。
第一步、进入 U -APM 性能首页
U-APM 性能体验链接地址:https://at.umtrack.com/q0Dmaa
第二步、填写应用程序信息并注册
进入创立利用界面,首先填写利用名称 AVPlayer,而后抉择平台,这里须要留神的是友盟反对 iPhone、iPad、Android 三个挪动终端平台,咱们抉择安卓,默认中文为利用语言。咱们的应用程序是一款播放器,因而利用类型抉择影视观看 / 本地播放。最初,填写应用程序的根本形容信息,点击“注册利用”按钮。
实现注册后,零碎会给出应用程序的 AppKey,为了窃密,截图中暗藏了局部内容,请见谅。
第三步、下载并集成根底 SDK
集成根底 SDK 有两种形式,别离是线上接入 SDK 和手动集成 SDK。目前,可能是思考到新旧版本的兼容性问题,官网举荐新的 APP 应用线上接入 SDK 的形式。
那咱们就与时俱进,以新版 APP 集成 SDK 为例进行演示阐明。
- 在工程 build.gradle 配置脚本中 buildscript 和 allprojects 段中增加 sdk maven 仓库地址。
配置形式如下:
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/’}
}
} - 集成组件化各业务 SDK
在 maven 中能够灵便配置所需的 SDK,在工程 App 对应 build.gradle 配置脚本 dependencies 段中增加根底组件库和统计 SDK 库的依赖。
配置办法如下:
// 友盟根底组件库(所有友盟业务 SDK 都依赖根底组件库)
implementation “com.umeng.umsdk:common:9.4.2” // 版本号 (必选))
implementation “com.umeng.umsdk:asms:1.4.1” // asms 包依赖(必选)
implementation “com.umeng.umsdk:apm:1.4.2” // U-APM 产品包依赖(必选)
代码实例: - 性能依赖库介绍
当然,也能够依据应用程序 APP 的理论须要增加其余性能的依赖库,依赖库的品种十分多,比方:
1)友盟根底组件库(所有友盟业务 SDK 都依赖根底组件库)
2)友盟统计 SDK 依赖坐标
3)利用性能监控 SDK 依赖坐标库
4)友盟分享 SDK 外围库
5)反对 gradle 在线依赖的友盟分享模块
6)友盟推送 SDK 依赖坐标
7)厂商推送依赖坐标(繁多厂商通道下相干组件必须全副集成,例:小米通道集成 2 个组件)
第四步、初始化代码
对立对各个业务进行初始化接口,总共分三点,上面别离介绍。
1)隐衷合规中退出友盟 +SDK 合规申明
https://developer.umeng.com/d…。这一点是十分必要的,最近审核十分严格,特地是挪动端 APP。
2)在 Applicaiton.onCreate 函数中调用预初始化函数 UMConfigure.preInit()
敏感的小伙伴,在这里就立马会提出一个疑难:调用友盟的这个办法会不会影响 APP 的挪动速度?答案是多虑了。preInit() 作为预初始化函数,耗时极少,不会影响 App 首次冷启动的用户体验,不会采集设施信息,也不会向友盟后盾上报数据。
友盟预初始化函数申明如下:
public static void preInit(Context context, String appkey, String channel)
代码截图如下:
3)客户端在用户批准隐衷政策后,开始正式初始化友盟 SDK
调用初始化函数 UMConfigure.init(),友盟初始化函数申明如下:
UMConfigure.init(Context context, String appkey, String channel, int deviceType, String pushSecret)
代码截图如下:
第五步、察看控制台统计数据
实现设置后,咱们返回到首页,就能够查看相应的 APP 应用程序的统计信息了,包含异样次数、影响用户数、告警次数、云真机残余分钟数等。
三、集成 SDK 过程中遇到的问题
问题 1. 谬误: 程序包 com.umeng.commonsdk 不存在
个人感觉,这是最常见的一种谬误,然而官网的文档中竟然没有相干的阐明。官网常见问题列表地址:https://developer.umeng.com/d…,感觉其中很多内容都是官网本人总结的,不够接地气,比方这个谬误就不晓得应该归到哪一类。官网是不是能够思考减少一个社区模块,不便开发者之间交换。具体位置能够参考下图:
最终,折腾了良久,也没有通过在线模式集成友盟 SDK,起初还是换成了本地依赖模式解决这个问题。
问题 2. SDK 集成好后,监控平台没有看到相干的统计数据
这个问题是我忽略导致的,我认为在调用 UMConfigure.preInit()办法的时候传入 AppKey 就行了。而 UMConfigure.init()办法没有同步更新,因而导致了这个问题。我也由此判定,真正起到关联作用的办法是 UMConfigure.init()。当然也期待官网更正当的解释,因为我的了解可能有误。
问题 3. 报错:Installation did not succeed. The application could not be in-stalled: INSTALL_FAILED_CONFLICTING_PROVIDER
集成友盟 SDK 后,装置 APP 时报了这个谬误。起初,把之前老的 APP 从手机端卸载,再重新安装,问题解决。这样看来,和集成友盟 SDK 的关系不大,然而这个问题就是这么神奇。
四、理论问题定位与解决
咱们实现友盟 SDK 集成后,就能够通过后盾首页发现对应的利用名称集成状态显示“已集成”。同时,咱们还能够查看应用程序的运行状态,比方异样次数和影响用户数。
接下来,咱们依据具体的异样监控后果进行剖析。
1. 解体实例剖析
通过后盾的“剖析”页签,找到“解体剖析”模块,能够发现明天有一例解体谬误。
在以后页面往下划,咱们能够看到相应的谬误列表和谬误散布。其中,谬误列表蕴含了谬误产生的摘要、ID、最近一次的产生工夫、谬误类型、版本范畴、谬误次数、影响用户数、解决状态等,具体内容如下图所示:
谬误散布蕴含了设施散布、零碎散布、运营商散布、版本散布、页面散布、时长散布、渠道散布、地区散布,具体内容如下图所示:
好了,接下来,咱们具体分析一下这个谬误。点击谬误列表中谬误摘要的链接进入谬误详情,里边有谬误的具体明细,比方下图所显示的谬误起因是数组越界:ArrayIndexOutOfBoundsException,具体的代码地位在文件 UappActivity.java 的第 93 行。
咱们找到对应的代码行数看一下代码状况,具体截图如下:
哇哦,看到代码再联合报错提醒,咱们立马晓得了这行代码写的有问题,大小为 3 的数组,索引值最大为 2,不可能是 3,批改成 0、1、2,问题解决。
从新编译后装置,再运行看一下成果,执行雷同的操作,解体不再产生。此时,咱们就能够手动批改该解体的解决状态了,比方下图所示,将“未修复”批改为“已修复”,其中还包含另外两个状态,别离是“解决中”、“已疏忽”。
2. 设置告警策略
另外,咱们还能够针对某种谬误类型设置告警策略,比方下面的解体问题,如果咱们不确定是否真正解决了。那么就能够点击“告警”按钮,进入告警策略设置页面。
在新建告警打算页面中,咱们须要设置告警打算名称,个别应用谬误名称 + 谬误 ID 的形式,然而留神不要超过 20 个字符。同时,还能够设置告警失效工夫,默认实时告诉,也能够自定义告诉时间段,比方每周二的下午三点到四点。
另外,还能够自定义告警触发条件,个别都是谬误产生次数大于 0 时就会失效。还能够指定失效的利用版本,比方我只想监控 APP 利用最新的 3.0 版本,就从下拉列表中抉择对应的版本即可。告诉形式能够抉择邮箱、钉钉、企业微信、飞书中的至多一种,常见的形式是前两种。
然而,在理论应用过程中,本人尝试了两个告警打算,邮箱都没有收到对应的告诉。对于这个性能官网如同没有版本限度,告诉音讯列表也是空的,十分奇怪,原本想把这个问题留给当前排查的。然而,起初不知过了多久,竟然收到了邮件告诉,看来延时还是挺大的。邮件截图如下所示:
3. 其余性能
友盟利用性能监控平台 U-APM 除了上边介绍的解体剖析和告警告诉性能外,还有 ANR 剖析、自定义异样、卡顿剖析、启动剖析、内存剖析、网络分析等功能模块。
1)ANR 剖析,ANR 是用户在应用 Android APP 过程中呈现弹框,提醒利用无响应,计为一次 ANR。稳定性模块能够捕捉产生在主过程和子过程中的 ANR。通过对 ANR 产生次数的计算,为开发者展现了 App 在所选工夫中的谬误趋势、谬误散布和谬误列表,可疾速地剖析出导致 APP 产生 ANR 的次要起因。
注意事项:启动监控 ANR 性能,Android 须要集成 Common 9.3.8 及以上 + APM 1.1.0 及以上版本号。iOS 须要集成 Common 7.2.8 及以上 + APM 1.1.0 及以上版本号,降级后主动采集。
2)自定义异样,开发人员能够本人定义某种异样类型,程序对异样进行了捕捉解决,为更好理解并监控这类异样,开发人员也将这类异样上报到友盟 + 的谬误剖析服务中。不得不说这个性能利用场景还是十分多的,Bugly 也有相似的性能。
3)卡顿剖析,当音讯设定时长超出卡顿的定义阈值后会被记为卡顿,能够作为判断利用性能的指标。解决卡顿问题在晋升用户体验方面具备十分重要的意义,正当优化卡顿指标在 APP 开发过程中是一件中长期的工作。
注意事项:应用卡顿性能,Android 须要集成 Common 9.3.8 及以上 + APM 1.2.0 及以上版本号。iOS 须要集成 Common 7.2.8 及以上 + APM 1.2.0 及以上版本号,降级后主动采集。
4)启动剖析,包含启动趋势、慢启动剖析、启动过解体剖析。通过监控 APP 利用启动耗时的平均值、分位值、区间散布等数据,以及启动阶段的性能合成数据,剖析慢启动和启动解体的起因。
5)内存剖析,包含 OOM 异样、内存占用。提供了 APP 在运行阶段的内存溢出、内存占用状况及散布详情,便于咱们剖析利用的健康状况和问题定位。
6)网络分析,通过收集 HTTP 申请、网络谬误、DNS 解析等维度的数据,剖析以后利用的网络情况,有利于开发人员定位网络相干的编码问题,比方超时解决,断网重连等常见问题。
结尾
通过本文的介绍,咱们能够看出友盟利用性能监控平台 U-APM 的集成过程还是比较简单的,另外,U-APM 平台具备丰盛的数据收集和功能分析能力,而且在具体的性能颗粒度划分方面做得也十分细。相比同类产品,比方 Bugly、网易云捕等要弱小很多。另外,在集成和应用过程中也遇到一些,并在文中有所体现,心愿友盟团队不断完善 U-APM 平台,为挪动端开发的小伙们带来新的福音。
作者:刘振
社区笔名:liuzhen007(Data-Mining)