- Gradle 插件在配置阶段生成 yyyyMMddHHmmss 格式的 buildId,通过 BuildConfig.XUQM_BUILD_ID 注入 APK,并作为 buildId 字段上传 sourcemap - SDK 通过反射读取 BuildConfig.XUQM_BUILD_ID,在所有事件 (captureError/captureCrash/warn) 的 IssueEvent 中携带 buildId - LogUploader 序列化时将 buildId 写入上报 JSON - IssueEvent 新增 buildId 可选字段 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src/main | ||
| build.gradle.kts | ||
| README.md | ||
sdk-bugcollect
XuqmGroup Android SDK Bug 采集模块。提供错误采集、Crash 捕获、漏斗分析能力。
依赖
implementation("com.xuqm:sdk-bugcollect:VERSION")
implementation("com.xuqm:sdk-core:VERSION") // 必须
快速开始
// Application.onCreate() 中(XuqmSDK.initialize 之后):
BugCollect.setLogLevel(LogLevel.INFO)
BugCollect.setEnvironment("production")
BugCollect.startCrashCapture()
// 业务代码中
BugCollect.event("page_view", mapOf("page" to "home"))
BugCollect.captureError(exception)
API
BugCollect 对象
| API | 说明 |
|---|---|
BugCollect.setLogLevel(level) |
设置日志级别(DEBUG / INFO / WARN / ERROR) |
BugCollect.setEnvironment(env) |
设置环境标签 |
BugCollect.startCrashCapture() |
开启全局 UncaughtExceptionHandler |
BugCollect.event(name, properties?) |
记录自定义事件 |
BugCollect.captureError(error, metadata?) |
上报异常 |
BugCollect.warn(message, metadata?) |
记录警告 |
BugCollect.info(message, metadata?) |
记录信息 |
BugCollect.defineFunnel(id, steps) |
定义漏斗 |
LogLevel
enum class LogLevel { DEBUG, INFO, WARN, ERROR, NONE }
工作原理
- LogQueue:事件进入内存队列,按批次异步上传到
bugCollectApiUrl - CrashCapture:注册
Thread.UncaughtExceptionHandler,捕获 Native Crash 并写入文件,下次启动时上传 - Fingerprint:为错误生成指纹(基于 message + stack),服务端去重聚合
- FunnelTracker:客户端维护漏斗进度,服务端跨 session 聚合
配置
bugCollectApiUrl 和 bugCollectEnabled 由 sdk-core 在 init 后从平台配置自动获取,无需 App 传入。