簡體   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