内容
活动
关注

移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现

简介: 阿里云 ARMS 团队倾力打造的鸿蒙 NEXT SDK,为鸿蒙应用提供了业界领先的全链路监控解决方案。这不仅仅是一个 SDK,更是您洞察用户体验、优化应用性能的智能伙伴。

作者:杨兰馨(楠瑆)


01 背景介绍


2024 年 10 月 22 日,华为在原生鸿蒙之夜正式发布 HarmonyOS NEXT(版本号 5.0.0,API 12 起)。与此前 HarmonyOS 3.1/4.0 的“双框架、双生态”过渡形态不同,NEXT 直接挥别 Android 开源项目(Android Open Source Project,AOSP),全面切换至自研鸿蒙内核,成为真正意义上的“纯鸿蒙”。


1. 三大关键词读懂 NEXT

  • 纯血:零 AOSP 代码,统一鸿蒙内核 + ArkTS 语法链,彻底去除 Android 兼容包袱。
  • 极速:方舟编译器在编译阶段直接将代码翻译为机器码,极大提升了系统运行效率。
  • 极简:一次开发、多端部署,1(手机)+8(平板、穿戴、车机等)+N(IoT 泛生态)覆盖全场景。

1758678893921_9C607D22-89EF-481e-884B-09D5A7DAF516.png

2. 开发底座全景

  • 开发 IDE:DevEco Studio(JetBrains 内核),实现可视化多端预览。
  • 开发语言:ArkTS 语言,在 TypeScript 语言基础上,强化静态类型检查,增强并发能力。

1758678953644_37B65F28-62B5-40f0-ABBE-6165A7986498.png

  • 编译方式:传统的 JS 程序开发中,应用程序往往带的是经过前端打包工具处理过的 JS bundle 文件,在程序运行阶段进行解释执行;这种运行方式需要设备有强大的计算能力。鸿蒙系统能够支持的设备范围广泛,覆盖从低端的 IoT 设备到高性能手机设备。采用传统的方式,无法保证多类型设备的体验一致性。在鸿蒙开发环境中,应用代码是通过前端编译器完成编译的。前端编译器按照语言规范解析源代码,编译成方舟运行时能够理解的二进制字节码格式 ,最后打包到应用中。

1758678966350_20F2DCE9-4F93-4ff4-819F-7C1ACCCDFE90.png

  • 编译产物:针对不同的部署态需求,模块的编译结果有三种目标形态。
  • HAR(HarmonyOS Archive):这是一种中间编译产物格式,它最终将被编译合并到 HSP 或 HAP 格式的包中。
  • HSP(HarmonyOS Shared Package):HSP 使得模块可以以运行态复用的形式共享。相较于 HAR,当有多个 HAP 包依赖与同一个 HSP 时,最终的打包产物中,HSP 只会存在一份。
  • HAP(HarmonyOS Ability Package):HAP 包是鸿蒙应用可单独安装的容器包。同一个 HAP 包可以支持在多个设备上运行。一次开发上架,多端分发、部署的效果。

1758678984011_59338876-2EC4-4a95-85D0-19993C32AB75.png

3. 系统级开放能力图谱

  • 应用框架:提供应用程序开发的基础设施,如运行时、引擎、框架等相关开放能力。
  • 应用服务:提供应用程序开发的核心功能和服务,包括推送消息,认证登录,支付等开放能力。
  • 媒体:存储、处理、传输视频、音频、图片等多媒体内容的相关开放能力。
  • 图形:渲染、显示和交互的图形技术,包括 2D 和 3D 图形、动画、游戏等相关的开放能力。
  • AI:机器学习、深度学习、自然语言处理、计算机视觉等相关的开放能力。
  • 系统:通信、安全、驱动程序、DFX、诊断和测试等相关的开放能力。

1758679018341_3EC8FBF3-FCF4-41cc-BED7-887A4F954663.png

至此,鸿蒙 NEXT 的基础轮廓已清晰——它不仅是手机 OS,更是面向万物智联时代的原生神经系统。随着鸿蒙 NEXT 生态系统的蓬勃发展,应用性能监控变得愈发重要。阿里云 ARMS 团队倾力打造的鸿蒙 NEXT SDK,为鸿蒙应用提供了业界领先的全链路监控解决方案。这不仅仅是一个 SDK,更是您洞察用户体验、优化应用性能的智能伙伴。


