एंड्रॉइड 15 (एओएसपी प्रयोगात्मक) और उच्चतर में 16kB पेज आकार के साथ एंड्रॉइड बनाने के लिए समर्थन है। यह विकल्प अतिरिक्त मेमोरी का उपयोग करता है लेकिन सिस्टम प्रदर्शन में सुधार करता है।
16kB पेज केवल 16kB कर्नेल वाले arm64
लक्ष्य पर समर्थित हैं। हालाँकि, कटलफिश के लिए x86_64
पर 16KB उपयोक्ता स्थान अनुकरण करने का विकल्प भी है।
16kB पृष्ठों को सक्षम करने के लिए, डिवाइस पर निम्नलिखित बिल्ड विकल्प सेट करें:
-
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
PAGE_SIZE
परिभाषित को हटा देता है, और यह घटकों को रनटाइम पर पृष्ठ आकार निर्धारित करने देता है। -
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
जो सुनिश्चित करता है कि प्लेटफ़ॉर्म ELF फ़ाइलें 16kB संरेखण के साथ बनाई गई हैं। यह आवश्यकता से बड़ा आकार भविष्य की अनुकूलता के लिए है। 16kB ELF संरेखण के साथ, कर्नेल 4kB/16kB पृष्ठ आकार का समर्थन कर सकता है।
बिल्ड फ़्लैग सत्यापित करें
lunch
लक्ष्य का चयन करने के बाद, सत्यापित करें कि बिल्ड फ़्लैग वातावरण में सही ढंग से स्थापित किए गए हैं:
$ source build/envsetup.sh
$ lunch target
$ get_build_var TARGET_MAX_PAGE_SIZE_SUPPORTED
16384
$ get_build_var TARGET_NO_BIONIC_PAGE_SIZE_MACRO
true
यदि पिछले दो आदेश क्रमशः 16384
और true
लौटाते हैं, तो आपके बिल्ड फ़्लैग सही ढंग से सेट किए गए हैं।
16kB ELF संरेखण के साथ साझा लाइब्रेरी बनाएं
एंड्रॉइड प्रोजेक्ट का हिस्सा साझा लाइब्रेरी बनाने के लिए, आपको केवल इन बिल्ड फ़्लैग को अपने लक्ष्य में सेट करना होगा:
-
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
-
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
साझा लाइब्रेरीज़ बनाने के लिए जो एंड्रॉइड प्रोजेक्ट का हिस्सा नहीं हैं, आपको इस लिंकर फ़्लैग को पास करना होगा:
-Wl,-z,max-page-size=16384