Settings.Secure.ANDROID_ID不是唯一的,如何解决?

时间:2013-02-15 09:36:00

标签: android security

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


public static final String ANDROID_ID

*在API级别3中添加

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


但是超过 500平板电脑已售出(A10 AllWinner)ANDROID_ID并非真正随机生成,而且我(从我的网络服务日志中)看到多个设备具有相同的数字

为什么?

我该如何解决这个问题?如何生成唯一ID?假设所有设备(Same serial number on several android devices. Adb is useless. How can I change the serial number?)的串行代码始终相同,并且MAC地址无法始终可用。

1 个答案:

答案 0 :(得分:7)

一般来说,这是Android的一个严重问题 - 看起来Android ID是最好的选择但是你注意到几个重要的供应商已经搞砸了实现。

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

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

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

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