feat(sdk-core): deviceId 优先使用 ANDROID_ID,卸载重装后仍可识别设备

- 优先读取 Settings.Secure.ANDROID_ID(绑定设备,非应用)
- 过滤已知无效值(9774d56d682e549c 等)
- ANDROID_ID 前缀 aid_ 区分来源
- 回退到随机 UUID(恢复出厂设置等场景)
这个提交包含在:
XuqmGroup 2026-06-18 22:00:16 +08:00
父节点 5d1b07b997
当前提交 fd37f57fbf

查看文件

@ -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 {