
概述
下圖是Google官方公布的Android 11里程碑時間點:

Android 11 中提供的功能
行為變更:
所有應用
Android 11 平臺包含一些行為變更,這些變更可能會影響您的應用。以下行為變更將影響在 Android 11 上運行的所有應用,無論其采用哪種 targetSdkVersion 都不例外。您應該測試您的應用,然后根據(jù)需要酌情修改,以便正確地支持這些變更。
此外,請務必查看僅影響以 Android 11 為目標平臺的應用的行為變更列表。
JobScheduler API 調(diào)用限制調(diào)試
Android 11 為應用提供調(diào)試支持,以便確定有可能超過特定速率限制的 JobScheduler API 調(diào)用。開發(fā)者可以利用此服務發(fā)現(xiàn)潛在的性能問題。對于 debuggable 清單屬性設(shè)置為 true 的應用,超出速率限制的 JobScheduler API 調(diào)用將返回 RESULT_FAILURE。應設(shè)置適當?shù)南拗?,以使正當合理的用例不會受到影響?/p>
因 OTA 更新而重啟設(shè)備后在未提供用戶憑據(jù)的情況下執(zhí)行文件級加密
設(shè)備接收 OTA 更新并重啟后,放在受憑據(jù)保護的存儲空間中的憑據(jù)加密密鑰可立即用來執(zhí)行文件級加密 (FBE) 操作。因此,設(shè)備重啟后,在用戶輸入其 PIN 碼、密碼或繪制解鎖圖案以解鎖設(shè)備之前,您的應用可以執(zhí)行與文件級加密相關(guān)的操作。
注意:此變更僅影響因 OTA 更新而發(fā)生的設(shè)備重啟。如果您的應用應始終“在重新啟動后恢復”,請繼續(xù)支持直接啟動。
一次性權(quán)限(特別注意)
在 Android 11 中,每當應用請求與位置信息、麥克風或攝像頭相關(guān)的權(quán)限時,應用都會獲得臨時的一次性權(quán)限。要詳細了解此變更,請轉(zhuǎn)到介紹 Android 11 中與權(quán)限相關(guān)的隱私權(quán)變更的頁面,參閱“一次性權(quán)限”部分。
用戶的選擇可以限制顯示權(quán)限對話框的時間
Android 11 不鼓勵重復請求某個特定的權(quán)限。當您的應用安裝到設(shè)備上之后,如果用戶在整個使用過程中曾兩次對某個特定權(quán)限點按拒絕,則此操作隱含著“不再詢問”的意味。要詳細了解此變更,請轉(zhuǎn)到介紹 Android 11 中與權(quán)限相關(guān)的隱私權(quán)變更的頁面,參閱“權(quán)限對話框的可見性”部分。
后臺位置信息訪問權(quán)限
如果您的應用以 Android 11 為目標平臺,則無法直接請求始終都能在后臺訪問位置信息。即使您的應用以 Android 10(API 級別 29)或更低版本為目標平臺,用戶看到的系統(tǒng)對話框也會包含相應按鈕,用于控制前臺位置信息訪問權(quán)限。
要詳細了解此變更,請轉(zhuǎn)到介紹 Android 11 中與位置信息相關(guān)的隱私權(quán)變更的頁面,參閱“后臺位置信息訪問權(quán)限”部分。
存儲界面
Android 11 引入了多項與存儲權(quán)限相關(guān)的面向用戶的變更,其中包括存儲運行時權(quán)限的名稱以及用于說明應用的存儲權(quán)限請求的對話框內(nèi)容。要詳細了解這些變更,請轉(zhuǎn)到介紹 Android 11 中與存儲相關(guān)的隱私權(quán)變更的頁面,參閱權(quán)限部分。
應用使用情況統(tǒng)計信息隱私保護
為了更好地保護用戶,Android 11 將每個用戶的應用使用情況統(tǒng)計信息存儲在憑據(jù)加密存儲空間中。因此,系統(tǒng)和任何應用都無法訪問該數(shù)據(jù),除非 isUserUnlocked() 返回 true,這發(fā)生在出現(xiàn)以下某種情況之后:
- 用戶在系統(tǒng)啟動后首次解鎖其設(shè)備。
- 用戶在設(shè)備上切換到自己的帳號。
如果您的應用已綁定到 UsageStatsManager 的實例,請檢查您是否是在用戶解鎖其設(shè)備后在此對象上調(diào)用方法。如果并非如此,該 API 現(xiàn)在會返回 null 或空值。
MANAGE_OVERLAY_PERMISSION intent 始終會將用戶轉(zhuǎn)至系統(tǒng)權(quán)限屏幕
從 Android 11 開始,ACTION_MANAGE_OVERLAY_PERMISSION intent 始終會將用戶轉(zhuǎn)至頂級設(shè)置屏幕,用戶可在其中授予或撤消應用的 SYSTEM_ALERT_WINDOW 權(quán)限。intent 中的任何 package: 數(shù)據(jù)都會被忽略。
在更低版本的 Android 中,ACTION_MANAGE_OVERLAY_PERMISSION intent 可以指定一個文件包,它會將用戶轉(zhuǎn)至應用專用屏幕來管理權(quán)限。Android 11 不再支持此功能,而是必須由用戶先選擇要對其授予或撤消權(quán)限的應用。此變更可以讓權(quán)限的授予更有目的性,從而達到保護用戶的目的。
所有文件訪問權(quán)限
某些應用的核心用例需要訪問大量的文件,例如文件管理操作或備份和還原操作。這些應用可以通過聲明特殊的 MANAGE_EXTERNAL_STORAGE 權(quán)限獲得“所有文件訪問權(quán)限”。
注意:獲得 MANAGE_EXTERNAL_STORAGE 權(quán)限,應用便可訪問共享存儲空間中可能具有敏感性的數(shù)據(jù)。在即將推出的開發(fā)者預覽版中,Google Play 為需要此權(quán)限的應用提供了相關(guān)指南。
要詳細了解此權(quán)限,請轉(zhuǎn)到介紹 Android 11 中與存儲相關(guān)的隱私權(quán)變更的頁面,參閱所有文件訪問權(quán)限部分。
在元數(shù)據(jù)文件中聲明“無障礙”按鈕使用情況
從 Android 11 開始,您的無障礙服務無法在運行時聲明與系統(tǒng)的“無障礙”按鈕的關(guān)聯(lián)。如果您將 AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON 附加到 AccessibilityServiceInfo 對象的 flags 屬性,則框架不會將“無障礙”按鈕回調(diào)事件傳遞給您的服務。
應在您的無障礙服務元數(shù)據(jù)文件(通常為 res/raw/accessibilityservice.xml)中使用 flagRequestAccessibilityButton 標記來聲明您的無障礙服務與“無障礙”按鈕的關(guān)聯(lián)。
限制非 SDK 接口
Android 11 包含更新后的受限制非 SDK 接口列表(基于與 Android 開發(fā)者之間的協(xié)作以及最新的內(nèi)部測試)。在限制使用非 SDK 接口之前,我們會盡可能確保提供公開替代方案。
如果您的應用并非以 Android 11 為目標平臺,那么其中一些變更可能不會立即對您產(chǎn)生影響。雖然您目前仍然可以使用灰名單中的一些非 SDK 接口(取決于您的應用的目標 API 級別),但如果您使用任何非 SDK 方法或字段,則應用無法運行的風險終歸較高。
如果您不確定自己的應用是否使用了非 SDK 接口,則可以測試該應用,進行確認。如果您的應用依賴于非 SDK 接口,則應該開始計劃遷移到 SDK 替代方案。不過,我們知道某些應用具有使用非 SDK 接口的有效用例。如果您無法為應用中的某項功能找到使用非 SDK 接口的替代方案,則應該請求新的公共 API。
要詳細了解此 Android 版本中的變更,請參閱 Android 11 中有關(guān)限制非 SDK 接口的更新。要全面了解有關(guān)非 SDK 接口的詳細信息,請參閱對非 SDK 接口的限制。
文件描述符排錯程序 (fdsan)
Android 10 引入了 fdsan(文件描述符排錯程序)。fdsan 檢測錯誤處理文件描述符所有權(quán)的錯誤,例如 use-after-close 和 double-close。在 Android 11 中,fdsan 的默認模式發(fā)生了變化?,F(xiàn)在,fdsan 會在檢測到錯誤時中止,而以前的行為則是記錄警告并繼續(xù)。如果您在應用中發(fā)現(xiàn)由于 fdsan 而導致的崩潰,請參閱 fdsan documentation。
Scudo Hardened Allocator
Android 11 在內(nèi)部使用 Scudo Hardened Allocator 來為堆分配提供服務。Scudo 能夠檢測并減輕某些類型的內(nèi)存安全違規(guī)行為。如果您在原生代碼崩潰報告中發(fā)現(xiàn)與 Scudo 相關(guān)的崩潰(例如 Scudo ERROR:),請參閱 Scudo 問題排查文檔。
SSL 套接字默認情況下使用 Conscrypt SSL 引擎
在 Android 11 中,默認的 SSLSocket 實現(xiàn)使用 Conscrypt SSLEngine。
Open Mobile API 變更
從 Android 11 開始,Open Mobile API (OMAPI) 有了額外的功能:
解析運營商權(quán)限的規(guī)則。
-
使用以下一項或多項來自定義嵌入式安全元件 (eSE) 訪問權(quán)限或配置 eSE:
- 系統(tǒng)特許權(quán)限
- 可配置的訪問規(guī)則應用主數(shù)據(jù) (ARA-M) 應用標識符 (AID)
- 用于重置 OMAPI 讀取器的系統(tǒng) API
為讀取器提供清晰的指示符,以便應用過濾設(shè)備功能。
支持并發(fā)使用多個攝像頭
Android 11 添加了 API 來查詢對同時使用多個攝像頭(包括前置攝像頭和后置攝像頭)的支持。
要在運行應用的設(shè)備上檢查支持情況,請使用以下方法:
-
getConcurrentStreamingCameraIds()可返回攝像頭 ID 組合Set,這些組合可與有保證的數(shù)據(jù)流組合并發(fā)進行流式傳輸(如果它們是由同一應用進程配置的)。 -
isConcurrentSessionConfigurationSupported()可查詢攝像頭設(shè)備是否可以并發(fā)支持相應的會話配置。