اندروید 15 (AOSP آزمایشی) و بالاتر از ساخت اندروید با اندازه صفحه 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، هسته میتواند اندازههای صفحه 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 کیلوبایت
برای ساخت کتابخانه های مشترک که بخشی از پروژه اندروید هستند، فقط باید این پرچم های ساخت را در هدف خود تنظیم کنید:
-
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
-
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
برای ساخت کتابخانه های مشترک که بخشی از پروژه اندروید نیستند، باید این پرچم پیوند دهنده را پاس کنید:
-Wl,-z,max-page-size=16384