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 }