![](/img/trans.png)
[英]While Device id and Device model is getting listed for a device in mobilefirst console, User id not getting generated for the same device. Why?
[英]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
现在对于每个应用都是唯一的
对于在 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.