Android 9 版本資訊

本頁面概要說明 Android 9 版本的主要功能,並提供其他資訊的連結。這些功能摘要會依據功能在本網站上的說明文件位置進行分類。如需有關移動及重新命名專區的指南,請參閱 2018 年 8 月的網站更新

建構

通用系統映像檔 (GSI)

通用系統映像檔 (GSI) 是經過調整的 Android 裝置設定系統映像檔。通用系統映像檔 (GSI) 詳細說明瞭 Android 9 裝置啟動和升級至 Android 9 裝置的 GSI 之間的差異。

建築

硬體抽象層 (HAL)

HIDL 架構回溯相容性

HIDL 架構回溯相容性驗證是驗證架構回溯相容性的一種方法。

動態可用的 HAL

動態可用的 HAL 可在 Android 硬體子系統未使用或不需要時,支援動態關閉這些子系統。

HIDL

HIDL MemoryBlock

HIDL MemoryBlock 是建構於 hidl_memoryHIDL @1.0::IAllocatorHIDL @1.0::IMapper 的抽象層。這項工具專為 HIDL 服務而設計,這些服務有多個記憶體區塊共用單一記憶體堆積。

裝置樹狀架構重疊圖層

壓縮重疊

使用裝置樹狀圖 Blob 疊加層 (DTBO) 圖片的 1 版裝置樹狀圖表標頭時,Android 9 以上版本支援裝置樹狀圖 Blob 疊加層中的壓縮疊加層

DTO 更新

在 Android 9 以上版本中,您必須先修改 裝置樹狀結構疊加層 (DTO) 中定義的屬性,才能讓啟動載入程式將統一裝置樹狀結構 blob 傳遞至核心。

DTBO 圖像標頭版本控制

Android 9 以上版本在 DTBO 圖片標頭中包含版本欄位

DTBO 驗證

Android 9 以上版本需要 DTBO 分區。如要新增節點或變更 SoC DT 中的屬性,Bootloader 必須在 SoC DT 上動態重疊裝置專屬的 DT。詳情請參閱「編譯與驗證」。

核心法規遵循

Android 9 以上版本包含影響核心、其介面和 DTBO 使用方式的規定。如需詳細資訊,請參閱下列頁面:

供應商 NDK

設計變更

如要瞭解 Android 9 以上版本的 VNDK 設計變更,請參閱下列頁面:

ABI 檢查器

ABI 穩定性」頁面說明應用程式二進位檔介面 (ABI) 檢查器,可確保對 VNDK 程式庫所做的變更符合 ABI 規範。

VNDK 快照

即使系統和供應商映像檔是使用不同版本的 Android 建構,系統映像檔也可以使用 VNDK 快照,為供應商映像檔提供正確的 VNDK 程式庫。

供應商介面物件 (VINTF 物件)

供應商介面物件一節中的下列頁面說明 Android 9 以上版本的更新內容:

HIDL 淘汰時間表

以下頁面說明 Android 如何淘汰及移除 HIDL HAL:

系統啟動載入程式

產品劃分

Android 9 以上版本支援使用 Android 建構系統建構 /product 分區。先前,Android 8.x 會強制將系統單晶片 (SoC) 專屬元件從 /system 分割區分離至 /vendor 分割區,但不會為從 Android 建構系統建構的 OEM 專屬元件保留專屬空間。

Canonical 啟動原因相容性

標準啟動原因」頁面說明瞭 Android 9 以上版本的引導程式啟動原因規範異動。

以系統根權限

所有搭載 Android 9 以上版本的裝置都必須使用系統做為根目錄,將 ramdisk.img 合併至 system.img (也稱為 no-ramdisk),再將其掛載為 rootfs。

開機映像檔標頭版本管理

在 Android 9 以上版本中,啟動映像檔標頭包含用於指示標頭版本的欄位。引導程式必須檢查這個版本欄位,並相應地剖析標頭。

復原中的 DTBO

為避免 OTA 因非 A/B 裝置上的復原映像檔與 DTBO 分區不相符而失敗,復原映像檔必須包含 DTBO 映像檔的資訊

螢幕

螢幕凹口

