Android 裝置包含多個分區或特定的儲存空間區段,用於容納裝置軟體的特定部分。每個分區都包含分區映像檔 (IMG 檔案) 或分區的所有軟體快照。圖 1 顯示裝置上核心分區的版面配置:
圖 1. 核心分區的版面配置。
分區分為三類:
系統分割區是指在更新 OS 和其他功能時更新的分割區。
system
、boot
和init_boot
是核心系統分區。供應商分區包含裝置和硬體專屬程式碼,這些程式碼可能在初始發布後就不會再更新。
vendor
、vendor_boot
和odm
分區是核心供應商分區。無法更新的分區是指內容未更新或未使用使用者資料更新的分區。
系統和供應商分區中的程式碼可透過稱為「供應商介面 (VINTF)」的穩定介面互動。
系統分區
以下列出所有系統分區及其用途:
boot
區隔。這個分割區包含通用核心映像檔 (GKI)。這個分割區也包含 Android 12 以下版本裝置中的通用 RAM 磁碟。如要進一步瞭解通用 RAM 磁碟,請參閱「通用 RAM 磁碟映像檔內容」。init_boot
分割區 (Android 13 以上版本)。這個分割區包含一般 RAM 磁碟。在 Android 11 和 12 中,通用 RAM 磁碟位於boot
分區。system
區隔。這個分區包含原始設備製造商 (OEM) 產品使用的系統映像檔。system_ext
區隔。這個分區包含系統資源和專屬系統模組,可在system
分區中擴充常見的系統映像檔。system_dlkm
區隔。這個分割區包含 GKI 模組。如要進一步瞭解此分割區,請參閱「實作 GKI 模組分割區」。product
區隔。這個分區可包含未與任何其他分區捆綁的產品專屬模組。pvmfw
區隔。這個分割區會儲存 Protected Virtual Machine Firmware (pvmfw),這是在受保護的 VM 中執行的第一個程式碼。詳情請參閱「受保護的虛擬機器韌體」。generic_bootloader
區隔。這個分區包含通用的啟動載入程式。
供應商分區
以下列出所有供應商分區及其用途:
vendor_boot
區隔。這個分割區包含供應商專屬的啟動程式碼。詳情請參閱「供應商啟動分區」。recovery
區隔。這個分割區會儲存復原映像檔,並在無線更新 (OTA) 程序期間啟動。支援無縫更新的裝置可以將復原映像檔儲存為boot
或init_boot
映像檔中的 RAM 磁碟。如要進一步瞭解無縫更新,請參閱「A/B (無縫) 更新」。vbmeta
區隔。這個分區包含所有分區的 Verified Boot 資訊。這項資訊可驗證在各個分區中安裝的映像檔是否可信任。如要進一步瞭解驗證開機程序,請參閱「驗證開機程序」。vendor
區隔。這個分割區包含任何供應商專屬的二進位檔,且不夠通用,無法分發至 Android 開放原始碼計畫。vendor_dlkm
區隔。這個分割區包含供應商核心模組。將供應商核心模組儲存在這個分區 (而非vendor
分區) 中,即可在不更新vendor
分區的情況下更新核心模組。詳情請參閱「供應商和 ODM DKLM 分區」。odm
區隔。這個分區包含原始設計製造商 (ODM) 對晶片系統 (SoC) 供應商板卡支援套件 (BSP) 的客製化設定。這類自訂功能可讓 ODM 取代或自訂 SoC 元件,並在硬體抽象層 (HAL) 上為板卡專屬元件、守護程序和 ODM 專屬功能實作核心模組。這個分割區為選用分割區。這個分割區通常用於包含自訂項目,讓裝置可為多個硬體 SKU 使用單一供應商映像檔。詳情請參閱ODM 分區。odm_dlkm
區隔。這個分割區專門用於儲存 ODM 核心模組。將 ODM 核心模組儲存在這個分區 (而非odm
分區) 中,即可更新 ODM 核心模組,而無須更新odm
分區。詳情請參閱「供應商和 ODM DKLM 分區」。radio
區隔。這個分割區包含無線電映像檔,只有在裝置中含有無線電,且在專用分割區中含有無線電專屬軟體時,才需要這個分割區。
無法更新的分區
以下列出所有無法更新的分區及其用途:
cache
區隔。這個分割區包含暫時性資料,如果裝置使用無縫更新,則可選使用。這個分割區不需要透過啟動載入程式寫入,但需要能夠擦除。分割區大小取決於裝置類型和userdata
的可用空間;通常 50 到 100 MB 就足夠了。userdata
區隔。這個分割區包含使用者安裝的應用程式和資料,包括自訂資料。metadata
區隔。如果裝置使用中繼資料加密功能,這個分割區就會包含中繼資料加密金鑰。這個分割區的大小為 16 MB 或更大,且未加密,也未擷取快照。裝置恢復原廠設定時,這個分割區會遭到刪除。
分區更新規則和最佳化建議
建議您一次更新所有系統分區,並另外一次更新所有供應商分區。只要將整組分區一起更新,您就能測試驗證各個分區中圖片之間的介面是否保持穩定。
無論您如何更新分區,下列分區都必須更新,因為它們有緊密相依的依附元件,且缺少穩定版 API:
boot
和system_dlkm
分區init_boot
、system
、system_ext
和product
分割區
動態分割區
搭載 Android 11 以上版本的裝置可支援動態分割區,這是 Android 的使用者空間分割區系統,可讓您在無線 (OTA) 更新期間建立、調整大小或刪除分割區。詳情請參閱「動態分區」。
misc
區隔。這個分區由復原分區使用,大小為 4 KB 以上。tos
區隔。這個分割區包含 Trusty OS 的二進位映像檔,且只有在裝置包含 Trusty 時才會使用。詳情請參閱「Trusty OS (TOS) 分區」。
Soong 產品子類
Soong 建構系統會使用圖片變化版本來分割建構依附元件。原生模組 (/build/soong/cc
) 可將系統處理模組變異為核心變化版本,將供應商處理模組變異為供應商變化版本;一個映像檔變化版本中的模組無法連結至其他映像檔變化版本中的其他模組。
在 Android 12 以上版本中,含有 vendor_available: true
的系統模組會在核心變化版本之外建立供應商變化版本。如要建立產品子類,必須定義 product_available: true
。部分沒有 product_available: true
的 VNDK 程式庫無法用於產品模組。