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 diePAGE_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