เปิดใช้หน้าขนาด 16 KB

Android 15 (เวอร์ชันทดลอง AOSP) ขึ้นไปรองรับการสร้าง Android ที่มีขนาดหน้า 16 KB ตัวเลือกนี้จะใช้หน่วยความจำเพิ่มเติม แต่จะช่วยปรับปรุงประสิทธิภาพของระบบ

หน้าขนาด 16 KB ใช้ได้กับเป้าหมาย arm64 ที่มีเคอร์เนล 16 KB เท่านั้น อย่างไรก็ตาม ยังมีตัวเลือกในการจำลองพื้นที่ผู้ใช้ขนาด 16 KB บน x86_64 สำหรับ Cuttlefish ด้วย

หากต้องการเปิดใช้หน้าขนาด 16 KB ให้ตั้งค่าตัวเลือกเวอร์ชันต่อไปนี้ในอุปกรณ์

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true จะนำการกำหนด PAGE_SIZE ออกและกำหนดให้คอมโพเนนต์กำหนดขนาดของหน้าขณะรันไทม์
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 ซึ่งช่วยให้มั่นใจได้ว่าไฟล์ ELF ของแพลตฟอร์ม สร้างขึ้นด้วยการวางแนว 16 KB ขนาดที่ใหญ่กว่าที่ต้องการนี้มีไว้สำหรับความเข้ากันได้ในอนาคต การปรับแนว ELF 16 KB ทำให้เคอร์เนลรองรับหน้าขนาด 4 KB/16 KB ได้

ยืนยัน Flag ของบิลด์

หลังจากเลือกเป้าหมาย 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

หาก 2 คำสั่งก่อนหน้าแสดงผล 16384 และ true ตามลำดับ แสดงว่าตั้งค่าแฟล็กบิลด์ถูกต้องแล้ว

สร้างคลังภาพที่แชร์โดยมีการวางแนว ELF ขนาด 16 KB

หากต้องการสร้างไลบรารีที่ใช้ร่วมกันซึ่งเป็นส่วนหนึ่งของโปรเจ็กต์ Android คุณจะต้องตั้งค่าแฟล็กบิลด์เหล่านี้ในเป้าหมายเท่านั้น

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

หากต้องการสร้างไลบรารีที่แชร์ร่วมกันที่ไม่ได้เป็นส่วนหนึ่งของโปรเจ็กต์ Android คุณต้องส่ง Flag Linker นี้

-Wl,-z,max-page-size=16384

ตรวจสอบไบนารีและไฟล์ที่สร้างไว้ล่วงหน้าเพื่อการตรวจสอบความสอดคล้อง ELF ขนาด 16 KB

วิธีที่ดีที่สุดในการตรวจสอบการตรวจสอบความสอดคล้องและลักษณะรันไทม์คือการทดสอบและเรียกใช้บนเคอร์เนลที่คอมไพล์แล้วขนาด 16 KB อย่างไรก็ตาม เพื่อตรวจหาปัญหาบางอย่างก่อนหน้านี้:

  • เริ่มตั้งแต่ 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 KB

  • คุณสามารถเรียกใช้ atest elf_alignment_test ซึ่งจะยืนยันความสอดคล้องของไฟล์ ELF ในอุปกรณ์ในอุปกรณ์ที่เปิดตัวด้วย Android 15 (เวอร์ชันทดลอง AOSP) ขึ้นไป