Aktivieren Sie eine Seitengröße von 16 KB

Android 15 (AOSP experimentell) und höher unterstützen die Erstellung von Android mit einer Seitengröße von 16 KB. Diese Option verbraucht zusätzlichen Speicher, verbessert jedoch die Systemleistung.

16-KB-Seiten werden nur auf arm64 Zielen mit 16-KB-Kerneln unterstützt. Es gibt jedoch auch eine Option , 16 KB Benutzerraum auf x86_64 für Cuttlefish zu simulieren .

Um 16-KB-Seiten zu aktivieren, legen Sie die folgenden Build-Optionen auf einem Gerät fest:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true entfernt die PAGE_SIZE Definition und sorgt dafür, dass Komponenten die Seitengröße zur Laufzeit bestimmen.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 wodurch sichergestellt wird, dass Plattform-ELF-Dateien mit einer 16-KB-Ausrichtung erstellt werden. Diese Größe ist größer als erforderlich und dient der zukünftigen Kompatibilität. Mit der 16-kB-ELF-Ausrichtung kann der Kernel Seitengrößen von 4 kB/16 kB unterstützen.

Build-Flags überprüfen

Überprüfen Sie nach Auswahl des lunch , ob die Build-Flags in der Umgebung korrekt eingerichtet sind:

$ 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

Wenn die beiden vorherigen Befehle 16384 bzw. true zurückgeben, sind Ihre Build-Flags korrekt eingerichtet.

Erstellen Sie gemeinsam genutzte Bibliotheken mit 16-kB-ELF-Ausrichtung

Um gemeinsam genutzte Bibliotheken zu erstellen, die Teil des Android-Projekts sind, müssen Sie nur diese Build-Flags in Ihrem Ziel setzen:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Um gemeinsam genutzte Bibliotheken zu erstellen, die nicht Teil des Android-Projekts sind, müssen Sie dieses Linker-Flag übergeben:

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