Implementação
Dispositivos com tecnologia Android com o Android 9 e versões anteriores que tenham 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 que o serviço do gerenciador de pacotes
defina sys.cppreopt=requested
para que cppreopts.rc
atue nele.
No Android 10, o libfs_avb
foi introduzido para oferecer suporte à verificação autônoma do AVB para a
partição system_other
. O struct VBMeta dessa partição é
anexado ao final da partição para ser verificado por uma chave pública esperada
do sistema de arquivos. O sistema de build 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 oferece suporte à substituição da chave
de assinatura por uma versão de lançamento.
Dispositivos A/B lançados antes do Android 10 têm uma partição
system_other
física, mesmo que sejam atualizados para o Android 10 com
PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
definido como true
.
Os dispositivos A/B lançados com o Android 10 precisam ter uma partição
system_other
lógica. O exemplo a seguir mostra um arquivo
fstab.postinstall
típico que ativa o AVB no
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
precisam 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