**ARMS用户体验监控原生鸿蒙 SDK 正式发布**
**01 背景**
2024年10月22日,华为正式发布了原生鸿蒙操作系统(HarmonyOS NEXT)。原生鸿蒙实现了系统底座全部自研,系统的流畅度、性能、安全特性等方面显著提升,也实现了操作系统的自主可控。目前,已有超过15000个鸿蒙原生应用和元服务上架,为了进一步优化用户的使用体验,提升开发者效率,阿里云 ARMS 用户体验监控(Real User Monitoring,RUM)推出用于监控原生鸿蒙应用的 SDK,成为原生鸿蒙开发者的首选辅助工具。
**02 功能介绍**
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 支持开发者根据自身业务需求设定自定义事件、自定义日志的上报。自定义事件支持对事件名称、事件分组、属性值、以及自定义属性的配置。自定义日志支持对日志类型、日志内容、日志自定义属性的配置。
**03 如何开始**
只需几个简单步骤,即可将鸿蒙用户体验监控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("") // AppID 在创建 RUM 应用时获取
.withConfigAddress("<your config address") // ConfigAddress 在创建 RUM 应用时获取
.start(this.context.getApplicationContext());
代码示例
onCreate(): void {
this.initAlibabaCloudRumSdk();
}
private initAlibabaCloudRumSdk() {
AlibabaCloudRum.withAppID("")
.withConfigAddress("<your config address")
.start(this.context.getApplicationContext());
}
更多的详细配置,详见官方接入文档[1],接口说明[2],SDK的版本说明[3]。
**04 结语**
原生鸿蒙系统是我国首个实现全栈自研的操作系统,全面突破操作系统核心技术,真正实现了国产操作系统的自主可控。在这样的背景下,RUM 推出的用于监控原生鸿蒙的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