實作
如果 Android 裝置搭載 Android 9 以下版本,且有 A/B 分區,則可使用無效的 system_other
分區 (例如在 slot_a
啟用時為 system_b
) 儲存預先最佳化的 VDEX/ODEX 檔案。使用 system_other
時,ro.cp_system_other_odex
會設為 1,讓套件管理員服務設定 sys.cppreopt=requested
,以便 cppreopts.rc
對其採取行動。
在 Android 10 中,libfs_avb
已推出,可支援 system_other
分區的獨立 AVB 驗證。此類分區的 VBMeta 結構體會附加至分區結尾,以便由檔案系統的預期公開金鑰驗證。Android 建構系統支援簽署 system_other.img
,同時在 /product/etc/security/avb/system_other.avbpubkey
下加入對應的簽署金鑰。發布工具 sign_target_files_apks.py
也支援將簽署金鑰取代為發布版本。
在 Android 10 之前推出的 A/B 裝置都有實體分割區,system_other
即使升級至 Android 10,PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
也設定為 true
。
搭載 Android 10 的 A/B 裝置必須有邏輯 system_other
分割區。以下範例顯示在 system_other
上啟用 AVB 的一般 fstab.postinstall
檔案。
#<dev> <mnt_point> <type> <mnt_flags options> <fs_mgr_flags> system /postinstall ext4 ro,nosuid,nodev,noexec slotselect_other,logical,avb_keys=/product/etc/security/avb/system_other.avbpubkey
需要在 system_other
分區啟用 AVB 的裝置,應將 fstab
檔案放在產品分區,並將屬性 ro.postinstall.fstab.prefix
設為 /product
。
# Use /product/etc/fstab.postinstall to mount system_other. PRODUCT_PRODUCT_PROPERTIES += \ ro.postinstall.fstab.prefix=/product PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/fstab.postinstall:$(TARGET_COPY_OUT_PRODUCT)/etc/fstab.postinstall