Android 15 (thử nghiệm AOSP) trở lên có hỗ trợ xây dựng Android có kích thước trang 16 KB. Tùy chọn này sử dụng thêm bộ nhớ nhưng cải thiện hiệu suất của hệ thống.
Các trang 16 KB chỉ được hỗ trợ trên các mục tiêu arm64
có nhân 16 KB.
Tuy nhiên, bạn cũng có thể chọn
mô phỏng không gian người dùng 16 KB trên x86_64
cho Mực ống.
Để bật trang 16 KB, hãy đặt các tuỳ chọn bản dựng sau trên thiết bị:
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
sẽ xoáPAGE_SIZE
và giúp các thành phần xác định kích thước trang trong thời gian chạy.PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
đảm bảo các tệp ELF của nền tảng được tạo với căn chỉnh 16 KB. Kích thước lớn hơn cần thiết này dành cho khả năng tương thích trong tương lai. Với căn chỉnh ELF là 16 KB, nhân có thể hỗ trợ Kích thước trang 4 KB/16 KB.
Xác minh cờ bản dựng
Sau khi chọn mục tiêu lunch
, hãy xác minh rằng cờ bản dựng đã được thiết lập
đúng cách trong môi trường:
$ 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
Nếu 2 lệnh trước đó lần lượt trả về 16384
và true
, thì bản dựng của bạn
cờ được thiết lập chính xác.
Xây dựng thư viện dùng chung với căn chỉnh ELF 16 KB
Để xây dựng thư viện dùng chung thuộc dự án android, bạn chỉ cần đặt những cờ bản dựng này trong mục tiêu của mình:
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
Để xây dựng các thư viện dùng chung không thuộc dự án android, bạn cần truyền cờ trình liên kết này:
-Wl,-z,max-page-size=16384
Xác minh tệp nhị phân và tệp tạo sẵn để căn chỉnh ELF 16 KB
Cách tốt nhất để xác minh cách căn chỉnh và hành vi trong thời gian chạy là thử nghiệm và chạy trên Hạt nhân được biên dịch 16 KB. Tuy nhiên, để phát hiện một số vấn đề sớm hơn:
Kể từ Android W (thử nghiệm AOSP), bạn có thể đặt
PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true
trong thời gian tạo bản dựng. Sử dụngignore_max_page_size: true
trongAndroid.bp
vàLOCAL_IGNORE_MAX_PAGE_SIZE := true
trongAndroid.mk
để tạm thời bỏ qua chúng. Các chế độ cài đặt này xác minh mọi tệp tạo sẵn và cho phép bạn phát hiện khi một tệp tạo sẵn được cập nhật nhưng không được căn chỉnh trong 16 KB.Bạn có thể chạy
atest elf_alignment_test
để xác minh sự căn chỉnh của tệp ELF trên thiết bị trên những thiết bị chạy bằng Android 15 (thử nghiệm AOSP) trở lên.