02 HarmonyOS SDK 架构与设计


1. SDK 整体架构

1758679056990_BAC87B50-C393-4337-8D40-958F12F320F0.png

  • 接口层:最上层,对外暴露,供客户调用的 API。
  • 功能层:数据采集,具体包含 网络、交互、应用、卡顿、崩溃、自定义、Webview、页面等模块。
  • 核心层:基础服务,工具类,日志,时间,数据协议。会话管理,配置管理,OT的扩展层。
  • 依赖:Opentelemetry-ts/js,pako 做压缩。


2. 如何进行会话管理

首先明确会话的概念,会话是指一个用户在进入宿主 APP 到退出宿主 APP,这段时间内发生的行为轨迹。具体会话管理的原理:在应用启动时,就开始会话,将会话唯一ID(SessionID)写入全局变量中,在产生事件时,将当前的 SessionID 写入 Event 的指标中。

image.png

也就是说,会话是 SDK 用来串联管理用户行为轨迹的一种手段。开发者可以通过在控制台查看会话轨迹,明确用户在 APP 的操作行为上下文,进而展开多种角度的分析。当用户直接杀死应用或者后台切换时间大于 60s 时,开启新的会话。


3. 数据采集方案设计

针对不同场景的数据采集,SDK 根据鸿蒙系统的特性采用了不同的采集方案。整体采取了下面三种无感知采集方案。


方案1:鸿蒙系统级 API 助力

正如前文提到,鸿蒙系统提供了一些 Kit 能力,我们主要借助系统 Kit 中的性能分析服务(Performance Analysis Kit)的 HiAppEvent 能力,对异常、卡顿、启动时间进行采集。通俗地讲,就是该 API 提供了对系统事件的订阅能力,我们主要在订阅事件发生时的回调函数中,进行数据采集等操作。


HiAppEvent 提供了订阅应用事件和系统事件的能力,系统事件主要是指应用运行期间发生的性能、功耗、稳定性等问题。SDK 关心的异常事件、卡顿事件、启动事件都属于系统事件的范畴。下面以崩溃事件为例,HiAppEvent 提供了检测 NativeCrash 和 JsError 类型崩溃的能力,在系统完成崩溃信息收集后,进行事件生成与事件上报,SDK 只关心事件上报后的操作,并且根据上报的 params 的属性进行数据分析与处理,最后进行数据上报。下图展示了崩溃事件的采集原理。

1758679136682_D2263993-5C14-4216-9410-5C92B2D621A2.png

方案2:监听 UI 组件的生命周期

具有生命周期跨度的事件,SDK 通过监听生命周期实现采集。以 NavDestination 组件为例,UiContext 提供了 UiObserver 的能力,其中的接口 on(type: 'navDestinationSwitch', callback: Callback): void 提供了对 Navigation 的页面切换事件的监听能力。在 SDK 初始化时,注册监听,并且构造数据处理的回调函数,在不同生命周期的进行不同的数据处理。


如下图所示,以页面停留时长为例,可以通过 onHidden 的时间节点和 onShown 的时间节点的差值计算。值得一提的是,在需要取消 navDestinationSwitch 监听的时候,需要指定取消对应回调函数的监听。否则,会导致全局所有关于 navDestinationSwitch 的监听都会失效,这样可能会造成 APP 某些功能失效。

1758679163024_FB81D40F-6A99-43bc-AC5C-5381E5B5E1DC.png

方案3:结合 Hvigorw 插件实现编译时替换 (AOP)

在数据采集过程中,有一些事件系统并未提供对其的监听能力,也不具备完备的生命周期的监听能力。为了做到无感知的数据采集,SDK 采用 AOP 的理念,在代码编译时,实现无感知插桩。插件的开发整体思路参考了货拉拉的开源方案:https://github.com/HuolalaTech/AspectPro/tree/master,实现在代码编译过程中的代码替换。

