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.
Phát triển thiết bị tuỳ chỉnh
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.
Trang này giải thích một số nhiệm vụ mà bạn có thể cần thực hiện nếu đang thiết lập bản dựng cho thiết bị của riêng mình.
Tạo cấu hình flash tuỳ chỉnh
Hướng dẫn khởi động nhanh được xác định trong một cấu phần phần mềm có tên là fastboot-info.txt
. Nếu tạo nhiều mục tiêu, bạn sẽ có nhiều tệp fastboot-info.txt
trong $OUT_DIR. Và $ANDROID_PRODUCT_OUT
trỏ đến mục tiêu mới nhất mà bạn đã tạo. Trang này liệt kê các tác vụ để khởi động nhanh thực thi và có thể được tạo lại bằng m fastboot_info
. Bạn có thể đưa ra logic cài đặt ROM tuỳ chỉnh bằng cách sửa đổi tệp fastboot-info.txt
.
Tệp fastboot-info.txt
hỗ trợ các lệnh sau:
flash %s
: Truyền tệp ROM cho một phân vùng nhất định. Các đối số không bắt buộc bao gồm
--slot-other,
filename_path, and
--apply-vbmeta`.
update-super
: Cập nhật phân vùng siêu.
if-wipe
: Chạy một số thành phần khác theo điều kiện nếu bạn chỉ định xoá.
erase %s
: Xoá một phân vùng nhất định (chỉ có thể dùng cùng với if-wipe
–> ví dụ: if-wipe erase cache
).
Xác định trạng thái khoá đèn flash
Nếu đang tạo trình nền khởi động flashboot tuỳ chỉnh (flashbootd) cho một thiết bị, bạn cần có thể lấy trình tải khởi động và trạng thái khoá trình tải khởi động. getFlashLockState()
@SystemApi
truyền trạng thái trình tải khởi động và API hệ thống PersistentDataBlockManager.getFlashLockState()
trả về trạng thái khoá của trình tải khởi động trên các thiết bị tuân thủ.
Giá trị trả về |
Điều kiện |
FLASH_LOCK_UNKNOWN |
Chỉ được trả về bởi các thiết bị nâng cấp lên Android 7.x trở lên mà trước đây không hỗ trợ các thay đổi về trình tải khởi động cần thiết để nhận trạng thái khoá ROM nếu các thiết bị đó hỗ trợ tính năng khoá/mở khoá ROM.
- Các thiết bị mới chạy Android 7.x trở lên phải ở trạng thái
FLASH_LOCK_LOCKED hoặc FLASH_LOCK_UNLOCKED .
- Các thiết bị nâng cấp lên Android 7.x trở lên không hỗ trợ tính năng mở khoá/khoá bằng cách cài đặt ROM sẽ trả về trạng thái
FLASH_LOCK_LOCKED .
|
FLASH_LOCK_LOCKED |
Được trả về bởi mọi thiết bị không hỗ trợ tính năng khoá/mở khoá bằng cách cài đặt ROM (tức là thiết bị luôn ở trạng thái khoá) hoặc mọi thiết bị hỗ trợ tính năng khoá/mở khoá bằng cách cài đặt ROM và đang ở trạng thái khoá. |
FLASH_LOCK_UNLOCKED |
Được trả về bởi mọi thiết bị hỗ trợ tính năng khoá/mở khoá bằng cách cài đặt ROM và đang ở trạng thái mở khoá. |
Nhà sản xuất nên kiểm thử các giá trị do thiết bị trả về với trình tải khởi động đã khoá và chưa khoá. Ví dụ: AOSP chứa một phương thức triển khai tham chiếu trả về một giá trị dựa trên thuộc tính khởi động ro.boot.flash.locked
. Mã ví dụ nằm trong các thư mục sau:
frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java
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,["# Custom device development\n\nThis page explains several tasks you might need to perform if you're\nsetting up a build for your own device.\n\nCreate a custom flash configuration\n-----------------------------------\n\nFastboot instructions are defined in an artifact called `fastboot-info.txt`. If\nyou build multiple targets, you'll have multiple `fastboot-info.txt` files in\nthe \u003cvar translate=\"no\"\u003e$OUT_DIR\u003c/var\u003e. And, `$ANDROID_PRODUCT_OUT` points to the\nmost current target you built. This page list the tasks for fastboot to execute\nand can be regenerated using `m fastboot_info`. You can introduce custom\nflashing logic by modifying the `fastboot-info.txt` file.\n\nThe `fastboot-info.txt` file supports these commands:\n\n- `flash %s`: Flashes a given partition. Optional arguments include `--slot-other,`\u003cvar translate=\"no\"\u003efilename_path\u003c/var\u003e`, and`--apply-vbmeta\\`.\n- `update-super`: Updates the super partition.\n- `if-wipe`: Conditionally runs some other component if a wipe is specified.\n- `erase %s`: Erases a given partition (can only be used in conjunction with `if-wipe` -\\\u003e eg. `if-wipe erase cache`).\n\nDetermine flash lock state\n--------------------------\n\nIf you're building a custom flashboot daemon (flashbootd) for a device, you need\nto be able to obtain bootloader and bootloader lock state. The\n`getFlashLockState()` `@SystemApi` transmits the bootloader\nstate and the `PersistentDataBlockManager.getFlashLockState()` system\nAPI returns the bootloader's lock status on compliant devices.\n\n| Return value | Conditions |\n|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `FLASH_LOCK_UNKNOWN` | Returned only by devices upgrading to Android 7.x or higher that didn't previously support the bootloader changes required to get the flash lock status if they supported flashing lock/unlock capability. - New devices running Android 7.x or higher must be in either a `FLASH_LOCK_LOCKED` or `FLASH_LOCK_UNLOCKED` state. - Devices upgrading to Android 7.x or higher that don't support flashing unlock/lock capability should return a `FLASH_LOCK_LOCKED` state. |\n| `FLASH_LOCK_LOCKED` | Returned by any device that doesn't support flashing lock/unlock (that is, the device is always locked), or any device that supports flashing lock/unlock and is in the locked state. |\n| `FLASH_LOCK_UNLOCKED` | Returned by any device that supports flashing lock/unlock and is in the unlocked state. |\n\nManufacturers should test the values returned by devices with locked and\nunlocked bootloaders. For example, AOSP\ncontains a reference implementation that returns a value based on the\n`ro.boot.flash.locked` boot property. Example code is located in the\nfollowing directories:\n\n- `frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java`\n- `frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java`"]]