लागू करना
Android 9 और इससे पुराने वर्शन वाले Android डिवाइसों में A/B पार्टीशन की सुविधा होती है. ये डिवाइस, पहले से ऑप्टिमाइज़ की गई VDEX/ODEX फ़ाइलों को सेव करने के लिए, system_other के इनऐक्टिव पार्टीशन का इस्तेमाल कर सकते हैं. उदाहरण के लिए, अगर slot_a ऐक्टिव है, तो system_b का इस्तेमाल किया जा सकता है. system_other का इस्तेमाल करने पर, पैकेज मैनेजर सेवा के लिए
ro.cp_system_other_odex की वैल्यू 1 पर सेट हो जाती है. इससे cppreopts.rc
के लिए sys.cppreopt=requested सेट हो जाता है और यह इस पर कार्रवाई कर पाता है.
Android 10 में, libfs_avb
पार्टीशन के लिए, AVB की पुष्टि करने की सुविधा जोड़ी गई है. इसके लिए,
system_other को जोड़ा गया है. ऐसे पार्टीशन के VBMeta स्ट्रक्चर को पार्टीशन के आखिर में जोड़ा जाता है, ताकि फ़ाइल सिस्टम से सार्वजनिक कुंजी की मदद से इसकी पुष्टि की जा सके. Android का बिल्ड सिस्टम, /product/etc/security/avb/system_other.avbpubkey में, पुष्टि करने वाली कुंजी को शामिल करते हुए, system_other.img पर हस्ताक्षर करने की सुविधा देता है. sign_target_files_apks.py रिलीज़ टूल, रिलीज़ के लिए तैयार वर्शन के लिए, पुष्टि करने वाली कुंजी को बदलने की सुविधा भी देता है.
Android 10 से पहले लॉन्च किए गए A/B डिवाइसों में, system_other का फ़िज़िकल पार्टीशन होता है. भले ही, उन्हें PRODUCT_RETROFIT_DYNAMIC_PARTITIONS की वैल्यू true पर सेट करके, Android 10 पर अपग्रेड किया गया हो.
Android 10 के साथ लॉन्च किए गए A/B डिवाइसों में, system_other का लॉजिकल पार्टीशन होना चाहिए. यहां दिए गए उदाहरण में, fstab.postinstall की एक सामान्य फ़ाइल दिखाई गई है. इससे system_other पर AVB की सुविधा चालू हो जाती है.
#<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