螢幕缺口可讓應用程式開發人員打造身歷其境的無邊框體驗,同時保留裝置前端的重要感應器空間。

旋轉建議

螢幕旋轉行為更新:Android 9 以上版本支援使用者介面控制項,即使裝置位置有所變更,也能將螢幕旋轉方向固定為橫向或直向。

同步處理的應用程式轉換

同步應用程式轉場效果可讓您使用新的應用程式轉場動畫。

文字分類 (舊稱 TEXTCLASSIFIER)

Android 9 以上版本包含 文字分類器服務,這是實作文字分類的建議方式,也是預設服務實作方式。

廣色域

Android 9 以上版本支援廣色域,包括:

  • 高動態範圍 (HDR)
  • 以 BT2020 色域處理內容,但不做為最終目標資料空間

如要使用廣色域色彩,裝置的完整顯示堆疊 (例如螢幕、硬體轉譯器、GPU) 必須支援廣色域色彩或緩衝區格式。即使硬體支援,裝置也不必聲明支援寬色域內容。不過,您應啟用廣色域色彩,才能充分發揮硬體效能。為避免視覺體驗不一致,請勿在執行期間關閉廣色域色彩。

相容性

Android 相容性定義說明文件

Android 9 相容性定義說明文件 (CDD) 會根據先前版本進行重複作業,更新新功能,並變更先前發布功能的要求。

設定

更優質的應用程式小工具

Android 應用程式小工具架構可提供更清晰的使用者互動資訊,尤其是當使用者刪除或手動新增小工具時。這項功能預設會隨 Launcher3 提供。

如果不是以 Launcher3 為基礎,製造商就需要更新其啟動器應用程式 (隨裝置出貨),才能支援這項功能。OEM 需要在預設啟動器中支援新的 widgetFeatures 欄位

請注意,只有在啟動器正確實作這項功能時,這項功能才能端對端運作。Android 開放原始碼計畫包含實作範例。如需提供的程式碼範例,請參閱 AOSP Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca。

向套件安裝程式傳送裝置狀態變更通知

只要有語言代碼或顯示密度等屬性發生變更,即可將受保護的系統廣播訊息傳送至擁有 INSTALL_PACKAGES 權限的應用程式。接收器可在資訊清單中註冊,而程序會喚醒以接收廣播訊息。這對套件安裝程式來說十分實用,因為套件安裝程式希望在發生這類變更時安裝應用程式的其他元件,但這種情況並不常見,因為觸發這項廣播的設定變更很少。

裝置狀態變更通知原始碼位於 platform/frameworks/base 下方的以下位置:

  • api/system-current.txt
  • core/java/android/content/Intent.java
  • core/res/AndroidManifest.xml
  • services/core/java/com/android/server/am/ActivityManagerService.java

資訊架構

設定應用程式資訊架構的變更可提供更多功能,並簡化實作程序。

測試

Atest

Atest 指令列工具可讓您在本機建構、安裝及執行 Android 測試,大幅加快測試重跑速度,且無須瞭解 Trade Federation 測試輔助工具指令列選項。

相容性測試套件

CTS 下載

您可以在 CTS 下載項目頁面中,找到支援 Android 9 的 Compatibility Test Suite (CTS) 套件。已納入的測試原始碼可與開放原始碼樹中的 android-cts-9.0_r1 標記保持同步。

CTS 選項

針對 Android 9,CTS 第 2 版會獲得以下指令和引數

  • run retry 會重新執行先前工作階段中失敗或未執行的所有測試。
  • ‘--shard-count 會將 CTS 執行作業分割成指定數量的獨立區塊,以便在多部裝置上並行執行。

此外,先前未記錄的 --retry-type 指令已新增至相同的 CTS 第 2 版主控台指令參考資料。

安全元件 (SE) 服務

安全元件服務會透過判斷裝置是否已導入 SE HAL,以及導入的數量,來檢查全球平台支援的安全元件。這會用來測試 API 和基礎安全元素的實作方式。

感應器融合方塊

