Skip to main content
本文介绍 HarmonyOS SDK 的核心配置、RUM 配置、隐私控制、Trace 关联、崩溃采集和符号上传。所有配置均来自当前 ArkTS SDK 公开 API。

核心配置

核心配置通过 ConfigurationBuilder 创建,并传给 Flashcat.initialize()
Flashcat.initialize() 同一个实例名只会初始化一次。重复初始化会返回已存在实例,不会重新注册功能模块。

隐私同意状态

初始化时需要传入 TrackingConsent。你也可以在运行时通过 Flashcat.setTrackingConsent() 修改。
Trace header 也受同意状态控制。只有状态为 GRANTED 时,SDK 才会向请求注入可关联的 traceparenttracestate

RUM 配置

RUM 配置通过 RumConfigurationBuilder 创建,并传给 FlashcatRum.enable()

事件过滤和脱敏

setEventMapper() 可以在事件上报前做轻量处理。返回修改后的事件表示继续上报,返回 null 表示丢弃事件。
事件过滤函数运行在 SDK 写入路径上,应保持快速、同步且不抛异常。SDK 会兜底处理异常并保留原始事件,但复杂逻辑会增加端侧开销。

全局属性和用户信息

全局属性会合并到后续事件的 context 对象中。
用户信息通过核心实例设置。idnameemail 会写入后续事件的 usr 对象。
当前 setUserInfo() 仅用于设置 idnameemail。服务端不接收其他用户字段;如需上报业务维度,请使用 RUM 全局属性或单事件属性写入 context

Trace 配置

Trace 模块负责生成 W3C traceparenttracestate,并把生成的 trace id 和 span id 关联到 RUM resource 的 _dd.trace_id_dd.span_id 字段。tracestate 会携带 Datadog vendor entry:dd=s:{0|1};o:rum
当前 setFirstPartyHosts() 只由 FlashcatHttp 包装器使用。rcp 拦截器本身就是每个 session 的显式接入点,因此添加拦截器的 session 会对其请求注入 Trace header。请求已带有 traceparent 时,SDK 不会覆盖已有 Trace 上下文;已有 tracestate 会保留其他 vendor,并把更新后的 dd= 成员放在最前。

崩溃采集配置

Crash 模块通过 HarmonyOS hiAppEvent 监听 APP_CRASHAPP_FREEZE。系统会在下一次启动时回放故障事件,SDK 再通过 RUM error 管道上报。
请在 Flashcat.initialize()FlashcatRum.enable() 之后尽早启用 Crash。Crash 事件通过 RUM feature 写入,如果未启用 RUM,Crash 模块会丢弃收到的崩溃回放。

后台和延迟上传

SDK 默认在前台按 setBatchUploadFrequencyMs() 的间隔上传,并在应用进入后台时触发 flush()。如果需要由 HarmonyOS WorkScheduler 唤醒上传,可以注册延迟上传任务。
SDK 负责注册 WorkScheduler 任务;你的 WorkSchedulerExtensionAbility 被唤醒后,应调用 Flashcat.flushAndWait() 执行有界批量上传。

上传 HarmonyOS 崩溃符号

如需在控制台还原混淆后的 ArkTS 栈和 Native .so 栈,请使用 @flashcatcloud/hvigor-plugin 上传构建产物。 该插件会上传两类文件: 该插件以 npm 包发布(在 npm,不在 ohpm),作为构建期开发依赖安装到工程根目录的 package.json,而不是 oh-package.json5
然后在模块的 hvigorfile.ts 中注册插件:
hvigorfile.ts
flashcatSymbolUploadPlugin() 还接受两个可选参数:buildDir(构建产物目录,默认 build/default)和 pluginVersion(写入上传请求头 DD-EVP-ORIGIN-VERSION 的版本号,默认 0.1.0)。一般无需设置。
发布构建后执行上传任务:
插件会向 {endpoint}/sourcemap/upload 发送 multipart/form-data 上传事件类型:
Native 符号依赖 .so 的 GNU build-id。HarmonyOS NDK 默认会生成 build-id;如果你的构建链路关闭了该能力,请为 .so 增加 -Wl,--build-id