diff --git a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/internal/BugCollectInitProvider.kt b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/internal/BugCollectInitProvider.kt index d139c78..0dc9fd1 100644 --- a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/internal/BugCollectInitProvider.kt +++ b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/internal/BugCollectInitProvider.kt @@ -40,7 +40,12 @@ internal class BugCollectInitProvider : ContentProvider() { // ── Phase 1: 立即注册崩溃拦截,落盘不需要远端配置 ────────────────────── val logApiUrl = XuqmSDK.bugCollectApiUrl - ?: (XuqmSDK.platformUrl.trimEnd('/') + "/api/bugcollect/") + ?: deriveFallbackUrl() + + if (logApiUrl.isBlank()) { + Log.w("BugCollect", "Crash capture skipped: no URL available (update sdk-core to latest SNAPSHOT)") + return true + } CrashCapture.start( appContext = ctx, @@ -55,6 +60,17 @@ internal class BugCollectInitProvider : ContentProvider() { return true } + /** + * 从 XuqmSDK.platformUrl 派生兜底地址。 + * 用 try-catch 保护:旧版 sdk-core 没有此属性时返回空串,让调用方跳过。 + */ + private fun deriveFallbackUrl(): String = runCatching { + XuqmSDK.platformUrl.trimEnd('/') + "/api/bugcollect/" + }.getOrElse { e -> + Log.w("BugCollect", "Cannot derive bugcollect URL (sdk-core may be outdated): ${e.message}") + "" + } + private fun uploadAfterInit(ctx: Context) { CoroutineScope(SupervisorJob() + Dispatchers.IO).launch { runCatching {