Implementación
Los dispositivos con Android 9 y versiones anteriores que tienen particiones A/B pueden usar la partición system_other
inactiva (por ejemplo, system_b
cuando slot_a
está activa) para almacenar archivos VDEX/ODEX preoptimizados. Cuando se usa system_other
, ro.cp_system_other_odex
se establece en 1 para que el servicio del administrador de paquetes establezca sys.cppreopt=requested
para que cppreopts.rc
actúe en él.
En Android 10, se presenta libfs_avb
para admitir la verificación de AVB independiente para la partición system_other
. La estructura VBMeta de esa partición se agrega al final de la partición, para que se verifique con una clave pública esperada del sistema de archivos. El sistema de compilación de Android admite la firma de system_other.img
y, al mismo tiempo, incluye la clave de firma correspondiente en /product/etc/security/avb/system_other.avbpubkey
. La herramienta de lanzamiento sign_target_files_apks.py
también admite reemplazar la clave de firma por una versión de lanzamiento.
Los dispositivos A/B lanzados antes de Android 10 tienen una partición system_other
física, incluso si se actualiza a Android 10 con PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
establecido en true
.
Los dispositivos A/B que se inicien con Android 10 deben tener una partición system_other
lógica. En el siguiente ejemplo, se muestra un archivo fstab.postinstall
típico que habilita AVB en 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
Los dispositivos que deben habilitar AVB en la partición system_other
deben colocar el archivo fstab
en la partición del producto y establecer la propiedad ro.postinstall.fstab.prefix
en /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