感應器融合盒會用於相機圖像測試套件 (相機 ITS) 感應器融合測試和多相機同步測試,並提供一致的測試環境,用於測量 Android 手機相機和其他感應器的時間戳記準確度。如需更多資訊,請參閱下列頁面:

廣角視野的 ITS-in-a-box

廣角視野 ITS-in-a-box 是一套自動化系統,可測試攝影機 ITS 中的廣角視野 (WFoV) 和一般視野 (RFoV) 攝影機系統。

供應商測試套件

主機控制器架構

供應商測試套件 (VTS) 主機控制器架構是 VTS 測試架構的架構,已與其雲端測試服務服務整合。

服務名稱感知 HAL 測試

VTS 服務名稱感知 HAL 測試可根據執行 VTS 測試的裝置,取得特定 HAL 例項的服務名稱。

HAL 可測試性檢查

VTS HAL 可測試性檢查包含執行階段方法,可使用裝置設定來識別應略過哪些 VTS 測試。

自動化測試基礎架構

自動化測試基礎架構是 VTS 基礎架構,可在執行 AOSP 通用系統映像檔 (GSI) 的合作夥伴裝置上,自動執行 VTS、CTS 或其他測試。

偵錯

進階遙測

在 Android 中,「遙測」是指自動收集裝置、Android 系統和應用程式的使用和診斷資訊的程序。在先前版本的 Android 中,遙測堆疊功能受到限制,無法擷取識別及解決系統可靠性和裝置或應用程式問題所需的資訊。這使得找出問題的根本原因變得困難,甚至不可能。

Android 9 包含 statsd 遙測功能,可更快速地收集更優質的資料,解決這項缺陷。statsd 會收集應用程式使用情形、電池和程序統計資料,以及當機情形。我們會分析這些資料,並用於改善產品、硬體和服務。

詳情請參閱 frameworks/base/cmds/statsd/

安全防護功能

應用程式簽署

v3 APK 簽署配置支援 APK 金鑰輪替。

生物辨識支援

Android 9 包含公開類別 BiometricPrompt,應用程式可使用該類別,以不依賴裝置和模式的方式整合生物特徵辨識驗證支援功能。如要進一步瞭解如何整合生物特徵辨識堆疊以納入 BiometricPrompt,請參閱「生物特徵辨識」。

動態分析

Android 9 支援更多漏洞緩解和分析工具

控制流程完整性 (CFI)

控制流程完整性 (CFI) 是一種安全機制,可禁止修改已編譯二進位檔的原始控制流程圖,因此這類攻擊的執行難度會大幅提高。

核心 CFI

除了預設啟用的系統 CFI,Android 9 以上版本也支援核心控制流程完整性 (CFI)

加密

檔案型加密

檔案型加密 (FBE) 已更新,可與可採用的儲存空間搭配運作。新裝置應使用檔案型加密,而非全磁碟加密。

中繼資料加密

Android 9 以上版本支援中繼資料加密功能,前提是硬體支援此功能。使用中繼資料加密功能時,開機時顯示的單一金鑰會使用檔案為基礎的加密功能,加密任何未加密的內容。

KeyStore

Android 9 以上版本包含 Keymaster 4,其中包含這些功能。

StrongBox

Android 9 以上版本支援 Android KeyStore 金鑰,這些金鑰會儲存在專為高安全性應用程式 (例如嵌入式 安全元件 (SE)) 的實體獨立 CPU 中,並在該處使用。StrongBox Keymaster 是 Keymaster HAL 在獨立安全硬體中的實作項目。StrongBox 包含以下內容:

  • 獨立 CPU
  • 整合式安全儲存空間
  • 高品質的真隨機號碼產生器
  • 防竄改包裝
  • 側通道抗性

安全金鑰匯入

如要安全地將金鑰匯入 Keymaster 4,請使用離線建立的金鑰,並透過授權規格加密金鑰,藉此定義金鑰的使用方式。

支援 3DES

Keymaster 4 包含 3DES,可與使用 3DES 的舊版系統相容。

版本繫結

為支援 Treble 的模組化結構,並將 system.img 繫結至 boot.img,Keymaster 4 變更了 key 版本繫結模型,讓每個區隔都有不同的修補程式級別。這樣一來,每個分區都能獨立更新,同時提供復原保護機制。

