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) ขึ้นไป