分享到朋友圈 1. 点击导航栏右侧按钮。
2. 选择 发送给朋友 或 分享到朋友圈。
收起 捐款给作者

Cherysun’s Tech Cafe

通过 ADB Shell 获取 Android ID

摘要 TL;DR

Android ID 是一个以十六进制字符串体现的 64 位数字,在用户第一次启用设备的时候随机生成,并且在用户使用设备时不会发生改变。而当设备恢复出厂设置时可能发生改变。

什么是 Android ID?

A 64-bit number (as a hex string) that is randomly generated when the user first sets up the device and should remain constant for the lifetime of the user’s device. The value may change if a factory reset is performed on the device.

String ANDROID_ID in Settings.Secure—Android Developers

在运行有 Android 4.2 或更高版本的某些设备上可以创建多用户,每个用户都相当于拥有一个独立的设备,因而每个用户的 ANDROID_ID 也是不同的。

获取 Android ID

获取 Android ID 的方法有很多种,如果你是 Android 开发者,自然不必多说;或者可以在 Google Play 上下载相关的 app 同样可以获取到 Android ID,然而作为用户,很难得知下载的 app 除了获取 Android ID 还会获取什么其他的信息,又是如何来使用这些信息的。因而最简单也是最安全的方法就是通过 ADB Shell1 自行查询。

如何安装和使用 ADB Shell 这里不再赘述。你只需要在连接 Android 设备并且在 Developer options 中允许 USB debugging 后使用以下的命令行查询 Android ID。

adb shell settings get secure android_id

或者查询 Settings 的 content provider 的值。

adb shell content query --uri content://settings/secure/android_id --projection value

使用以上两个命令中所获得的结果就像以下图示。(在这里我的设备的 Android ID 已被隐藏。)

使用 ADB Shell 获取 Android ID 的结果

Android 标识符的使用原则

最重要地,如果你是 Android 开发者,那么请仔细阅读 Android Developers 提供的 唯一标识符最佳做法 的文档,请尽可能地使用广告 ID2、实例 ID 和 GUID3 替代使用 Android ID 或 MAC 地址4

根据 Android 开发指南,建议在使用 Android 标识符时遵循以下原则:

原则 1:避免使用硬件标识符。 您可以在大多数用例中避免使用 SSAID(Android ID)和 IMEI 等硬件标识符,而必需功能也不会受到限制。

原则 2:只为用户分析或广告用例使用广告 ID。 使用 广告 ID 时,务必遵守限制广告追踪标记,确保标识符无法与个人可识别信息(PII)建立关联,并避免桥接广告 ID 重置。

原则 3:尽一切可能为防欺诈支付和电话以外的所有其他用例使用实例 ID 或私密存储的 GUID。 对于绝大多数非广告用例,使用实例 ID 或 GUID 应该足矣。

原则 4:使用适合您的用例的 API 以尽量降低隐私权风险。 为高价值内容保护使用 DRM API,为滥用预防使用 SafetyNet API。Safetynet API 是能够确定设备真伪而又不会招致隐私权风险的最简单方法。

  1. Android 调试桥(adb)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问:https://developer.android.com/studio/command-line/adb.html?hl=zh-cn 

  2. 广告 ID 是一种可由用户重置的标识符,适用于广告用例。 

  3. 标识运行在设备上的应用实例最简单明了的方法就是使用实例 ID,在大多数非广告用例中,这是建议的解决方案。只有进行了针对性配置的应用实例才能访问该标识符,并且标识符重置起来(相对)容易,因为它只存在于应用的安装期。 

  4. 从 Android M 开始,无法再通过第三方 API 获得 本地设备 MAC 地址(例如,WLAN 和蓝牙)。 

使用微信扫描下方二维码,然后 发送给朋友分享到朋友圈

感谢您的支持与贡献

您的捐款将使您阅读到的内容变得更好。

支持微信支付和支付宝。

在微信中扫描二维码 在支付宝中扫描二维码

感谢您的支持与贡献

您的捐款将使您阅读到的内容变得更好。

触摸并按住二维码,选择识别图中二维码

触摸并按住二维码