android - Settings.Secure.ANDROID_ID 不唯一,如何解决?

标签 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 地址不能始终可用。

最佳答案

总的来说,这是 Android 的一个严重问题 - Android ID 似乎是最好的选择,但正如您所注意到的,一些重要的供应商已经将实现搞得一团糟。

面对类似的需求,我使用了这些值的散列:

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

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

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

关于android - Settings.Secure.ANDROID_ID 不唯一,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14891738/

相关文章:

android - 后退时关闭 Activity 和对话框

ruby-on-rails - rails : How to prevent 2 active-record attributes to be equal with validation?

javascript - Javascript 中的安全 OAuth

java - 如何为Android构建一个java代码库?

android - Appium 显示错误“未知错误 : Chrome version must be >= 31. 0.1650.59\n 即使 Android 移动应用程序中的 chrome 版本更高

android - 在对话框中自定义 ListView

linux - 在将公钥导入 GnuPG 之前验证公钥的扩展是否很热门?

asp.net-mvc - Asp.Net MVC 授权选项

css - 是否有任何 xss 原因来阻止样式元素和属性?

android - 如何在 Google Play 上提供已发布应用的更新?