6

我现在面临一个大问题。如在 Android 官方参考中找到:http: //developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID


公共静态最终字符串ANDROID_ID

*在 API 级别 3 中添加

在设备首次启动时随机生成的 64 位数字(作为十六进制字符串),在设备的整个生命周期内应保持不变。(如果在设备上执行恢复出厂设置,该值可能会发生变化。) 常量值:“android_id”*


但是售出超过500 台平板电脑(A10 AllWinner)ANDROID_ID 并不是真正随机生成的,我看到(从我的网络服务日志中)几个设备具有相同的编号

为什么?

我该如何解决这个问题?如何生成唯一 ID?假设所有设备的序列号始终相同(几个android设备上的序列号相同。adb没用。我该如何更改序列号?)并且MAC地址不能总是可用。

4

1 回答 1

10

一般来说,这是 Android 的一个严重问题 - 看起来 Android ID 是最好的选择,但是您注意到几个重要的供应商已经把实现弄得一团糟。

面对类似的要求,我使用了这些值的哈希:

  • 电话号码/SIM 卡号码(如果可用或仅使用零)
  • 安卓ID
  • Mac 地址(如果可用或仅使用零)

根据我有限的经验(使用了数百台设备),这种组合足以实现您所需的独特性。

从 Android 6更新 2017 年 ,出于安全原因,Mac 地址返回一个常量值 - 但是在几乎所有较新的 android 实现中,android ID 似乎都是可靠的唯一的,因此除非您针对的是旧版本,否则您没有使用此技术的动机。

于 2013-02-15T11:23:51.347 回答