लागू करना
Android 9 और इससे पहले के वर्शन वाले Android डिवाइसों में A/B पार्टीशन होते हैं. ये डिवाइस, पहले से ऑप्टिमाइज़ की गई VDEX/ODEX फ़ाइलों को सेव करने के लिए, इनऐक्टिव system_other पार्टीशन का इस्तेमाल कर सकते हैं. उदाहरण के लिए, system_bजब slot_a ऐक्टिव हो. 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 डिवाइसों में, फ़िज़िकल system_other पार्टीशन होता है. भले ही, इसे Android 10 पर अपग्रेड किया गया हो और PRODUCT_RETROFIT_DYNAMIC_PARTITIONS को true पर सेट किया गया हो.
Android 10 वर्शन के साथ लॉन्च किए गए A/B डिवाइसों में, लॉजिकल 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
जिन डिवाइसों को 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