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 cb8ba0c..bd86475 100644 --- a/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt +++ b/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt @@ -337,9 +337,25 @@ object XuqmSDK { val key = "device_id" val stored = prefs.getString(key, null) if (!stored.isNullOrBlank()) return stored - val generated = java.util.UUID.randomUUID().toString() - prefs.edit().putString(key, generated).apply() - return generated + + // 优先使用 ANDROID_ID(卸载重装后不变,绑定设备而非应用) + val androidId = runCatching { + android.provider.Settings.Secure.getString( + context.contentResolver, + android.provider.Settings.Secure.ANDROID_ID, + ) + }.getOrNull() + + // 已知的无效值:某些设备返回固定值或 null + val badValues = setOf("", "9774d56d682e549c", "null", "unknown") + val deviceId = if (!androidId.isNullOrBlank() && androidId.lowercase() !in badValues) { + "aid_$androidId" + } else { + java.util.UUID.randomUUID().toString() + } + + prefs.edit().putString(key, deviceId).apply() + return deviceId } private fun platformInitException(platformUrl: String, appKey: String, cause: Throwable): Throwable {