يتوافق الإصدار 15 من نظام التشغيل Android (AOSP التجريبي) والإصدارات الأحدث مع نظام التشغيل Android بحجم صفحة 16 كيلوبايت. يستخدم هذا الخيار ذاكرة إضافية ولكن تحسين أداء النظام.
لا تتوافق الصفحات التي يبلغ حجمها 16 كيلوبايت إلا مع استهدافات arm64
ذات النواة التي يبلغ حجمها 16 كيلوبايت.
ومع ذلك، هناك أيضًا خيار
محاكاة مساحة المستخدم التي تبلغ 16 كيلوبايت على x86_64
لتطبيق حبَّار.
لتفعيل صفحات 16 كيلوبايت، يجب ضبط خيارات الإصدار التالية على جهاز:
- تُزيل ميزة "
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
"PAGE_SIZE
. وتجعل المكونات تحدد حجم الصفحة في وقت التشغيل. PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
الذي يضمن ملفات ELF للنظام الأساسي تم تصميمها بتوافق 16 كيلوبايت. هذا الحجم الأكبر من المطلوب مخصص التوافق المستقبلي. من خلال محاذاة ELF التي تبلغ 16 كيلوبايت، يمكن للنواة دعم أحجام الصفحات: 4 كيلوبايت/16 كيلوبايت.
التأكّد من علامات الإصدار
بعد اختيار هدف 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
على التوالي، سيتم
يتم إعداد العلامات بشكل صحيح.
إنشاء مكتبات مشتركة باستخدام تنسيق ELF الذي يبلغ 16 كيلوبايت
لإنشاء مكتبات مشتركة تشكل جزءًا من مشروع Android، ما عليك سوى وضع علامات الإصدار هذه في هدفك:
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
لإنشاء مكتبات مشتركة ليست جزءًا من مشروع Android، تحتاج إلى تمرير علامة الربط هذه:
-Wl,-z,max-page-size=16384
التحقُّق من البرامج الثنائية والعناصر المُعَدة مسبقًا لمحاذاة ELF بحجم 16 كيلوبايت
إن أفضل طريقة للتحقق من المحاذاة وسلوك بيئة التشغيل هي الاختبار والتشغيل على نواة مجمّعة بحجم 16 كيلوبايت. ومع ذلك، للتعرّف على بعض المشاكل في وقت سابق:
بدءًا من إصدار Android W (الإصدار التجريبي من AOSP)، يمكنك ضبط
PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true
في وقت الإصدار استخدامignore_max_page_size: true
فيAndroid.bp
وLOCAL_IGNORE_MAX_PAGE_SIZE := true
فيAndroid.mk
لتجاهلها مؤقتًا معهم. تتحقّق هذه الإعدادات من جميع الإعدادات المسبقة الإنشاء وتسمح لك باكتشاف حالات يتم تحديثها ولكن لا تتم محاذاتها مع 16 كيلوبايت.يمكنك تشغيل
atest elf_alignment_test
الذي يتحقق من توافق ملفات ELF المحفوظة على الجهاز فقط على الأجهزة عند إطلاقها الإصدار 15 من نظام التشغيل Android (الإصدار التجريبي من AOSP) والإصدارات الأحدث