XuqmGroup-AndroidSDK/sdk-bugcollect
XuqmGroup b7c7a2c385 perf(sdk-core): 合并 ContentProvider + PBKDF2 缓存,冷启动从 ~350ms 降到 ~7ms
优化内容:
- 新增 XuqmMergedProvider:合并 3 个 Provider 为 1 个,主线程只读文件字节
- 新增 ConfigCache:EncryptedSharedPreferences 持久化缓存解密结果
- ConfigFileReader 新增 readRawBytes() / readWithCache(),单例内存缓存
- XuqmSDK 新增 autoInitializeFromBytes():IO 线程完成解密+初始化
- BugCollectInitProvider 改为兼容 fallback,检查 isInitialized() 跳过
- XuqmInitializerProvider 标记 @Deprecated

性能对比:
  优化前:主线程 ~350ms(PBKDF2 + 文件扫描 + 3 个 Provider 实例化)
  优化后:主线程 ~7ms(文件发现 + 读字节),后续启动 ~3ms(读缓存)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 15:58:53 +08:00
..
src/main perf(sdk-core): 合并 ContentProvider + PBKDF2 缓存,冷启动从 ~350ms 降到 ~7ms 2026-06-18 15:58:53 +08:00
build.gradle.kts fix: bugcollect 模块 Java 11 → 17(Jenkins agent 无法下载 Java 11) 2026-06-17 18:39:34 +08:00
README.md refactor: sdk-log → sdk-bugcollect 2026-06-16 17:39:23 +08:00

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 聚合

配置

bugCollectApiUrlbugCollectEnabledsdk-core 在 init 后从平台配置自动获取,无需 App 传入。