故障排查¶
初始化后无数据¶
依次检查:
- 必须使用 Android 或 iOS 原生构建,浏览器预览和 Web 构建不会上报。
- 确认已执行
npx --no-install guance-cocos install --project .,重新打开 Cocos Creator 并启用guance-cocos-sdk扩展。 - 升级或重新安装 npm 包后,必须重新生成原生工程。
- 确认
datakitUrl,或datawayUrl与clientToken配置正确。 - Android 必须提供
androidAppId,iOS 必须提供iosAppId。 - 初始化阶段设置
debug: true,检查 Cocos 和原生日志。 - 确认
sampleRate不为0。 - 如使用本地环境部署,继续排查 DataKit 无数据问题。
安装器提示找不到 Cocos 项目¶
如果出现:
--project 必须指向包含 assets 目录的 Cocos 项目根目录:
使用了错误的 Creator 入口¶
Creator 2 和 Creator 3 使用同一个 @cloudcare/cocos-sdk npm 包,但导入入口不同:
- Creator 2:
@cloudcare/cocos-sdk/creator2 - Creator 3:
@cloudcare/cocos-sdk/creator3
修改导入入口后,重新运行安装器并生成原生工程。如果安装器无法识别 Creator 版本,显式传入 --creator 2 或 --creator 3。
Android Bridge 或依赖错误¶
出现 ClassNotFoundException、FTCocosBridge 找不到或原生 SDK 类缺失时:
- 确认生成工程包含
cocos-sdk-native/android。 - 检查应用模块
build.gradle中是否存在COCOS_SDK_BEGIN标记块。 - 确认 Gradle 可以访问
https://mvnrepo.guance.com/repository/maven-releases。 - 确认 AndroidX 已启用。
- 确认 Compile SDK 与 Build Tools 不低于 34,Min SDK 不低于 21。
- 重新运行安装器并重新生成工程,不要只复用旧的 Native 工程。
iOS Bridge 或 CocoaPods 错误¶
以下检查适用于使用 CocoaPods 的工程:
- 确认生成工程包含
cocos-sdk-native/ios。 - 确认
Podfile中存在pod 'FTCocosBridge'。 - 在
Podfile所在目录重新执行pod install。 - 使用
.xcworkspace,不要使用.xcodeproj。 - 清理 Xcode Build Folder 后重新构建。
Creator 2 工程的 iOS 最低版本会被提升到 12.0;Xcode 15 兼容链接参数由构建扩展自动写入生成配置。
iOS SPM 配置未生效或构建失败¶
- 确认已安装
0.1.0-alpha.5或更高版本的 SDK 包,并重新运行安装器更新 Creator 扩展;功能可用性见 SPM 接入说明。 - 确认
cocos-sdk.config.json位于 Cocos 项目根目录,且ios.dependencyManager为spm,随后重新生成 iOS 工程。 - 检查生成目录中的
cocos-sdk-native/FTCocosBridge/Package.swift,以及应用 target 的FTCocosBridge包依赖。首次解析失败时,确认 Xcode 能访问清单中的 Git 仓库和版本标签。 - 若提示手动声明的 SDK Pod 或其他 Pod 仍依赖同一原生 SDK,先完成这些依赖的迁移。若更新已有 Pods 失败,检查本机
pod命令和错误信息后重试。 - Creator 3 若提示旧式构建位置不支持 Packages,或 CMake 重生成后包引用丢失,重新运行更新后的 Creator 构建扩展;扩展会调整构建位置设置,并在 Xcode 触发 CMake 重生成后恢复 SPM 集成。
- 全新 SPM 工程打开
.xcodeproj;宿主还有其他 Pods 时继续使用.xcworkspace。请勿手动添加第二份 Bridge 或原生 SDK 来解决链接错误。
有 RUM,但没有 View¶
- 开启
autoTrack.scenes: true;或 - 在业务场景进入时调用
guanceSdk.rum.startView(),离开时调用stopView()。
初始化时间晚于首个场景启动时,可能错过场景事件。应在首个采集场景前初始化。
自动 Action 或 Error 不生效¶
Action:
- 确认
autoTrack.actions: true; - 确认交互最终触发全局
TOUCH_END; - 自定义输入系统或吞掉全局事件的组件需要手动调用 Action API。
Error:
- 确认
autoTrack.errors: true; - 当前运行时必须提供全局
addEventListener; - 已被业务
try/catch捕获的异常需要手动调用addError()。
Log 无数据或没有 RUM 关联¶
- 初始化
logger并设置enableCustomLog: true。 - 检查
sampleRate和logLevelFilters。 - Console 采集还需要
autoTrack.console: true。 - RUM 关联需要
enableLinkRumData: true、有效 RUM Session 和当前 View。 - 早于首个 View 产生的日志可能没有 View 关联。
Trace Header 为空¶
- 确认已初始化
trace。 - URL 不能为空且必须是 Native SDK 可处理的有效 URL。
- 检查 Trace 采样率。
- 不支持平台会返回空对象。
- 自动注入只覆盖运行时提供的
fetch和XMLHttpRequest。
网络数据重复¶
检查是否同时开启:
autoTrack.network与enableNativeUserResource;autoTrack.network与enableNativeAutoTrace;- 自动网络采集与业务手动 Resource/Trace。
对同一请求栈保留一种采集路径,再比较 RUM Resource 数量与请求头。
Android 推荐保留 JS 网络采集,并保持原生 setEnableHttpURLConnectionResource(false);enableNativeUserResource 是总开关,不会单独开启 HttpURLConnection 采集。参见 Android 网络采集建议。
iOS 需区分 Creator 2 的 NSURLConnection 与 Creator 3.8.8 的 NSURLSession。前者从 iOS SDK 1.6.8-alpha.5 开始通过独立开关启用,后者由原有开关控制;任一路径与 JS 自动或手动 Resource 同时采集都可能重复。参见 iOS 网络采集建议。
Replay 包或原生集成缺失¶
从 0.1.0-alpha.6 起,Replay 需要独立 npm 包、代码组合和原生集成三步:
npm install @cloudcare/cocos-sdk @cloudcare/cocos-session-replay
npx --no-install guance-cocos install --project . --replay
随后重新生成并编译原生工程;使用 CocoaPods 时执行 pod install。代码使用 withSessionReplay(baseSdk) 返回的实例,参见拆包迁移。
| 提示或现象 | 处理方式 |
|---|---|
Cannot find module '@cloudcare/cocos-session-replay/...' / Session Replay is not installed |
在当前 Cocos 项目安装与基础包完全同版本的 Replay 包 |
Session Replay requires @cloudcare/cocos-session-replay |
在基础实例初始化之前调用 withSessionReplay(),将 replay 配置传给组合后的实例 |
SDK extension version or Creator engine does not match the base SDK |
核对两个包版本完全相同,导入入口均为 /creator2 或均为 /creator3 |
Install SDK extensions before start() or attach() |
将组合调用提前到 SDK 启动或 Hybrid 绑定之前 |
Session Replay native integration is unavailable |
运行安装器 --replay 并重新构建;Hybrid 项目还需确认原生宿主已初始化兼容版本的 SDK |
基础包不再导出 setReplayCamera |
改用组合后实例的 guanceSdk.setReplayCamera(camera) |
安装器检测到被本地修改的 SDK 文件时会停止并提示具体路径。先备份并核对这些定制修改,再重新安装;不要直接删除场景引用的 ReplayPrivacy.ts 或 .meta。
Session Replay 没有画面¶
- 确认已初始化 RUM 且当前存在有效 View。
- 确认场景中存在 Camera,或调用
guanceSdk.setReplayCamera()。 - 确认 Replay 与 RUM 的采样率不为
0。 - 静止画面会被判定为重复帧并跳过。
- 检查控制台是否出现捕获停止错误。
- 按SDK 版本与依赖要求检查 Session Replay 原生依赖,并重新生成、编译原生工程。
Creator 3 Replay 画面或触摸异常¶
0.1.0-alpha.7修复显示 Camera 受截帧影响、UI 控件消费的触摸在 Replay 中遗漏,以及 Replay 采集影响正常输入分发的问题。按升级步骤更新两个 npm 包并重新构建。
- 确认使用组合后的
guanceSdk.setReplayCamera(camera)指定所需 Camera;SDK 只采集一个 Camera,不合成多个 Camera 的画面。 - Replay 没有触摸位置时,检查
touchPrivacy是否显式设置为show;默认hide不记录位置。autoTrack.actions与 Replay 触摸采集独立。 - 在按钮、摇杆和空白区域分别验证业务响应及 Replay 记录。避免为补偿旧版触摸遗漏而重复调用业务输入逻辑。
- 图片缩小后,核对触摸及遮罩与显示坐标一致;不要把编码图片的尺寸直接当成游戏显示尺寸。
初始化参数抛出异常¶
| 错误 | 原因 |
|---|---|
Configure datakitUrl or datawayUrl with clientToken |
未配置有效上报地址 |
... must be between 0 and 1 |
RUM、Log、Trace 或 Replay 采样率越界 |
captureFps must be an integer between 1 and 5 |
Replay FPS 不是 1–5 的整数 |
maxImageDimension must be between 1 and 2048 |
Replay 最长边越界 |
... must not be empty |
View、Action、Resource Key 或 Trace URL 等必填字符串为空 |
性能问题¶
- Session Replay 从
captureFps: 1、maxImageDimension: 720开始。 - 不需要时关闭 Console 自动采集。
- 避免在日志和事件属性中传入大型对象。
- 只启用需要的 Native 监控指标。
- 检查是否存在重复网络采集。
关闭 SDK 后不再采集¶
guanceSdk.shutdown() 会移除自动监听、停止 Session Replay 并关闭 Native SDK。关闭后不要继续调用采集方法;如需重新启用,建议重新启动应用并完成一次初始化。