Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Bật nút bật/tắt 16 KB
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Nút bật/tắt 16 KB cho phép bạn dùng thử nhân hệ điều hành 16 KB. Nút bật/tắt này chuyển đổi giữa nhân hệ điều hành 4 KB và 16 KB. Bạn có thể tìm thấy nút này trong trình đơn "Tuỳ chọn cho nhà phát triển" trong ứng dụng cài đặt. Bạn có thể dùng nút bật/tắt 16 KB để kiểm tra khả năng tương thích của ứng dụng với nhân hệ điều hành 16 KB, nhưng nút này có thể không phản ánh hiệu suất của thiết bị 16 KB thực tế do việc sử dụng các khối trang con (khi sử dụng EXT4 cho các phân vùng /data
và /metadata
) ở chế độ 16 KB.
Các bước định cấu hình nút bật/tắt
Đảm bảo thiết bị đã thiết lập các biến không phụ thuộc vào kích thước trang (để hoạt động với cả nhân có kích thước trang 4 KB và 16 KB).
Bạn nên cài đặt trực tiếp nhân hệ điều hành 16 KB để đảm bảo thiết bị hoạt động ở chế độ 16 KB trước khi tiếp tục thêm tuỳ chọn cho nhà phát triển.
Xem cấu hình mục tiêu của ví dụ về thiết bị ảo.
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
Thiết lập biến sản phẩm để hiển thị tuỳ chọn cho nhà phát triển trong phần cài đặt
PRODUCT_16K_DEVELOPER_OPTION := true
Đặt đường dẫn hạt nhân bằng BOARD_KERNEL_PATH_16K
.
Hạt nhân này phải được tạo bằng CONFIG_ARM64_16K_PAGES=y.
BOARD_KERNEL_PATH_16K := kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/kernel-mainline.
Đặt biến đường dẫn cấu hình mô-đun BOARD_KERNEL_MODULES_16K
. Biến này trỏ đến các mô-đun nhân hệ điều hành hỗ trợ 16 KB. Việc đặt các tham số này sẽ tạo ra hai OTA trên phân vùng hệ thống : boot_ota_16k.zip
(để chuyển sang nhân 16 KB) và boot_ota_4k.zip
(để chuyển sang nhân 4 KB). Bật OTA tăng dần bằng cách đặt BOARD_16K_OTA_USE_INCREMENTAL := true
cho OTA khởi động có kích thước nhỏ hơn.
BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)
BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/common-modules/virtual-device/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)
Đặt BOARD_16K_OTA_MOVE_VENDOR := true
để di chuyển OTA sang phân vùng của nhà cung cấp.
Chỉ đặt giá trị này để di chuyển OTA từ hệ thống sang phân vùng nhà cung cấp.
Xác minh
Sau khi định cấu hình thành công nút bật/tắt, hãy làm theo các bước sau:
- Kiểm tra xem nút bật/tắt Khởi động với kích thước trang 16 KB có xuất hiện trong ứng dụng cài đặt hay không.
- Kiểm tra xem
/system/boot_otas
hoặc /vendor/boot_otas
có chứa hai tệp zip OTA hay không : boot_ota_16k.zip
và boot_ota_4k.zip
.
Sử dụng nút bật/tắt 16 KB
- Chuyển đến phần Cài đặt > Hệ thống > Bản cập nhật phần mềm rồi áp dụng mọi bản cập nhật có sẵn.
- Bật tuỳ chọn cho nhà phát triển. Để biết hướng dẫn, hãy xem bài viết Định cấu hình các tuỳ chọn dành cho nhà phát triển trên thiết bị.
- Nếu phát hiện thiết bị bị khoá bởi nhà sản xuất thiết bị gốc (OEM), một hộp thoại sẽ xuất hiện yêu cầu bạn mở khoá điện thoại bằng OEM. Để biết hướng dẫn, hãy xem bài viết Khoá và mở khoá trình tải khởi động.
- Nhấp vào Khởi động với kích thước trang 16 KB. Nếu
/data
và /metadata
không phải là ext4, một hộp thoại sẽ xuất hiện yêu cầu bạn xoá sạch thiết bị. Nhấp vào Xoá tất cả dữ liệu để xoá sạch thiết bị. Thiết bị sẽ bị xoá sạch và bạn phải bật lại tuỳ chọn cho nhà phát triển.
- Nhấp vào Khởi động với kích thước trang 16 KB. Một hộp thoại sẽ xuất hiện yêu cầu bạn chuyển sang 16 KB và khi xác nhận, các bản cập nhật OTA khởi động sẽ được áp dụng. Sau đó, bạn có thể bật/tắt qua lại giữa chế độ 4 KB và 16 KB mà không cần xoá phân vùng dữ liệu để kiểm thử hành vi của ứng dụng.
Kiểm tra Chế độ 16 KB
Làm theo các bước trong phần lấy kích thước trang để xác minh kích thước trang.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Enable 16 KB toggle\n\n16 KB toggle lets you to try a 16 KB kernel. This toggle switches\nbetween a 4 KB kernel and 16 KB kernel and can be found inside the\n\"Developer option\" menu in the settings app. The 16 KB toggle can be used\nto check application compatibility with the 16 KB kernel, but it might not\nreflect performance of actual 16 KB device due to the use of subpage blocks\n(when using EXT4 for `/data` and `/metadata` partitions) in 16 KB mode.\n\nSteps for configuring toggle\n----------------------------\n\n1. Make sure the device has set up the variables to be page-agnostic (to work\n with both 4 KB and 16 KB page size kernels).\n You may want to install the 16k kernel directly to make sure the device works in\n 16 KB mode directly before continuing to add the developer option.\n See the virtual device example [target config](https://cs.android.com/android/platform/superproject/+/android-latest-release:device/google/cuttlefish/vsoc_arm64_pgagnostic/phone/aosp_cf.mk;l=68).\n\n PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true\n PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384\n\n2. Setup product variable to display developer option in settings\n `PRODUCT_16K_DEVELOPER_OPTION := true`\n\n3. Set kernel path using `BOARD_KERNEL_PATH_16K`.\n This kernel should be built with `CONFIG_ARM64_16K_PAGES=y.`\n\n BOARD_KERNEL_PATH_16K := kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/kernel-mainline.\n\n4. Set modules config path variable `BOARD_KERNEL_MODULES_16K`. This variable\n points to kernel modules which support 16KB. Setting these parameters creates\n two OTAs on the system partition : `boot_ota_16k.zip`(to switch to 16 KB\n kernel) and `boot_ota_4k.zip`(to switch to 4 KB kernel). Enable incremental\n OTAs by setting `BOARD_16K_OTA_USE_INCREMENTAL := true` for smaller size boot\n OTAs.\n\n BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)\n BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/common-modules/virtual-device/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)\n\n5. Set `BOARD_16K_OTA_MOVE_VENDOR := true` to move OTAs to the vendor partition.\n Only set this to move OTAs from system to vendor partition.\n\n### Verification\n\nAfter successfully configuring the toggle, follow these steps:\n\n1. Check if **Boot with 16 KB page size** toggle is visible in settings app.\n2. Check if `/system/boot_otas` or `/vendor/boot_otas` contains two OTA zip files : `boot_ota_16k.zip` and `boot_ota_4k.zip`.\n\nUse 16 KB toggle\n----------------\n\n1. Go to **Settings \\\u003e System \\\u003e Software updates** and apply any updates which are available.\n2. Enable developer options. For instructions, see [Configure on-device developer options](https://developer.android.com/studio/debug/dev-options).\n3. If the device is detected as OEM locked, a dialog displays asking you to OEM unlock the phone. For instructions, see [Lock and unlock the bootloader](/docs/core/architecture/bootloader/locking_unlocking).\n4. Click **Boot with 16 KB page size** . If `/data` and `/metadata`aren't ext4, a dialog displays asking you to wipe the device. Click **Erase all data** to wipe the device. The device is wiped and you must enable developer options again.\n5. Click **Boot with 16 KB page size**. A dialog displays asking you to switch to 16 KB, and on confirming, boot OTAs are applied. You can then toggle back and forth between 4 KB and 16 KB mode without clearing the data partition to test app behavior.\n\nCheck 16 KB Mode\n----------------\n\nFollow steps at [getting page size](/docs/core/architecture/16kb-page-size/getting-page-size)\nto verify page size."]]