Implementazione
I dispositivi con Android 9 e versioni precedenti con partizioni A/B possono
utilizzare la partizione system_other
inattiva (ad esempio,
system_b
quando slot_a
è attivo) per archiviare file VDEX/ODEX
preottimizzati. Quando viene utilizzato system_other
,
ro.cp_system_other_odex
viene impostato su 1 per il servizio del gestore di pacchetti
per impostare sys.cppreopt=requested
in modo che cppreopts.rc
agisca su di esso.
In Android 10 viene introdotto libfs_avb
per supportare la verifica AVB autonoma per la partizione system_other
. La struttura VBMeta di una partizione simile viene aggiunta alla fine della partizione per essere verificata da una chiave pubblica prevista dal file system. Il sistema di build Android supporta la firma
system_other.img
, inclusa la chiave di firma corrispondente
in /product/etc/security/avb/system_other.avbpubkey
. Lo strumento di rilascio sign_target_files_apks.py
supporta anche la sostituzione della chiave di firma con una versione di rilascio.
I dispositivi A/B lanciati prima di Android 10 hanno una partizione system_other
fisica, anche se è stato eseguito l'upgrade ad Android 10 con PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
impostato su true
.
I dispositivi A/B lanciati con Android 10 devono avere una partizione system_other
logica. L'esempio seguente mostra un file fstab.postinstall
tipico che attiva AVB su system_other
.
#<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
I dispositivi che devono attivare AVB nella partizione system_other
devono posizionare il file fstab
nella partizione del prodotto e impostare la proprietà ro.postinstall.fstab.prefix
su /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