Datadog移动端会话重放异常:Android Compose应用录屏白屏
解决Datadog Session Replay在Android Compose应用中白屏的问题
以下是针对该问题的具体排查和解决步骤:
引入Compose专用集成库
Datadog Session Replay对Compose UI需要额外的集成支持,仅依赖基础Session Replay库无法捕获Compose界面内容。需在Module级别的build.gradle中添加Compose集成依赖,且所有Datadog SDK版本必须完全一致:dependencies { // 确保所有Datadog SDK版本统一 implementation "com.datadoghq:dd-sdk-android:${datadog_version}" implementation "com.datadoghq:dd-sdk-android-rum:${datadog_version}" implementation "com.datadoghq:dd-sdk-android-session-replay:${datadog_version}" // 关键:添加Compose集成库 implementation "com.datadoghq:dd-sdk-android-compose:${datadog_version}" }在Compose层级添加Datadog Provider
在承载Compose内容的Activity中,必须用DatadogCompositionLocalsProvider包裹Compose根内容,确保Session Replay能正确捕获Compose界面元素:class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 初始化顺序:Datadog Agent → RUM → Session Replay val sessionReplayConfig = SessionReplayConfiguration.Builder(80) .build() SessionReplay.enable(sessionReplayConfig) setContent { DatadogCompositionLocalsProvider { YourAppTheme { Surface(modifier = Modifier.fillMaxSize()) { // 你的Compose界面代码 } } } } } }检查SDK版本一致性
所有Datadog相关SDK的版本号必须完全匹配,小版本不一致会引发兼容性问题,导致界面捕获失败。确认隐私配置未过度屏蔽
若SessionReplayConfiguration设置了PrivacyMode.MASK_ALL,会导致所有界面内容被屏蔽为白屏,建议使用默认的PrivacyMode.MASK_USER_INPUT或按需调整:val sessionReplayConfig = SessionReplayConfiguration.Builder(80) .setPrivacyMode(PrivacyMode.MASK_USER_INPUT) .build()验证初始化顺序
必须严格遵循「初始化Datadog Agent → 初始化RUM → 启用Session Replay」的顺序,顺序错误会导致Session Replay无法正常工作。
内容的提问来源于stack exchange,提问作者YannickC
相关产品推荐
相关产品推荐

