fix(bugcollect): BugCollectInitProvider 对旧版 sdk-core 防御降级
platformUrl 是新增属性,旧版 sdk-core 没有对应的 getPlatformUrl()。 改用 runCatching 包住调用,NoSuchMethodError 时记录警告、跳过崩溃拦截, 不再因版本不一致导致 app 启动崩溃。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
父节点
54b3163f53
当前提交
be8eeba9e1
@ -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 {
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户