乐趣区

关于程序员:移动端性能监测工具篇之UAPM

背景

性能问题

通常状况下,App 的性能问题并不会间接导致其不能应用,却会潜在的影响用户体验。在泛滥 App” 内卷 ” 的当下,一个不好的体验甚至能导致用户的散失。比方:
• 启动速度过慢
• CPU 占用率高导致的手机发热、耗电快
• 不明起因的闪退
• …等等

预防和查看

当然,作为一名开发者,在编写代码时就要做到防止一些性能问题的呈现。比方:
• 优化计算的复杂度从而缩小 CPU 占用率
• 编写单元测试
• … 等等
当然,善用工具能够高效地去监控 App 的性能问题,帮忙开发者及时修复产品体验上的缺点。市面上 APM 工具很多,因为笔者曾在我的项目中应用过 U -App 进行过利用信息的统计,在此就友盟 U -APM 来说一些应用体验。

U-APM 应用体检

集成

参照官网平台的集成阐明,以 iOS 为例,这里做一个简述

  1. 在 U -APM 创立利用,生成一个 Appkey
  2. 举荐应用 CocoaPods 来接入 SDK pod ‘UMCommon’
  3. pod ‘UMDevice’
  4. pod‘UMAPM’

在 AppDelegate.m 文件中,增加如下

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {[UMConfigure initWithAppkey:@"61276660870a7a610a4f67f5" channel:@""]; 
// Appkey 在步骤 1 中生成 
// channel 字段为自定义渠道辨别,不填写则被默认为是 "App store" return YES; 

}

剖析后果

1. 解体剖析

我仅仅是在我的项目中的首页手写了一个可被动触发的闪退 Bug。剖析后果图解如下:

解体的曲线图对于开发者来说,算是一个兼顾的展现。重要的是,在页面下方的谬误列表中,能够查看某个谬误产生的次数,类型,影响的用户数。这很不便作为开发者在批改 Bug 时能疾速精确的判断优先级。另外,谬误都有独自的谬误明细页,大部分的 Bug 都能够被精准定位。

起初因为 U -APM 启动解体剖析的启发,我在我的项目内的启动办法 -(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions 中,即配置 Appkey 的前后,都别离写了闪退 Bug,并临时用渠道名做了辨别。
结果显示,在配置 AppKey 前产生的闪退,并不能被捕捉。
有人会问:那这不是必然的么?你都还没配置呢 …

这也正是我想说的问题。因为在许多时候,咱们去配置一些第三方库时,因为集成办法过于简略,总是会很随便的依据官网教程去增加一行代码,并不去讲究它在我的项目代码中该当所处的最佳地位。因为这并不影响我的项目运行,这种细节也很容易被疏忽。我心愿在任何时候,开发者们都应该养成每一行代码在敲下去之前都尝试去思考的习惯。

2. 卡顿剖析


卡顿的列表与明细也是和解体一样,能够查问和定位。并且可能标记(未解决、修复中、已疏忽、已修复)4 种状态。
我还另外增加了卡顿告警打算,只有卡顿用户数占比超过 5%,就会发邮件告诉我。它胜利的在一小时内触发告警信息并在邮件中揭示了我。

我在启动时采纳了随机数去随机加快该项目标启动速度。默认首次启动 / 冷启动超过 3 秒为慢启动,热启动超过 1 秒为。这里以冷启动为例:

在剖析柱状图里也很好的展现了失常启动与慢启动的占比

4. 内存剖析

在 OOM 的剖析上,貌似对 Android 的反对更甚 iOS。因为 iOS 的 Jetsam 机制,这里只剖析当程序内存超出限度时造成的一种非凡的 Crash。包含异样的捕捉也不是全都能检测。

5. 散布剖析

平台均能在以上四个模块(解体、卡顿、慢启动、OOM 异样)剖析中提供散布情况,包含设施散布、零碎散布、运营商散布、版本散布、页面散布、渠道散布、地区散布。

6. 自定义配置模块

U-APM 还提供了采集开关,须要在初始化前就在代码中配置好。

以上就是我体验的 U -APM 的全副性能。
还有一些我来不及体验的性能期待更多开发者去应用,比方“云真机”,”API 上传符号表页面整体加载速度渲染 ” 等等。

一些倡议分享

在卡顿剖析与解体剖析的运营商模块中,呈现了一个剖析谬误❌。我应用的是电信宽带与电信卡,剖析后果却展现出我应用的是中国移动的运营商。当然对于这种问题,平台有另外的客服工单能够去提出,这里也不再赘述。(从过来应用其余友盟的产品来看,客服工单的反馈效率还是挺不错的)
另外值得一提的是,因为笔者在我的项目中曾经将开发语言齐全过渡到 Swift,但在集成时,官网提醒 Swift 以后仅反对 U -App 统计,其余业务暂不反对 Swift。我也是连夜创立一个 OC 我的项目去体验,并没有尝试在 Swift 我的项目中接入。而现如今,Swift 已成 iOS 开发支流语言,心愿 U -APM 能在将来能全面反对 Swift 更加便当开发者。
当然,这不障碍它目前能够满足开发者们在 OC 我的项目中对性能监控的根本需要:
• 集成办法简略、迅速
• 追踪解体、卡顿的详细信息,轻松定位本源问题
• 剖析图解清晰明了,多状态方便管理
• 辨认设施类型(iPhone/iPad/iPod、操作系统版本、运营商类型),分类设施性能
最初,我还是心愿,适当应用工具能够晋升开发效率,但也请不要过分依赖而忘了思考。

作者:蔡丹霞

退出移动版