From 04eb0d13d38eb3a13595cb9ed6679ab953d074c9 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Fri, 19 Jun 2026 02:05:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20BugCollect.captureError=20=E5=9C=A8=20SD?= =?UTF-8?q?K=20=E6=9C=AA=E5=88=9D=E5=A7=8B=E5=8C=96=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - captureError 检查 XuqmSDK.isInitialized() 再访问 appKey - SDK 未初始化时将错误加入待处理队列,初始化后自动 flush - captureCrash 也添加 isInitialized 检查 Co-Authored-By: Claude --- .../com/xuqm/sdk/bugcollect/BugCollect.kt | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) 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",