Implementação
Dispositivos com Android com Android 9 e versões anteriores que possuem partições A/B podem usar a partição system_other
inativa (por exemplo, system_b
quando slot_a
está ativo) para armazenar arquivos VDEX/ODEX pré-otimizados. Quando system_other
é usado, ro.cp_system_other_odex
é definido como 1 para o serviço do gerenciador de pacotes definir sys.cppreopt=requested
para que cppreopts.rc
atue nele.
No Android 10,libfs_avb
é introduzido para oferecer suporte à verificação AVB independente para a partição system_other
. A estrutura VBMeta de tal partição é anexada ao final da partição, para ser verificada por uma chave pública esperada do sistema de arquivos. O sistema de compilação do Android oferece suporte à assinatura system_other.img
, incluindo a chave de assinatura correspondente em /product/etc/security/avb/system_other.avbpubkey
. A ferramenta de lançamento sign_target_files_apks.py
também suporta a substituição da chave de assinatura por uma versão de lançamento.
Os dispositivos A/B lançados antes do Android 10 têm uma partição física system_other
, mesmo que tenham sido atualizados para o Android 10 com PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
definido como true
.
Dispositivos A/B lançados com Android 10 devem ter uma partição lógica system_other
. O exemplo a seguir mostra um arquivo fstab.postinstall
típico que habilita AVB em 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
Os dispositivos que precisam ativar o AVB na partição system_other
devem colocar o arquivo fstab
na partição do produto e definir a propriedade ro.postinstall.fstab.prefix
como /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