Phát triển thiết bị tuỳ chỉnh

Trang này giải thích một số việc 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 về Fastboot được xác định trong một cấu phần phần mềm có tên là fastboot-info.txt. Nếu bạn 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 việc mà fastboot cần thực thi và có thể được tạo lại bằng m fastboot_info. Bạn có thể giới thiệu logic flash 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: Flash 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 dữ liệu.
  • if-wipe: Chạy có điều kiện một số thành phần khác 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á flash

Nếu đang tạo một trình nền flashboot tuỳ chỉnh (flashbootd) cho một thiết bị, bạn cần có thể lấy được trạng thái khoá trình tải khởi động và trình tải khởi động. The 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 để lấy trạng thái khoá flash nếu chúng hỗ trợ tính năng khoá/mở khoá flash.
  • 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ợ khả năng khoá/mở khoá 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á flash (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á flash và ở 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á flash và ở trạng thái mở khoá.

Nhà sản xuất nên kiểm thử các giá trị được trả về bởi các thiết bị có trình tải khởi động ở trạng thái khoá và mở khoá. Ví dụ: AOSP chứa một cách triển khai tham chiếu trả về giá trị dựa trên thuộc tính khởi động ro.boot.flash.locked. Mã mẫu 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