From a574ecdead62b9bf00adccb79f265159e7861cfc Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Thu, 11 Jun 2026 19:30:59 +0800 Subject: [PATCH] fix(update): surface API errors instead of silently returning null - Log exception details (url/appKey/versionCode/userId) when checkUpdate fails - Log warning + debug messages around awaitInitialization - Helps diagnose SDK vs old private-server API incompatibilities Co-Authored-By: Claude Sonnet 4.6 --- .../src/main/java/com/xuqm/sdk/update/UpdateSDK.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sdk-update/src/main/java/com/xuqm/sdk/update/UpdateSDK.kt b/sdk-update/src/main/java/com/xuqm/sdk/update/UpdateSDK.kt index 7074666..09eb4b2 100644 --- a/sdk-update/src/main/java/com/xuqm/sdk/update/UpdateSDK.kt +++ b/sdk-update/src/main/java/com/xuqm/sdk/update/UpdateSDK.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import android.net.Uri import android.os.Build +import android.util.Log import androidx.core.content.FileProvider import com.xuqm.sdk.XuqmSDK import com.xuqm.sdk.file.FileSDK @@ -152,6 +153,7 @@ object UpdateSDK { packageInfo.versionCode } val userId = resolveUserId() + val url = ServiceEndpointRegistry.updateBaseUrl runCatching { api.checkUpdate(XuqmSDK.appKey, "ANDROID", versionCode, userId).data?.let { info -> val normalized = info.copy(downloadUrl = normalizeDownloadUrl(info.downloadUrl) ?: info.downloadUrl) @@ -171,16 +173,24 @@ object UpdateSDK { afterIgnore } } + }.onFailure { e -> + Log.e("UpdateSDK", "checkUpdate failed [url=$url appKey=${XuqmSDK.appKey} versionCode=$versionCode userId=$userId]: ${e.message}", e) }.getOrNull() } private suspend fun awaitInitialization() { if (XuqmSDK.isInitialized()) return + Log.w("UpdateSDK", "XuqmSDK not yet initialized, waiting up to 15s...") kotlinx.coroutines.withTimeoutOrNull(15_000L) { while (!XuqmSDK.isInitialized()) { kotlinx.coroutines.delay(100) } - } ?: throw IllegalStateException("XuqmSDK not initialized. Check that config.xuqm is present and valid.") + } ?: run { + val msg = "XuqmSDK init timeout (15s). Check that config.xuqm is present and package name matches." + Log.e("UpdateSDK", msg) + throw IllegalStateException(msg) + } + Log.d("UpdateSDK", "XuqmSDK initialized, proceeding with update check") } // ─────────────────────────────────────────────────────────────────────────