Pengembangan perangkat kustom

Halaman ini menjelaskan beberapa tugas yang mungkin perlu Anda lakukan jika 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 oleh fastboot dan dapat dibuat ulang menggunakan m fastboot_info. Anda dapat memperkenalkan logika flashing 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: Secara kondisional menjalankan beberapa komponen lain jika penghapusan total ditentukan.
  • erase %s: Menghapus partisi tertentu (hanya dapat digunakan bersama if-wipe -> misalnya. if-wipe erase cache).

Menentukan status kunci flash

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

Nilai yang ditampilkan Kondisi
FLASH_LOCK_UNKNOWN Hanya ditampilkan oleh perangkat yang diupgrade ke Android 7.x atau yang lebih baru yang sebelumnya tidak mendukung perubahan bootloader yang diperlukan untuk mendapatkan status kunci flash jika mendukung kemampuan kunci/buka 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 kunci/kunci flash harus menampilkan status FLASH_LOCK_LOCKED.
FLASH_LOCK_LOCKED Ditampilkan oleh perangkat apa pun yang tidak mendukung flashing kunci/buka kunci (yaitu, perangkat selalu terkunci), atau perangkat apa pun yang mendukung flashing kunci/buka kunci dan dalam status terkunci.
FLASH_LOCK_UNLOCKED Ditampilkan oleh perangkat apa pun yang mendukung flashing kunci/buka 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