Android Protected Confirmation API

在搭載 Android 9 的支援裝置上啟動應用程式,開發人員就能使用 Android Protected Confirmation API。有了這個 API,應用程式就能使用 ConfirmationPrompt 的例項,向使用者顯示提示,要求他們核准一則簡短聲明。這項聲明可讓應用程式再次確認使用者是否要完成機密交易,例如付款。

SELinux

每個應用程式的 SELinux 沙箱

應用程式沙箱提供新的防護措施和測試案例,確保所有以 Android 9 以上版本為目標版本的非特權應用程式都能執行個別的 SELinux 沙箱。

Treble SELinux 異動

在 Android 9 以上版本中,Treble SELinux 的更新內容已記載於 SELinux 專區的多個頁面中。

供應商初始化

供應商初始化功能會使用單獨的 SELinux 網域,以供應商專屬權限執行 /vendor 指令,藉此填補 Treble 系統/供應商分割的漏洞。

系統屬性

Android 9 會限制系統屬性不必要地在 systemvendor 分區之間共用,並提供方法確保共用系統屬性之間的一致性。

SELinux 屬性測試

Android 9 包含新的建構時間測試,可確保特定位置的所有檔案都具有適當的屬性。例如,sysfs 中的所有檔案都具有必要的 sysfs_type 屬性。

音訊

高解析度音效

高解析度音效效果的更新內容包括將效果處理從 int16 轉換為浮點格式,並增加同時用戶端輸出音軌、用戶端/伺服器記憶體上限和混合音軌總數。

相機

外接 USB 攝影機

Android 9 以上版本支援使用標準 Android Camera2 API 和相機 HIDL 介面,使用即插即用 USB 相機 (即網路攝影機)。

動作追蹤

攝影機裝置可以宣告動作追蹤功能

支援多相機拍攝

多相機支援包括透過新的邏輯相機裝置提供的 API 支援,該裝置由兩個或多個指向同一方向的實體相機裝置組成。

工作階段參數

實作工作階段參數可讓相機用戶端在擷取工作階段初始化階段中主動設定部分耗用大量資源的要求參數,進而減少延遲時間。

單一生產者、多個消費者緩衝區

單一生產者、多個消費者的相機緩衝區傳輸是一組方法,可讓相機用戶端在擷取工作階段處於活動狀態且相機串流持續進行時,動態新增及移除輸出途徑。

連線能力

通話和傳訊

導入資料企劃書

Android 9 以上版本提供更完善的支援,可讓電信業者使用 SubscriptionPlan API 導入數據方案

第三方通話應用程式

Android 9 以上版本提供 API,可讓第三方 (3P) 通話應用程式處理同時接收的電信業者通話,並將通話記錄在系統通話記錄中。

電信業者

電信業者 ID

在 Android 9 中,AOSP 新增了電信業者 ID 資料庫,以利電信業者識別。資料庫提供通用的識別運營商方式,可減少重複的邏輯和應用程式體驗。

eSIM 卡

嵌入式 SIM 卡 (eSIM 卡或 eUICC) 是最新的技術,可讓行動裝置使用者不必使用實體 SIM 卡,即可下載電信業者設定檔並啟用電信業者的服務。在 Android 9 以上版本中,Android 架構會提供標準 API,用於存取 eSIM 卡和管理 eSIM 卡上的訂閱設定檔。詳情請參閱:

支援多 SIM 卡的 IMS 設定

Android 9 以上版本針對IP 多媒體子系統 (IMS)的使用者設定進行改善。您可以為每個訂閱項目設定 VoLTE、視訊通話和 Wi-Fi 通話功能,而非在所有訂閱項目之間共用這些設定。

SIM 卡狀態廣播

在 Android 9 以上版本中,Intent.ACTION_SIM_STATE_CHANGED 已淘汰,並新增了兩個用於資訊卡狀態和資訊卡應用程式狀態的個別廣播:TelephonyManager.ACTION_SIM_CARD_STATE_CHANGEDTelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED

