Android 15 (Eksperimental AOSP) dan yang lebih tinggi memiliki dukungan untuk proses build Android dengan ukuran halaman 16 KB. Opsi ini menggunakan memori tambahan tetapi meningkatkan performa sistem.
Halaman berukuran 16 KB hanya didukung di target arm64
dengan kernel 16 KB.
Namun, ada juga pilihan untuk
simulasikan ruang pengguna 16 KB di x86_64
untuk Cuttlefish.
Untuk mengaktifkan halaman berukuran 16 KB, tetapkan opsi build berikut di perangkat:
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
menghapusPAGE_SIZE
mendefinisikan, dan membuat komponen menentukan ukuran halaman pada saat {i>runtime<i}.PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
yang memastikan file ELF platform dibuat dengan keselarasan 16 KB. Ukuran yang lebih besar dari yang dibutuhkan ini untuk kompatibilitas mundur pada masa mendatang. Dengan penyelarasan ELF 16 KB, kernel dapat mendukung Ukuran halaman 4 KB/16 KB.
Memverifikasi flag build
Setelah memilih target lunch
, pastikan tanda build telah disiapkan
dengan benar di lingkungannya:
$ 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
Jika dua perintah sebelumnya menampilkan 16384
dan true
masing-masing, build Anda
penanda diatur dengan benar.
Membuat library bersama dengan penyelarasan ELF 16 KB
Untuk membangun pustaka bersama yang merupakan bagian dari project android, Anda hanya perlu menyetel flag build ini dalam target Anda:
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
Untuk membangun pustaka bersama yang bukan bagian dari project android, Anda harus meneruskan flag penaut ini:
-Wl,-z,max-page-size=16384
Memverifikasi biner dan bawaan untuk penyelarasan ELF 16 KB
Cara terbaik untuk memverifikasi perilaku penyelarasan dan runtime adalah dengan menguji dan menjalankan Kernel yang dikompilasi sebesar 16 KB. Namun, untuk mengetahui beberapa masalah lebih awal:
Mulai dari Android W (AOSP eksperimental), Anda dapat menetapkan
PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true
pada waktu build. Gunakanignore_max_page_size: true
dalamAndroid.bp
danLOCAL_IGNORE_MAX_PAGE_SIZE := true
diAndroid.mk
untuk mengabaikan sementara mereka. Setelan ini memverifikasi semua bawaan dan memungkinkan Anda mendeteksi ketika diperbarui namun tidak selaras dengan ukuran 16 KB.Anda dapat menjalankan
atest elf_alignment_test
yang memverifikasi penyelarasan file ELF di perangkat pada perangkat yang diluncurkan dengan Android 15 (Eksperimental AOSP) dan yang lebih baru.