1758679184969_4B630810-36A9-4090-9538-6FC4EF79975A.png

以网络框架 ohos.net.http 为例,每一个 httpRequest 对应一个 HTTP 请求任务。SDK 对关键代码 http.createHttp() 进行插桩,添加关键处理逻辑,记录网络成功/失败的性能指标,进而生成 Network Span,从而上报数据。


03 结语


在鸿蒙 NEXT 的新时代,阿里云 ARMS RUM SDK 作为一款性能体验监控工具,可以作为辅助 APP 运维强有力的助手。ARMS RUM 鸿蒙 NEXT SDK 已经发布正式版本,可以参考接入文档[1]体验使用。相关问题可以加入“RUM 用户体验监控支持群”(钉钉群号: 67370002064进行咨询。

参考资料:

华为官方开发指南

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-global-interface

鸿蒙生态应用开发白皮书

https://developer.huawei.com/consumer/cn/doc/guidebook/harmonyecoapp-guidebook-0000001761818040


相关链接:

[1] 接入鸿蒙应用

https://help.aliyun.com/zh/arms/user-experience-monitoring/access-harmonyos-application

相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
相关文章
|
24天前
|
数据采集 监控 API
移动端性能监控探索:iOS RUM SDK 技术架构与实践
阿里云 RUM SDK 作为一款性能体验监控采集工具,可以作为辅助 App 运维的强有力助手,提升您的问题排查效率。
151 11
|
21天前
|
存储 缓存 安全
某鱼电商接口架构深度剖析:从稳定性到高性能的技术密码
某鱼电商接口架构揭秘:分层解耦、安全加固、性能优化三维设计,实现200ms内响应、故障率低于0.1%。详解三层架构、多引擎存储、异步发布、WebSocket通信与全链路防护,助力开发者突破电商接口“三难”困境。
|
1月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
|
1月前
|
监控 数据可视化 数据库
低代码的系统化演进:从工具逻辑到平台架构的技术解读
低代码正从开发工具演变为支撑企业架构的智能平台,融合可视化开发、AI引擎与开放生态,实现高效构建、自动化运维与跨场景协同,推动数字化转型迈向智能化、系统化新阶段。
|
1月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
281 2
|
2月前
|
Cloud Native API 开发者
Gemini 2.5 Flash 技术拆解:从 MoE 架构到阿里云生态落地指南
2025年9月,谷歌Gemini 2.5 Flash发布,性能提升5%、成本降24%,引发行业关注。其MoE架构、百万上下文与“思考”范式,助力阿里云开发者高效构建云原生应用。本文解析技术内核,结合汽车、物流等案例,提供落地指南与避坑建议,展望大模型与流计算融合前景。
295 6
|
28天前
|
存储 人工智能 搜索推荐
拔俗AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教融合大语言模型、教育知识图谱、多模态感知与智能体技术,重构“教、学、评、辅”全链路。通过微调LLM、精准诊断错因、多模态交互与自主任务规划,实现个性化教学。轻量化部署与隐私保护设计保障落地安全,未来将向情感感知与教育深度协同演进。(238字)
|
2月前
|
JSON 供应链 监控
1688商品详情API技术深度解析:从接口架构到数据融合实战
1688商品详情API(item_get接口)可通过商品ID获取标题、价格、库存、SKU等核心数据,适用于价格监控、供应链管理等场景。支持JSON格式返回,需企业认证。Python示例展示如何调用接口获取商品信息。
|
2月前
|
数据可视化 前端开发 数据管理
什么是低代码?一文看懂:低代码技术的发展历程及技术架构
低代码开发平台通过可视化界面与组件化设计,大幅降低编程门槛,使开发者无需大量编码即可快速构建应用。它具备可视化开发、预制组件、低技术门槛及全流程支持等核心特征,适用于业务流程自动化、数据管理、客户关系管理等多种场景。自萌芽期至今,低代码不断演进,成为企业数字化转型的重要工具,显著提升开发效率、降低成本,并推动全民开发者时代的到来。
635 0
什么是低代码?一文看懂:低代码技术的发展历程及技术架构

热门文章

最新文章

下一篇