奥利奥中相同的 ANDROID_ID

2024-01-11

As per Android 8.0 行为变更,

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

为了测试上述更改,我制作了两个测试 APK 并发现以下行为(在 Nexus 5X、操作系统 8.0.0 上测试):

  • 如果 targetSdkVersion 26、compileSdkVersion 26、buildToolsVersion 26.0.0,从同一台 Windows 计算机生成的两个不同的 apk(以及不同的包名称)显示相同的 ANDROID_ID。当从不同机器生成具有相同包名的 APK 时,显示不同的 ANDROID_ID。

以下是我的查询:

  1. 这是正确的行为吗?为什么两个不同的 APK 显示相同的 ANDROID_ID?
  2. 如果我的应用程序的 ANDROID_ID 可能发生变化(无需卸载/重新安装),会有什么变化吗?
  3. 在 Nexus 5x、操作系统 6.0.1 上获得相同的行为, targetSdkVersion 23、compileSdkVersion 23、buildToolsVersion 25.0.0 。我在 Android O 中没有看到任何特定的行为变化。我缺少什么?为什么会出现同样的行为?

正如其他答案解释了为什么您为不同的应用程序获得相同的 id 一样,它们是正确的。

检查此行为的最佳方法是创建两个不同的证书并使用这两个证书对您的 apk 进行签名。


总结一下你所有的困惑,[来自Android O 中设备标识符的更改] https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

  1. 只要包名称和签名密钥相同,ANDROID_ID 值在包卸载/重新安装时就不会更改。应用程序可以依靠此值在重新安装后保持状态。
  2. 如果应用程序安装在运行早期版本 Android 的设备上,则当设备更新到 Android O 时,Android ID 保持不变,除非卸载并重新安装该应用程序。
  3. 仅当设备恢复出厂设置或签名密钥在卸载和重新安装事件之间轮换时,Android ID 值才会更改。
  4. 仅对于附带 Google Play 服务和广告 ID 的设备制造商才需要进行此更改。其他设备制造商可能会提供替代的可重置 ID 或继续提供 ANDROID ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奥利奥中相同的 ANDROID_ID 的相关文章

随机推荐