From 42b644ac118766d8d54e58ebcb82d5e79ea1adcb Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Fri, 29 May 2026 17:00:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(sdk):=20=E5=AE=8C=E5=96=84=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=E5=92=8C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 XuqmInitializerProvider 中添加 autoInitialize 失败时的错误日志记录 - 在 autoInitialize 方法中添加许可证文件缺失时的详细错误日志 - 添加包名匹配失败时的错误日志记录 - 添加许可证读取成功时的调试日志 - 新增 listAssets 辅助方法用于列出资产目录文件 --- .../src/main/java/com/xuqm/sdk/XuqmSDK.kt | 27 +++++++++++++++++-- .../sdk/internal/XuqmInitializerProvider.kt | 7 +++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt b/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt index c89a48a..1f95be3 100644 --- a/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt +++ b/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt @@ -44,16 +44,36 @@ object XuqmSDK { */ fun autoInitialize(context: Context, logLevel: LogLevel = LogLevel.WARN) { val licenseData = readLicenseFileData(context) - ?: throw IllegalStateException( + if (licenseData == null) { + android.util.Log.e( + "XuqmSDK", + "[autoInitialize] License file not found or unreadable. " + + "Expected assets/xuqm/license.xuqm or assets/xuqm/*.xuqmlicense. " + + "Actual files in assets/xuqm/: ${listAssets(context, "xuqm")}", + ) + throw IllegalStateException( "No license file found in assets/xuqm/. " + "Download license.xuqm from the tenant platform and place it in src/main/assets/xuqm/." ) + } val appKey = licenseData.first val serverUrl = licenseData.second val licensePackageName = licenseData.third - val localPackageName = context.packageName + + android.util.Log.d( + "XuqmSDK", + "[autoInitialize] License read OK — " + + "appKey=${appKey.take(8)}***, serverUrl=$serverUrl, " + + "licensePackageName=$licensePackageName, localPackageName=$localPackageName", + ) + if (licensePackageName != null && licensePackageName.isNotBlank() && licensePackageName != localPackageName) { + android.util.Log.e( + "XuqmSDK", + "[autoInitialize] Package name mismatch — " + + "license expects '$licensePackageName', app running as '$localPackageName'.", + ) throw IllegalStateException( "License package name mismatch: license=$licensePackageName, local=$localPackageName. " + "Please download the correct license file for this app." @@ -63,6 +83,9 @@ object XuqmSDK { initialize(context, appKey, serverUrl, logLevel) } + private fun listAssets(context: Context, dir: String): String = + runCatching { context.assets.list(dir)?.toList().toString() }.getOrDefault("(error listing)") + /** * Manual initialization without license file. * The SDK will validate the appKey against the server by calling /api/sdk/config diff --git a/sdk-core/src/main/java/com/xuqm/sdk/internal/XuqmInitializerProvider.kt b/sdk-core/src/main/java/com/xuqm/sdk/internal/XuqmInitializerProvider.kt index 62e7d1e..f110324 100644 --- a/sdk-core/src/main/java/com/xuqm/sdk/internal/XuqmInitializerProvider.kt +++ b/sdk-core/src/main/java/com/xuqm/sdk/internal/XuqmInitializerProvider.kt @@ -18,6 +18,13 @@ class XuqmInitializerProvider : ContentProvider() { if (!XuqmSDK.isInitialized()) { XuqmSDK.autoInitialize(ctx) } + }.onFailure { e -> + android.util.Log.e( + "XuqmSDK", + "[XuqmInitializerProvider] autoInitialize failed — SDK will be uninitialized. " + + "Cause: ${e.javaClass.simpleName}: ${e.message}", + e, + ) } return true }