Android 15 (AOSP Experiment) i nowsze wersje obsługują tworzenie Android o rozmiarze strony 16 KB. Ta opcja wymaga dodatkowej pamięci, ale poprawia wydajność systemu.
Strony o rozmiarze 16 KB są obsługiwane tylko w celach arm64
z jądrem o rozmiarze 16 KB.
Dostępna jest też opcja
Przeprowadź symulację 16 KB przestrzeni użytkownika w x86_64
w przypadku mątwy.
Aby włączyć strony o rozmiarze 16 KB, ustaw na urządzeniu te opcje kompilacji:
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
usuwa:PAGE_SIZE
i umożliwia określenie rozmiaru strony przez komponenty w czasie działania.PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
, który zapewnia dostęp do plików ELF platformy są tworzone z dopasowaniem 16 KB. Ten zaawansowany rozmiar jest przeznaczony i zgodność z internetem w przyszłości. Jeśli plik ELF jest dopasowany do rozmiaru 16 KB, jądro obsługuje 4 KB/16 KB.
Zweryfikuj flagi kompilacji
Po wybraniu środowiska docelowego lunch
sprawdź, czy flagi kompilacji są skonfigurowane.
w środowisku:
$ 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
Jeśli 2 poprzednie polecenia zwracają odpowiednio 16384
i true
, kompilacja
są prawidłowo skonfigurowane.
Twórz biblioteki udostępnione, dopasowując pliki ELF o rozmiarze 16 KB
Aby utworzyć biblioteki udostępnione, które są częścią projekt na Androida, wystarczy ustawić te flagi kompilacji w środowisku docelowym:
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
Aby tworzyć biblioteki udostępnione, które nie są częścią projekt na Androida, musisz przekazać tę flagę tagu łączącego:
-Wl,-z,max-page-size=16384
Zweryfikuj pliki binarne i gotowe pliki pod kątem dopasowania ELF o rozmiarze 16 KB
Najlepszym sposobem na sprawdzenie dopasowania i działania w środowisku wykonawczym jest przetestowanie i uruchomienie skompilowane jądro o rozmiarze 16 KB, Aby jednak wykryć niektóre problemy wcześniej:
Począwszy od Androida W (AOSP w ramach eksperymentu), możesz ustawić
PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true
w momencie kompilacji. Używajignore_max_page_size: true
w:Android.bp
iLOCAL_IGNORE_MAX_PAGE_SIZE := true
w:Android.mk
do tymczasowego zignorowania . Te ustawienia weryfikują wszystkie gotowe ustawienia i pozwalają wykryć, czy jest zaktualizowany, ale nie jest wyrównany o 16 KB.Możesz uruchomić polecenie
atest elf_alignment_test
, które sprawdzi wyrównanie plików ELF na urządzeniu na urządzeniach z Android 15 (AOSP Experiment) i nowsze wersje.