两个不同的 ANDROID ID - settings_secure.aml & settings_ssaid.xml

Two different ANDROID IDs - settings_secure.aml & settings_ssaid.xml

我是 Adroid 应用生态系统的新手。我构建了一个简单的应用程序并注意到有两个不同的 ANDROID ID(我在模拟器中运行应用程序)

  1. 一个存储在 /data/system/users/0/settings_secure.xml 文件中:
<setting id="25" name="android_id" value="9f43e4f495a6730" package="android" defaultValue="9f43e4f495a6730" defaultSysSet="true" />
  1. 其他存储在 /data/system/users/0/settings_ssaid.xml
<setting id="4" name="10153" value="35ea805581c66911" package="com.example.app_v1.demo.debug" defaultValue="35ea805581c66911" defaultSysSet="false" tag="null" />
<setting id="5" name="10154" value="35ea805581c66911" package="com.example.app_v2.full.debug" defaultValue="35ea805581c66911" defaultSysSet="false" tag="null" />

谁能分享一下

  1. 拥有两个不同ID的目的?在哪个用例中使用哪个?尽管存储在不同的位置,但它们都被称为 ANDROID ID 有点令人困惑(我的理解是否正确 #1 可能被系统/Andorid 应用程序使用,而 #2 将被用户使用,第 3 方应用程序)
  2. 我也觉得很奇怪,我的 app_v1app_v2 输出相同的 ANDROID ID (35ea805581c66911)。我的理解是否正确,因为 post Android-O,此 ANDROID ID 的范围 由签名密钥和用户 根据 https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID

感谢您提前澄清

purpose of having two different IDs? which one to use in which usecase? it's a bit confusing both are called ANDROID IDs despite stored at different locations (Is my understanding correct #1 is perhaps used by system / Andorid apps and #2 is to be used used by user, 3rd party app)

根据您链接的文档和 SettingsProvider.java 中的描述,我认为您的理解是正确的,settings_secure.xml 中的值是针对 Android OS 本身的访问,而“SSAID”是供第 3 方应用程序访问。

如果您是应用开发者,则无法选择使用哪一个,因为您只能访问“SSAID”版本。

如果您的问题是为什么需要为每个签名密钥分配不同的 Android ID,我猜这是为了防止第 3 方库跨应用程序跟踪用户。 (想想类似 Admob SDK 的东西)

also i find it odd that both my app_v1 and app_v2output same ANDROID ID (35ea805581c66911). Is my understanding correct it's because post Android-O, this ANDROID ID is scoped by signing key and user as per https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID ?

我的猜测是因为您的 app_v1 和 app_v2 是使用相同的签名密钥签名的,因此他们看到的 Android ID 是相同的。