Android O 设备 id 信息的变化

发布于 2025-02-23 23:12:59 字数 3384 浏览 5 评论 0

Android O 引入了一些改进,以帮助用户控制标识符的使用。这些改进包括:

  • 限制使用不可重置的设备作用域标识符
  • 更新 Android O Wi-Fi 堆叠以及 Pixel,Pixel XL 和 Nexus 5x 手机使用的 Wi-Fi 芯片固件的更改,随机选择探测请求中的 MAC 地址
  • 更新应用程序请求帐户信息的方式,并提供更多的面向用户的控制

设备标识符更改

以下是 Android O 的一些设备标识符更改:

Android ID

在 O 中,Android ID(Settings.Secure.ANDROID_ID 或 SSAID)对于每个应用程序和设备上的每个用户都有不同的值。应该使用需要设备范围标识符的开发人员使用可重置的标识符,例如 广告 ID ,为用户提供更多的控制权。广告 ID 还提供了面向用户的设置来限制广告跟踪。

另外在 Android O:

  • 只要软件包名称和签名密钥相同,软件包卸载/重新安装时,ANDROID_ID 值将不会更改。应用程序可以依赖此值来重新安装状态。
  • 如果应用程序安装在运行早期版本的 Android 的设备上,则当设备更新为 Android O 时,Android ID 保持不变,除非该应用被卸载并重新安装。
  • 仅当设备出厂设置或签名密钥在卸载和重新安装事件之间转动时,Android ID 值才会更改。 此更改仅适用于使用 Google Play 服务和广告 ID 发送的设备制造商。其他设备制造商可以提供替代的可重置 ID 或继续提供 ANDROID ID。

Build.SERIAL

为了与访问 IMEI 所需的运行时权限保持一致,对于 Android O 或更新版本的应用程序,不推荐使用 android.os.Build.SERIAL。相反,他们可以使用一个新的 Android O API,Build.getSerial(),它返回实际的序列号,只要主叫持有 PHONE 权限。在 Android 的未来版本中,面向 Android O 的应用将 Build.SERIAL 看作“未知”。为了避免破坏旧版应用功能,针对先前版本的 Android 的应用将继续像以前一样看到设备的序列号。

Net.Hostname

Net.Hostname 提供设备的网络主机名。在以前的 Android 版本中,网络主机名的默认值和 DHCP 主机名选项的值包含 Settings.Secure.ANDROID_ID。在 Android O 中,net.hostname 为空,DHCP 客户端不再发送主机名,遵循 IETF RFC 7844 (匿名配置文件)。

Widevine ID

对于使用 O 发货的新设备,Widevine 客户端 ID 会为每个应用程序包名称和 Web 来源(对于 Web 浏览器应用程序)返回不同的值。

独特的系统和设置属性

除了 Build.SERIAL 之外,还有其他设置和系统属性在 Android O 中不可用。其中包括:

  • ro.runtime.firstboot:上次重装或最新启动后首次启动的毫秒精确时间戳
  • htc.camera.sensor.front_SN:相机序列号(在某些 HTC 设备上可用)
  • persist.service.bdroid.bdaddr:蓝牙 MAC 地址属性
  • Settings.Secure.bluetooth_address:设备蓝牙 MAC 地址。在 O 中,这仅适用于持有 LOCAL_MAC_ADDRESS 权限的应用。

Wi-Fi 探测请求中的 MAC 地址随机化

我们与安全研究人员(1 原作者注释)合作,为 Google Pixel 和 Nexus 5X 设备中的芯片组固件生成的 Wi-Fi 扫描流量设计了强大的 MAC 地址随机化。然后,Android 连接团队与制造商合作,更新这些设备使用的 Wi-Fi 芯片组固件。

Android O 将这些固件更改集成到 Android Wi-Fi 堆叠中,以便使用更新固件和运行 Android O 或更高版本的这些芯片组的设备可以利用它们。

以下是运行 O +时对 Pixel,Pixel XL 和 Nexus 5x 固件进行的一些更改:

  • 对于与接入点断开连接的每个 Wi-Fi 扫描,手机使用新的随机 MAC 地址(无论设备是否处于待机状态)。
  • 每个扫描的初始包序列号也是随机的。
  • 不必要的探测请求信息元素已被删除:信息元素限于 SSID 和 DS 参数集。

getAccounts API 中的更改

在 Android O 及以上版本中,GET_ACCOUNTS 权限不足以访问设备上注册的帐户列表。应用程序必须使用管理特定帐户类型的应用程序提供的 API,或者用户必须通过帐户选择器活动授予访问帐户的权限。例如,Gmail 可以访问设备上注册的 Google 帐户,因为 Google 拥有 Gmail 应用程序,但用户需要向 Gmail 访问有关在设备上注册的其他帐户的信息。

针对 Android O 或更高版本的应用程序应使用 AccountManager#newChooseAccountIntent()或特定于身份验证的方法来访问帐户。具有较低目标 SDK 的应用程序仍然可以使用当前流。

在 Android O 中,应用程序也可以使用 AccountManager。 setAccountVisibility()/ getVisibility()方法来管理这些应用程序拥有的帐户的可见性策略。

此外,LOGIN_ACCOUNTS_CHANGED_ACTION 广播已被弃用,但仍可在 Android O 中使用。应用程序应使用 addOnAccountsUpdatedListener()获取有关运行时帐户的更新,以获取其指定的帐户类型列表。

查看 唯一标识符的最佳做法 以获取更多信息。

注释

1.格伦·威尔金森和团队 SensePost 的,英国,塞莱斯廷·马特,马修 Cunche:里昂大学,仁寺里昂,花旗实验室,INRIA Privatics,马西·文霍夫,鲁汶大学

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

黎歌

暂无简介

文章
评论
25 人气
更多

推荐作者

闻呓

文章 0 评论 0

深府石板幽径

文章 0 评论 0

mabiao

文章 0 评论 0

枕花眠

文章 0 评论 0

qq_CrTt6n

文章 0 评论 0

红颜悴

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文