有了這些變更,只需要知道是否有資訊卡的接收器就不需要監聽應用程式狀態變更,而只需要知道資訊卡應用程式是否已就緒的接收器也不需要監聽資訊卡狀態變更。

這兩個新的廣播訊息為 @SystemApis,且不會保留。只有具備 READ_PRIVILEGED_PHONE_STATE 權限的接收器才能接收廣播訊息。

解鎖裝置時,系統不會重新廣播意圖。如果接收器依賴在您解鎖前傳送的廣播,就必須使用 directBootAware,或是必須在使用者解鎖後查詢狀態。您可以使用 TelephonyManager 中的對應 API 查詢狀態,包括 getSimCardState()getSimApplicationState()

Wi-Fi

電信業者 Wi-Fi

電信業者 Wi-Fi 功能可讓裝置自動連線至電信業者實作的 Wi-Fi 網路。在人潮擁擠或行動網路涵蓋率偏低的地區 (例如體育場或地下火車站),電信業者 Wi-Fi 可改善連線品質,並減輕網路流量。

MAC 隨機化

MAC 隨機化功能可讓裝置在未與網路建立關聯時,使用隨機 MAC 位址來探測新的網路。在 Android 9 以上版本中,您可以啟用開發人員選項,讓裝置在連線至 Wi-Fi 網路時使用隨機 MAC 位址。

自動開啟 Wi‑Fi

啟用「自動開啟 Wi-Fi」功能後,只要裝置位於已儲存的 Wi-Fi 網路附近,且相對接收訊號強度指標 (RSSI) 夠高,系統就會自動重新啟用 Wi-Fi。

Wi-Fi 封包往返時間

Wi-Fi 往返時間 (RTT) 可讓裝置測量與其他支援裝置的距離,無論是存取點 (AP) 還是 Wi-Fi Aware 同類裝置 (如果裝置支援 Wi-Fi Aware)。這項功能是根據 IEEE 802.11mc 協定建構,可讓應用程式使用更精確的定位精確度和感知功能。

改善 Wi-Fi 評分

改良版 Wi-Fi 評分模型可快速且準確地判斷裝置應何時離開已連線的 Wi-Fi 網路,或進入新的 Wi-Fi 網路。這些模型可避免連線中斷,為使用者提供可靠且流暢的體驗。

請查看並調整 config.xml 資源中的 RSSI 值,尤其是下列項目:

  • config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz

Wi-Fi STA/AP 並行作業

Wi-Fi STA/AP 並行運作是指裝置可同時在站台 (STA) 和存取點 (AP) 模式下運作。對於支援雙頻同時 (DBS) Wi-Fi 的裝置,這項功能可提供更多功能,例如在使用者想要啟用無線基地台 (SoftAP) 時,不會中斷 STA Wi-Fi。

WiFiStateMachine 改善

WifiStateMachine 是用於控制 Wi-Fi 活動、協調使用者輸入內容 (運作模式:無線基地台、掃描、連線或關閉) 及控制 Wi-Fi 網路動作 (例如掃描或連線) 的主要類別。

在 Android 9 以上版本中,Wi-Fi 架構程式碼和 WifiStateMachine 的實作方式已重新設計,因此程式碼大小減少、Wi-Fi 控制邏輯更易於理解,控制精細度也更高,單元測試的涵蓋率和品質也因此提升。

整體來說,WifiStateMachine 可讓 Wi-Fi 處於下列四種狀態之一:

  • 用戶端模式 (可連線及掃描)
  • 僅掃描模式
  • SoftAP 模式 (Wi-Fi 無線基地台)
  • 已停用 (Wi-Fi 完全關閉)

每個 Wi-Fi 模式對執行服務的要求不同,因此應以一致的方式設定,只處理與其作業相關的事件。新實作內容會將程式碼限制在與該模式相關的事件中,藉此減少偵錯時間,並降低因複雜性而引入新錯誤的風險。除了明確處理模式功能之外,執行緒管理也以一致的方式處理,並且不再使用非同步管道做為同步機制。

Wi-Fi 權限更新

在 Android 9 以上版本中,CHANGE_WIFI_STATE 應用程式權限預設為啟用。您可以在設定頁面中,依序點選「設定」>「應用程式與通知」>「特殊應用程式存取權」>「Wi-Fi 控制」,停用任何應用程式的權限。

