跳转到主要内容
本文说明 HarmonyOS SDK 的支持范围和当前限制,帮助你在接入前判断工程是否满足要求。

支持范围

项目支持情况
工程模型HarmonyOS NEXT / Stage 模型 ArkTS 工程
SDK 形态HAR 模块,通过 @flashcatcloud/* 包导入
RUM 数据源事件固定写入 source: "harmony"
设备类型SDK HAR 模块声明支持 defaultphonetablet2in1tvwearablecar
运行时初始化推荐在 AbilityStage.onCreate 中初始化一次
数据上报@kit.NetworkKitPOST /api/v2/rum

模块和能力

模块包名说明
Core@flashcatcloud/core初始化、配置、上下文、用户信息、隐私同意、持久化和上传
RUM@flashcatcloud/rumview、action、resource、error 和 session
Trace@flashcatcloud/traceW3C traceparent / tracestate 注入、RUM resource 关联、FlashcatHttp 包装器
Crash@flashcatcloud/crashAPP_CRASHAPP_FREEZE 采集,并作为 RUM crash error 上报
Hvigor plugin@flashcatcloud/hvigor-plugin上传 ArkTS sourcemap、nameCache.json 和 Native .so 符号

权限要求

宿主应用需要允许 SDK 访问网络上报地址。
module.json5
{
  module: {
    requestPermissions: [
      {
        name: "ohos.permission.INTERNET"
      }
    ]
  }
}
如果你的应用自身需要读取网络状态,也可以声明 ohos.permission.GET_NETWORK_INFO。当前 SDK 的事件上下文尚未自动订阅网络状态变化,因此该权限不是 RUM 上报的必需条件。

Kit 依赖

SDK 源码使用以下 HarmonyOS Kit:
Kit使用场景
@kit.AbilityKit获取应用上下文、bundle 信息、异常监听、应用前后台状态
@kit.BasicServicesKit读取设备品牌、型号、系统版本、API level 和设备类型
@kit.NetworkKit批量上报 RUM 数据,FlashcatHttp 包装网络请求
@kit.RemoteCommunicationKitrcp 拦截器注入 Trace header 并记录 resource
@kit.ArkUI监听 routerPageUpdate,记录自动 view
@kit.PerformanceAnalysisKit监听 hiAppEvent 崩溃和卡死事件,输出 HiLog
@kit.BackgroundTasksKit注册 WorkScheduler 延迟上传任务

初始化顺序

请按以下顺序启用 SDK:
  1. 调用 Flashcat.initialize(...) 创建核心实例
  2. 调用 FlashcatRum.enable(...) 启用 RUM
  3. 调用 FlashcatTrace.enable(...) 启用 Trace
  4. 调用 FlashcatCrash.enable(...) 启用 Crash
Crash 事件通过 RUM feature 写入。请不要在未启用 RUM 的情况下只启用 @flashcatcloud/crash,否则收到的崩溃回放不会产生 RUM error。

支持的自动采集

能力支持情况说明
自动 view支持需要启用 setTrackNavigation(true) 并调用 FlashcatRum.startViewTracking(context)
自动 tap支持显式包装需要启用 setTrackUserInteractions(true) 并在点击处理器中调用 FlashcatRum.trackTap(target)
自动 resource支持通过 rcp 拦截器或 FlashcatHttp 包装器采集
未捕获异常支持通过 errorManager.on('error') 采集
崩溃和卡死支持通过 hiAppEvent 下一次启动回放
Trace 关联支持注入 W3C traceparenttracestate,并在 RUM resource 中写入 _dd.trace_id / _dd.span_id

当前限制

限制说明
导航范围自动 view 当前监听 ArkUI routerPageUpdateNavigation / NavDestination 需要手动 view 或额外封装
点击范围SDK 不会自动遍历所有组件;你需要在按钮或公共点击处理器中调用 FlashcatRum.trackTap()
网络范围只有使用 rcp 拦截器、FlashcatHttp 或手动 resource API 的请求会被采集
Resource 生命周期resource 需要在活跃 view 内结束;view 关闭时仍未结束的 resource 会被丢弃
并发 resource单个 view 最多保留 100 个进行中的 resource
rcp host 限制setFirstPartyHosts() 当前只作用于 FlashcatHttprcp session 添加拦截器后会对该 session 的请求注入 Trace header;请求已带有 traceparent 时不会覆盖
崩溃时机HarmonyOS 系统在下一次启动回放崩溃和卡死事件,不会在崩溃进程中同步上报
网络状态connectivity.status 当前为 unknown
Session Replay当前不支持
页面性能指标当前不自动采集 HarmonyOS 页面渲染性能指标
FrustrationsetTrackFrustrations() 是保留开关,当前不生成 frustration 事件

符号解析兼容性

HarmonyOS 崩溃栈可能同时包含 ArkTS / JS 帧和 Native .so 帧。服务端会按以下方式解析:
栈帧类型解析方式所需上传文件
ArkTS / JS使用 HarmonyOS sourceMaps.map 还原源文件、函数名和行列号sourceMaps.map,混淆构建可附加 nameCache.json
Native C/C++复用 Native 符号解析管道,通过 build_id、架构和 .so 名称匹配未 strip 的 .so 文件,需包含 GNU build-id
请在发布构建流程中上传符号文件,并确保 serviceversion 与 SDK 初始化和 RUM 事件中的值一致。否则控制台可以收到崩溃事件,但无法把栈帧还原到源码位置。