Skip to main content
本文介绍 Flutter SDK 的进阶配置项。所有配置都通过 DatadogConfigurationDatadogRumConfiguration 传入。

采样率

隐私同意

TrackingConsent 控制是否采集与上报数据,适配 GDPR 等合规要求:

事件过滤与脱敏

事件映射器在事件上报前执行,返回 null 丢弃事件,或修改后返回。可用于脱敏敏感字段、去除噪声、重命名视图。

分布式追踪

firstPartyHosts 命中的域名,SDK 会注入 W3C traceparent,实现前端 RUM 与后端 APM 的链路关联。追踪需要配合网络采集(enableHttpTracking())。

自定义上报地址

私有化部署时,通过 customEndpoint 覆盖默认上报地址:
customEndpoint 是最终的 RUM intake URL,不是仅包含协议和域名的基础地址。它必须包含 /api/v2/rum;如果部署在路径前缀下,还需要保留该前缀,例如 https://example.com/flashduty/api/v2/rum

WebView 追踪

Flutter 页面内嵌 WebView 时,可通过 flashcat_webview_tracking 把 WebView 中的 Browser RUM 事件关联到当前原生 RUM 会话。
pubspec.yaml
传给 trackDatadogEvents 的是允许关联的主机名列表。主机名会匹配其子域名,但不支持通配符。WebView 加载的页面必须已经接入 Flashduty Browser SDK;Android 还必须启用 JavaScriptMode.unrestricted,否则无法建立关联。

符号文件上传

要把崩溃与错误堆栈还原到源码位置,需要上传符号文件。Flutter 应用可能同时包含 Dart 与原生帧:
iOS 的 Dart 堆栈暂不支持符号化。 Flutter 为 Apple 平台生成的符号文件是 Mach-O 格式,平台当前只能解析 Android 侧的 ELF 格式,因此 iOS 的 .symbols 上传会被拒绝。iOS 原生崩溃不受影响,上传 dSYM 即可符号化。如果你的应用同时发布 iOS 和 Android,--obfuscate 仍可开启:Android 的 Dart 堆栈会正常还原,iOS 的 Dart 堆栈则保持混淆状态。若 iOS 的可读堆栈更重要,则该端构建时不要开启 --obfuscate
使用 FlashCat CLI 上传符号文件:
符号文件与崩溃事件是通过构建产物的 build ID 关联的,servicerelease-version 不参与匹配。因此二者与 SDK 初始化值不一致时,符号解析依然正常,只影响控制台「源码映射」列表中的归类与筛选。建议仍保持一致——尤其注意 Flutter 的构建号后缀(如 1.2.3+45)容易造成两边不一致。真正必须对上的是 build ID:--split-debug-info 产出的 app.<platform>-<arch>.symbols、APK 内 libapp.so、以及控制台「源码映射 → Flutter」列表中的 Build ID 三者必须相同。每次改动 Dart 代码都会生成新的 build ID,所以符号上传必须纳入每一次发布构建,否则该版本的堆栈会静默退化为不解析。

其他配置