XuqmGroup-AndroidSDK/sdk-bugcollect/README.md
XuqmGroup c8a482a5c0 refactor: sdk-log → sdk-bugcollect
- 目录/包名/类名/Gradle plugin 全部重命名
- XLog → BugCollect
- logApiUrl/logEnabled → bugCollectApiUrl/bugCollectEnabled
- assembleDebug 通过

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 17:39:23 +08:00

56 行
1.7 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# sdk-bugcollect
XuqmGroup Android SDK Bug 采集模块。提供错误采集、Crash 捕获、漏斗分析能力。
## 依赖
```kotlin
implementation("com.xuqm:sdk-bugcollect:VERSION")
implementation("com.xuqm:sdk-core:VERSION") // 必须
```
## 快速开始
```kotlin
// 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
```kotlin
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 传入。