Implementierung
Android-Geräte mit Android 9 und niedriger, die über A/B-Partitionen verfügen, können die inaktive system_other
Partition (z. B. system_b
, wenn slot_a
aktiv ist) zum Speichern voroptimierter VDEX/ODEX-Dateien verwenden. Wenn system_other
verwendet wird, wird ro.cp_system_other_odex
auf 1 gesetzt, damit der Paketmanagerdienst sys.cppreopt=requested
festlegt, damit cppreopts.rc
darauf reagieren kann.
In Android 10 wirdlibfs_avb
eingeführt, um die eigenständige AVB-Überprüfung für die system_other
Partition zu unterstützen. Die VBMeta-Struktur einer solchen Partition wird an das Ende der Partition angehängt, um durch einen erwarteten öffentlichen Schlüssel aus dem Dateisystem überprüft zu werden. Das Android-Build-System unterstützt das Signieren system_other.img
und fügt gleichzeitig den entsprechenden Signaturschlüssel unter /product/etc/security/avb/system_other.avbpubkey
ein. Das Release-Tool sign_target_files_apks.py
unterstützt auch das Ersetzen des Signaturschlüssels durch eine Release-Version.
A/B-Geräte, die vor Android 10 gestartet wurden, verfügen über eine physische system_other
Partition, auch wenn sie auf Android 10 aktualisiert wurde und PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
auf true
gesetzt ist.
Mit Android 10 gestartete A/B-Geräte müssen über eine logische system_other
Partition verfügen. Das folgende Beispiel zeigt eine typische fstab.postinstall
Datei, die AVB auf system_other
aktiviert.
#<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
Geräte, die AVB auf der system_other
Partition aktivieren müssen, sollten die fstab
Datei in der Produktpartition platzieren und die Eigenschaft ro.postinstall.fstab.prefix
auf /product
setzen.
# 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