Pengembangan perangkat kustom

Halaman ini menjelaskan beberapa tugas yang mungkin perlu Anda lakukan jika Anda menyiapkan build untuk perangkat Anda sendiri.

Membuat konfigurasi flash kustom

Petunjuk Fastboot ditentukan dalam artefak yang disebut fastboot-info.txt. Jika mem-build beberapa target, Anda akan memiliki beberapa file fastboot-info.txt di $OUT_DIR. Selain itu, $ANDROID_PRODUCT_OUT mengarah ke target terbaru yang Anda buat. Halaman ini mencantumkan tugas yang akan dijalankan fastboot dan dapat dibuat ulang menggunakan m fastboot_info. Anda dapat memperkenalkan logika berkedip kustom dengan mengubah file fastboot-info.txt.

File fastboot-info.txt mendukung perintah berikut:

  • flash %s: Mem-flash partisi tertentu. Argumen opsional mencakup --slot-other,filename_path, and--apply-vbmeta`.
  • update-super: Memperbarui partisi super.
  • if-wipe: Menjalankan beberapa komponen lain secara kondisional jika penghapusan ditentukan.
  • erase %s: Menghapus partisi tertentu (hanya dapat digunakan bersama dengan if-wipe -> misalnya. if-wipe erase cache).

Menentukan status kunci flash

Jika Anda membuat daemon flashboot kustom (flashbootd) untuk perangkat, Anda harus dapat memperoleh status bootloader dan penguncian bootloader. getFlashLockState() @SystemApi mengirimkan status bootloader dan API sistem PersistentDataBlockManager.getFlashLockState() menampilkan status kunci bootloader di perangkat yang kompatibel.

Nilai yang ditampilkan Kondisi
FLASH_LOCK_UNKNOWN Hanya ditampilkan oleh perangkat yang diupgrade ke Android 7.x atau yang lebih tinggi yang sebelumnya tidak mendukung perubahan bootloader yang diperlukan untuk mendapatkan status kunci flash jika perangkat tersebut mendukung kemampuan mengunci/membuka kunci flash.
  • Perangkat baru yang menjalankan Android 7.x atau yang lebih tinggi harus dalam status FLASH_LOCK_LOCKED atau FLASH_LOCK_UNLOCKED.
  • Perangkat yang diupgrade ke Android 7.x atau yang lebih tinggi yang tidak mendukung kemampuan membuka/mengunci flashing harus menampilkan status FLASH_LOCK_LOCKED.
FLASH_LOCK_LOCKED Ditampilkan oleh perangkat apa pun yang tidak mendukung penguncian/pembukaan kunci melalui flashing (yaitu, perangkat selalu terkunci), atau perangkat apa pun yang mendukung penguncian/pembukaan kunci melalui flashing dan berada dalam status terkunci.
FLASH_LOCK_UNLOCKED Ditampilkan oleh perangkat apa pun yang mendukung penguncian/pembukaan kunci dan dalam status tidak terkunci.

Produsen harus menguji nilai yang ditampilkan oleh perangkat dengan bootloader terkunci dan tidak terkunci. Misalnya, AOSP berisi implementasi referensi yang menampilkan nilai berdasarkan properti booting ro.boot.flash.locked. Contoh kode berada di direktori berikut:

  • frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
  • frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java