作者:杨兰馨(楠瑆)
背景
2024 年 10 月 22 日,华为正式发布了原生鸿蒙操作系统(HarmonyOS NEXT)。原生鸿蒙实现了系统底座全部自研,系统的流畅度、性能、安全特性等方面显著提升,也实现了操作系统的自主可控。目前,已有超过 15000 个鸿蒙原生应用和元服务上架,为了进一步优化用户的使用体验,提升开发者效率,阿里云 ARMS 用户体验监控(Real User Monitoring,RUM)推出用于监控原生鸿蒙应用的 SDK,成为原生鸿蒙开发者的首选辅助工具。
功能介绍
ARMS RUM 产品覆盖浏览器、小程序、APP、PC 等客户端环境,观测与分析用户行为、页面性能,精准把握用户体验。本次发布的接入原生鸿蒙应用的 SDK 使用 ArkTS 语言进行开发,数据采集功能完备,在用户使用过程中可以对鸿蒙应用全方位监控。
2.1 页面采集
支持原生页面和 Webview 页面采集。产品统计了页面访问量、平均加载耗时、缓慢访问占比、平均停留时间、访问用户数等详细指标,并且按照地域、App 版本、联网方式、设备、操作系统、运营商等维度统计页面访问的分布。进一步,在页面明细模块,展示访问当前页面的设备品牌、型号、访问时间、IP 地址等信息,并且按照页面维度,展示在当前页面发生的点击、资源加载、异常等事件。针对 Webview 页面,RUM 支持对 Webview 页面错误、页面请求、页面路由切换进行采集。
2.2 资源加载采集
RUM 原生鸿蒙 SDK 会对所有类型的资源加载采集,具体包含 image、script、css、navigation 等静态资源加载和 socket、websocket、api 等动态资源加载。支持网络请求采集,具体包含 RCP、HTTP、WebSocket、TCPSocket、UDPSocket。 针对资源加载,RUM 统计了加载次数、平均加载耗时、错误次数、错误率、请求方法等指标,并且在资源详情页面,展示了 DNS 查询、TCP 链接、SSL 建连、请求响应、内容传输、DOM 解析、资源加载等资源加载性能指标。
2.3 异常采集
异常统计是开发者最为关注的一个模块,RUM 原生鸿蒙 SDK 支持对 JS 崩溃、CPP 崩溃、APP Freeze、卡顿等类型异常的采集。产品对异常次数、崩溃率、影响会话数、影响用户数、异常分布等指标进行分析。
点击异常名称进入异常明细页面,与资源加载和页面访问类似,异常模块也按照地域、App 版本、联网方式、设备、操作系统、运营商等维度进行异常次数统计,并且展示了 Top50 的异常用户明细。比较关键的是,产品展示了具体的异常堆栈信息,并且提供了异常解析功能。在开发者上传对应的 Soucemap / 符号表 so 文件后(如果在应用构建时开启混淆构建,还需额外上传反混淆映射表文件),点击解析堆栈按钮,可以得到对应的解析结果,帮助开发者定位异常产生的位置,从而快速优化代码。
2.4 自定义采集
RUM 原生鸿蒙 SDK 支持开发者根据自身业务需求设定自定义事件、自定义日志的上报。自定义事件支持对事件名称、事件分组、属性值、以及自定义属性的配置。自定义日志支持对日志类型、日志内容、日志自定义属性的配置。
如何开始
只需几个简单步骤,即可将鸿蒙用户体验监控SDK接入您的项目之中:
3.1 集成 SDK
第一步:鸿蒙 RUM SDK 已发布到第三方仓库中,在 Terminal 窗口中,切换到模块级目录,执行如下命令安装三方包,DevEco Studio 会自动在该模块的 oh-package.json5 中自动添加三方包依赖。
cd path/to/your/project
ohpm config set registry https://ohpm.openharmony.cn/ohpm/
ohpm install @alibabacloud_rum/harmony_sdk
第二步:Rebuild 项目,确保配置生效。
3.2 接入 SDK
配置授权信息
检查应用程序 module.json5 配置文件,确保已引入如下授权:
ohos.permission.INTERNET 发送网络数据
ohos.permission.GET_NETWORK_INFO 获取网络状态信息
配置 ohmurl 规则
将工程级或模块级 build-profile.json5 中的 useNormalizedOHMUrl 修改为 true, 若没有该配置项请手动添加。
{"app" : {"products": [{"buildOption": {"strictMode": {"useNormalizedOHMUrl": true}}}]}
}
初始化 SDK
在入口 entry module 自定义 AbilityStage 中的 onCreate 函数中,添加如下代码:
AlibabaCloudRum.withAppID("<your appid>") // AppID 在创建 RUM 应用时获取.withConfigAddress("<your config address") // ConfigAddress 在创建 RUM 应用时获取.start(this.context.getApplicationContext());
代码示例:
onCreate(): void {this.initAlibabaCloudRumSdk();
}private initAlibabaCloudRumSdk() {AlibabaCloudRum.withAppID("<your appid>").withConfigAddress("<your config address").start(this.context.getApplicationContext());
}
更多的详细配置,详见官方接入文档 [ 1] ,接口说明 [ 2] ,SDK 的版本说明 [ 3] 。04
结语
原生鸿蒙系统是我国首个实现全栈自研的操作系统,全面突破操作系统核心技术,真正实现了国产操作系统的自主可控。在这样的背景下,RUM 推出的用于监控原生鸿蒙的 SDK 为鸿蒙应用的开发者提供了更进一步的便利,对衡量用户体验关键的指标进行全面的分析和追踪。目前阿里云用户体验监控 SDK 已经在华为 SDK 生态市场正式上架,详情可以点击此处了解。
相关文档:
[1] 接入文档
https://help.aliyun.com/zh/arms/user-experience-monitoring/access-harmonyos-application
[2] SDK 配置文档
https://help.aliyun.com/document_detail/2859795.html
[3] SDK 版本说明
https://help.aliyun.com/document_detail/2859794.html