啟用 16kB 頁面大小

Android 15(AOSP 實驗版)及更高版本支援建置具有 16kB 頁面大小的 Android。此選項使用額外的內存,但會提高系統效能。

16kB 頁面僅在具有 16kB 核心的arm64目標上支援。不過,還有一個選項可以x86_64上為 Cuttlefish 模擬 16KB 使用者空間

若要啟用 16kB 頁面,請在裝置上設定以下建置選項:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true刪除PAGE_SIZE定義,並使元件在執行時決定頁面大小。
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384確保平台 ELF 檔案以 16kB 對齊方式建置。這個大於需要的尺寸是為了將來的兼容性。透過 16kB ELF 對齊,核心可以支援 4kB/16kB 頁面大小。

驗證建造標誌

選擇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

如果前兩個指令分別傳回16384true ,則您的建置標誌設定正確。

建立具有 16kB ELF 對齊的共享庫

要建立屬於android 專案一部分的共享庫,您只需在目標中設定這些建置標誌:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

要建立不屬於android 專案的共享庫,您需要傳遞此連結器標誌:

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