Implementacja
Urządzenia z Androidem 9 lub starszym, które mają partycje A/B, mogą używać nieaktywnej partycji system_other
(na przykład system_b
, gdy aktywna jest slot_a
) do przechowywania wstępnie zoptymalizowanych plików VDEX/ODEX. Gdy używasz parametru system_other
, parametr ro.cp_system_other_odex
ma wartość 1, aby usługa menedżera pakietów mogła ustawić parametr sys.cppreopt=requested
na wartość cppreopts.rc
.
W Androidzie 10 wprowadzono libfs_avb
, aby obsługiwać samodzielną weryfikację AVB w przypadku partycji system_other
. Struktura VBMeta takiej partycji jest dołączana na końcu partycji, aby można ją było zweryfikować za pomocą oczekiwanego klucza publicznego z systemu plików. System kompilacji Androida obsługuje podpisywanie system_other.img
, uwzględniając odpowiedni klucz podpisywania w sekcji /product/etc/security/avb/system_other.avbpubkey
. Narzędzie do publikowania sign_target_files_apks.py
obsługuje też zastępowanie klucza podpisywania wersją opublikowaną.
Urządzenia A/B wprowadzone na rynek przed Androidem 10 mają fizyczny partycjisystem_other
, nawet jeśli zostały zaktualizowane do Androida 10 z opcją PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
ustawioną na true
.
Urządzenia z testem A/B z Androidem 10 muszą mieć partycję logiczną system_other
. Ten przykład pokazuje typowy plik fstab.postinstall
, który włącza AVB na interfejsie 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
Urządzenia, które mają włączyć AVB na partycji system_other
, powinny umieścić plik fstab
w partycji produktu i ustawić właściwość ro.postinstall.fstab.prefix
na /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