구현
A/B 파티션이 있는 Android 9 이하의 Android 구동 기기는 비활성 system_other
파티션(예: slot_a
활성화 시 system_b
)을 사용하여 사전 최적화된 VDEX/ODEX 파일을 저장할 수 있습니다. system_other
사용 시 ro.cp_system_other_odex
가 1로 설정되어 패키지 관리자 서비스는 cppreopts.rc
가 작동하도록 sys.cppreopt=requested
를 설정합니다.
Android 10에서 libfs_avb
는 system_other
파티션의 독립형 AVB 인증을 지원하기 위해 도입되었습니다. 이러한 파티션의 VBMeta 구조체는 파티션의 끝에 추가되어 파일 시스템의 예상된 공개 키에 의해 인증됩니다. Android 빌드 시스템은 system_other.img
서명을 지원하는 동시에 /product/etc/security/avb/system_other.avbpubkey
아래에 상응하는 서명 키를 포함합니다. 출시 도구 sign_target_files_apks.py
는 서명 키를 출시 버전으로 바꾸는 것도 지원합니다.
Android 10 이전에 출시된 A/B 기기는 PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
가 true
로 설정된 상태에서 Android 10으로 업그레이드되었더라도 실제 system_other
파티션이 있습니다.
Android 10으로 출시된 A/B 기기에는 논리 system_other
파티션이 있어야 합니다. 다음 예는 system_other
에서 AVB를 사용 설정하는 일반적인 fstab.postinstall
파일을 보여줍니다.
#<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
system_other
파티션에서 AVB를 사용 설정해야 하는 기기는 제품 파티션에 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