Выполнение
Устройства на базе Android с Android 9 и ниже, имеющие разделы A/B, могут использовать неактивный раздел system_other
(например, system_b
, когда slot_a
активен) для хранения предварительно оптимизированных файлов VDEX/ODEX. Когда используется system_other
, ro.cp_system_other_odex
устанавливается в 1 для службы менеджера пакетов, чтобы установить sys.cppreopt=requested
для cppreopts.rc
для работы с ним.
В Android 10 введена libfs_avb
для поддержки автономной проверки AVB для раздела system_other
. Структура VBMeta такого раздела добавляется в конец раздела для проверки ожидаемым открытым ключом из файловой системы. Система сборки Android поддерживает подпись system_other.img
, включая соответствующий ключ подписи в /product/etc/security/avb/system_other.avbpubkey
. Инструмент выпуска sign_target_files_apks.py
также поддерживает замену ключа подписи на версию выпуска.
Устройства A/B, выпущенные до Android 10, имеют физический раздел system_other
, даже если они обновлены до Android 10 с PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
, установленным на true
.
Устройства A/B, запущенные с Android 10, должны иметь логический раздел system_other
. В следующем примере показан типичный файл fstab.postinstall
, который включает AVB на 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
Устройства, которым необходимо включить AVB в разделе system_other
должны поместить файл 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