應用程式必須能夠處理未授予 CHANGE_WIFI_STATE 權限的情況。

如要驗證這項行為,請執行 roboelectric 和手動測試。

手動測試:

  1. 依序前往「設定」>「應用程式和通知」>「特殊應用程式存取權」>「Wi-Fi 控制」
  2. 選取應用程式的權限並關閉。
  3. 確認應用程式能處理未授予 CHANGE_WIFI_STATE 權限的情況。

WPS 淘汰

由於安全性問題,WiFiManager 中的 Wi-Fi 保護設定 (WPS) 已淘汰,並在 Android 9 以上版本中停用。不過,WiFiDirect 仍會在 WPA 用戶端中使用 WPS。

圖形

實作

Vulkan 1.1 API

Android 9 以上版本支援導入 Vulkan 1.1 圖形 API

用於追蹤視窗轉換的 WinScope 工具

Android 9 以上版本包含 WinScope 工具,可用於追蹤視窗轉場效果。WinScope 提供基礎架構和工具,可在轉換期間和轉換後記錄及分析視窗管理員狀態。這可讓您錄製並逐步執行視窗轉場作業,同時將所有相關的視窗管理員狀態記錄到追蹤記錄檔。您可以使用這項資料重播並逐步執行轉場效果。

WinScope 工具的原始碼位於 platform/development/tools/winscope

互動

汽車音訊

Automotive Audio 說明汽車相關 Android 導入作業的音訊架構。

神經網路 (NN) HAL 定義了各種加速器的抽象概念。這些加速器的驅動程式必須符合這個 HAL。

車用 HAL

車輛屬性」說明車輛 HAL 介面的變更。

GNSS 衛星選取

使用新的全球衛星導航系統 (GNSS) HAL (1.1 以上版本) 時,Android 架構會監控 Android 設定。合作夥伴可以變更 Google Play 服務或其他系統更新的設定。這些設定會告知 GNSS HAL,是否應使用特定的 GNSS 衛星。這在持續出現 GNSS 衛星或星座錯誤時,或是在使用不同時間系統和外部事件 (例如閏秒、日或週數結束) 時混合星座而可能發生的 GNSS HAL 實作問題時,可能會很有用。

GNSS 硬體型號

在 Android 9 中,GNSS HAL 1.1 以上版本可將硬體 API 的相關資訊傳遞至平台。平台需要實作 IGnssCallback 介面,並將句柄傳遞至 HAL。GNSS HAL 會透過 LocationManager#getGnssHardwareModelName() 方法傳遞硬體型號資訊。裝置製造商應與 GNSS HAL 供應商合作,盡可能提供這項資訊。

權限

設定選用存取控管更新

設定 Discretionary Access Control (DAC) 包含 Android ID (AID) 機制的更新內容,可用於擴充檔案系統功能。

將特殊權限應用程式權限加入許可清單

在 Android 9 以上版本中,如果有需要拒絕的權限,請編輯 XML 以使用 deny-permission 標記,而非先前版本使用的 permission 標記。

資料

改善頻寬估算

Android 9 提供更完善的頻寬估算支援功能。如果 Android 應用程式可以存取可用的資料頻寬,就能為視訊通話和串流影片設定更合適的解析度。

在搭載 Android 6.0 以上版本的裝置上,如果呼叫端想取得行動網路的頻寬預估值,就會呼叫 ConnectivityManager.requestBandwidthUpdate(),而架構「可能」會提供預估的下行鏈路頻寬。

不過,在搭載 Android 9 以上版本的裝置上,當預估頻寬發生重大變更時,系統會自動觸發 onCapabilitiesChanged() 回呼,而呼叫 requestBandwidthUpdate() 則會變成無操作;系統會使用物理層提供的最新資訊填入相關的 getLinkDownstreamBandwidthKbps()getLinkUpstreamBandwidthKbps()

