繁体   English   中英

为同一设备获取不同的 ID。 为什么?

[英]Getting different IDs for same device. Why?

尽管它们使用相同的密钥库进行签名,但我为 2 个应用程序在同一设备上获得了不同的 Android ID。 此问题仅在 Android Oreo OS 中发生。 谁能帮助我为什么会生成 2 个不同的 Android IDS?

我用于 Android Id 的方法 -

int deviceId = Settings.Secure.getString(pContext.getContentResolver(), Settings.Secure.ANDROID_ID)

它的行为符合预期。 在 Android 8.0 中, ANDROID_ID的值现在是针对每个应用的,这意味着ANDROID_ID现在对于每个应用都是唯一的

请阅读Android 8.0 行为变化

  • 对于在 OTA 之前安装到 Android 8.0(API 级别 26)(API 级别 26)版本的应用程序,ANDROID_ID 的值保持不变,除非在 OTA 之后卸载然后重新安装。 为了在 OTA 后跨卸载保留值,开发人员可以使用键/值备份来关联旧值和新值。

  • 对于安装在运行 Android 8.0 的设备上的应用,ANDROID_ID 的值现在适用于每个应用签名密钥以及每个用户。 ANDROID_ID 的值对于应用签名密钥、用户和设备的每个组合都是唯一的。 因此,在同一设备上运行的具有不同签名密钥的应用不再看到相同的 Android ID(即使是同一用户)。

这是 Oreo 及以上设备的预期行为。 现在对于每个用户的每个应用程序,设备 ID 都是唯一的。

安卓官方文档:

对于安装在运行 Android 8.0 的设备上的应用,ANDROID_ID 的值现在适用于每个应用签名密钥以及每个用户。 ANDROID_ID 的值对于应用签名密钥、用户和设备的每个组合都是唯一的。 因此,在同一设备上运行的具有不同签名密钥的应用不再看到相同的 Android ID(即使是同一用户)。

链接: https : //developer.android.com/about/versions/oreo/android-8.0-changes

从 Android 8 开始, android_id “对于应用签名密钥、用户和设备的每个组合都是唯一的”,从而拒绝“开发人员能够跨多个应用程序跟踪用户”。 这些唯一的 ID 存储在

/data/system/users//settings_ssaid.xml。

当android_id值init时,第一次设置值? android_id 值在哪种情况下会发生变化? 很明显,android_id“是在用户第一次设置设备时随机生成的,并且应该在用户设备的整个生命周期内保持不变”,除非执行了清除所有设置的出厂重置。

在 Android 8+ 上,特定于应用程序的 android_id “如果在设备上执行出厂重置或 APK 签名密钥更改,则值可能会更改”。

考虑到所有情况,使用 android_id 构建 device_id 似乎不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM