يتوافق الإصدار Android 15 (الإصدار التجريبي من AOSP) والإصدارات الأحدث مع إصدار Android بحجم صفحة يبلغ 16 كيلوبايت. يستخدم هذا الخيار ذاكرة إضافية ولكنه يحسن أداء النظام.
لا تتوافق الصفحات التي يبلغ حجمها 16 كيلوبايت إلا مع استهدافات arm64
ذات النواة التي يبلغ حجمها 16 كيلوبايت.
ومع ذلك، هناك خيار لمحاكاة مساحة المستخدم التي تبلغ 16 كيلوبايت على x86_64
لتطبيق Cuttlefish.
لتفعيل صفحات 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) والإصدارات الأحدث.