此外,裝置也可以透過 ServiceState.getCellBandwidths() 檢查 LTE 小區頻寬。這可讓應用程式判斷特定儲存格的頻寬 (頻率) 有多少。您可以透過隱藏選單取得無線網路頻寬資訊,讓實地測試人員查看最新資訊。

eBPF 流量監控

eBPF 網路流量工具會結合核心和使用者空間實作,監控裝置自上次開機以來的網路使用情形。這項工具提供額外功能,例如通訊端點標記、分隔前景/背景流量,以及依據裝置狀態封鎖應用程式網路存取權的個別 UID 防火牆。

還原至較舊的 API

裝置現在可以從日後的作業系統版本還原。這項功能在使用者升級手機後,卻遺失或損壞手機時特別實用。

如果原始設備製造商修改任何系統套件 (android、system、settings) 的備份代理程式,這些代理程式應處理在較新版本平台上建立的備份集,且不會發生當機情形,並至少還原部分資料。

建議您使用驗證工具,檢查特定備份資料是否有無效值,並只還原有效的資料,如 core/java/android/provider/SettingsValidators.java 所示。

這項功能預設為開啟。如要關閉 SettingsBackupAgent 支援從未來版本還原的功能,請透過 Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION 進行。除非裝置製造商擴充 ROM 中其中一個備份代理程式 (或新增自訂代理程式),否則不需要額外實作。

這項功能可讓您從未來版本的平台還原系統,但還原的資料可能不會完整。下列說明適用於下列備份代理程式:

  • PackageManagerBackupAgent 會透過格式版本控制支援日後的備份資料版本;此處的擴充功能「必須」與目前的還原程式碼相容,或遵循類別中的指示,包括提升適當的常數。

  • SystemBackupAgent 會在 Android 9 以上版本中指定 restoreAnyVersion = false。不支援從較新版本的 API 還原。

  • SettingsBackupAgent 會在 Android 9 以上版本中指定 restoreAnyVersion = true。部分驗證工具支援此功能。如果目標作業系統中存在設定驗證工具,則可從較高的 API 版本還原設定。新增任何設定時,都應搭配驗證器。詳情請參閱該課程。

  • 只要備份資料格式發生不相容的變更,ROM 中包含的任何自訂備份代理程式都應增加版本代碼,並確保代理程式在準備處理日後版本程式碼的備份資料時,不會使用 restoreAnyVersion = false (預設值)。

Enterprise

受管理設定檔的改善項目

受管理設定檔的使用者體驗變更,可讓使用者更輕鬆地識別、存取及控管受管理設定檔。

暫停 OTA

新的 @SystemApi 可讓裝置擁有者無限期暫停 OTA 更新,包括安全性更新。

成效

健康 2.0

Android 9 以上版本包含 android.hardware.health HAL 2.0,這是從 health@1.0 HAL 升級而來的重大版本。如需更多資訊,請參閱下列頁面:

APK 快取解決方案

Android 9 以上版本包含 APK 快取解決方案,可在支援 A/B 分區的裝置上快速安裝預先載入的應用程式。原始設備製造商 (OEM) 可以在新的 A/B 分割區裝置上,將預先載入和熱門應用程式放入 APK 快取,這些快取大多儲存在空白的 B 分割區,不會影響任何面向使用者的資料空間。

設定檔引導最佳化

Android 9 以上版本支援在具有藍圖建構規則的原生 Android 模組上使用 Clang 的設定檔引導最佳化 (PGO)

預寫記錄

SQLiteDatabase 的特殊模式稱為「相容性預先寫入記錄 (WAL)」,可讓資料庫使用 journal_mode=WAL,同時讓每個資料庫最多保留一個連線。

啟動時間

Android 9 會變更啟動時間最佳化設定,如「最佳化啟動時間」一文所述。

電源

背景限制

Android 9 以上版本包含背景限制,可讓使用者限制可能耗用電力的應用程式。系統也可能會建議您停用對裝置健康有負面影響的應用程式。

無電池裝置

相較於先前版本,Android 9 處理無電池裝置的方式更為流暢。Android 9 會移除無電池裝置的程式碼,這些裝置預設會假設有電池、已充飽電,且健康狀況良好,並且在熱敏電阻上顯示正常的溫度讀數。