diff --git a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt index 9b98ab9..04f1115 100644 --- a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt +++ b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt @@ -62,6 +62,34 @@ object BugCollect { } fun captureError(error: Throwable, tags: Map = emptyMap(), fingerprint: String? = null) { + // SDK 未初始化时,将错误加入待处理队列 + if (!XuqmSDK.isInitialized()) { + val event = IssueEvent( + level = "error", + platform = "android", + fingerprint = fingerprint ?: Fingerprint.compute( + error.javaClass.simpleName, + error.message ?: error.javaClass.name, + error.stackTraceToString(), + ), + appKey = "pending", + exception = IssueEvent.ExceptionInfo( + type = error.javaClass.simpleName, + value = error.message ?: error.javaClass.name, + stacktrace = error.stackTraceToString(), + ), + breadcrumbs = emptyList(), + release = appVersion(), + environment = environment, + userId = "unknown", + user = IssueEvent.UserInfo(id = "unknown"), + device = buildDeviceInfo(), + tags = tags, + ) + synchronized(pendingErrorsLock) { pendingErrors.add(event) } + return + } + val crumbs = synchronized(breadcrumbLock) { breadcrumbBuffer.toList() } val fp = fingerprint ?: Fingerprint.compute( error.javaClass.simpleName, @@ -95,7 +123,8 @@ object BugCollect { } fun captureCrash(error: Throwable, tags: Map = emptyMap()) { - if (!isReady()) return + // SDK 未初始化时直接返回,崩溃事件无法缓存 + if (!XuqmSDK.isInitialized() || !isReady()) return val crumbs = synchronized(breadcrumbLock) { breadcrumbBuffer.toList() } queue().push(IssueEvent( level = "fatal",