Pengembangan perangkat khusus

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

Buat konfigurasi flash khusus

Instruksi fastboot didefinisikan dalam artefak bernama fastboot-info.txt . Jika Anda membuat beberapa target, Anda akan memiliki beberapa file fastboot-info.txt di $OUT_DIR . Dan, $ANDROID_PRODUCT_OUT menunjuk ke target terkini yang Anda buat. Halaman ini berisi daftar tugas yang harus dijalankan fastboot dan dapat dibuat ulang menggunakan m fastboot_info . Anda dapat memperkenalkan logika flashing khusus dengan memodifikasi 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 ).

Tentukan status kunci flash

Jika Anda membuat daemon flashboot khusus (flashbootd) untuk suatu perangkat, Anda harus bisa mendapatkan status bootloader dan kunci bootloader. getFlashLockState() @SystemApi mentransmisikan status bootloader dan API sistem PersistentDataBlockManager.getFlashLockState() mengembalikan status kunci bootloader pada perangkat yang sesuai.

Nilai kembalian Kondisi
FLASH_LOCK_UNKNOWN Hanya dikembalikan oleh perangkat yang diupgrade ke Android 7.x atau lebih tinggi 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 lebih tinggi harus dalam status FLASH_LOCK_LOCKED atau FLASH_LOCK_UNLOCKED .
  • Perangkat yang diupgrade ke Android 7.x atau lebih tinggi yang tidak mendukung kemampuan membuka/mengunci flashing akan mengembalikan status FLASH_LOCK_LOCKED .
FLASH_LOCK_LOCKED Dikembalikan oleh perangkat apa pun yang tidak mendukung flashing lock/unlock (yaitu, perangkat selalu terkunci), atau perangkat apa pun yang mendukung flashing lock/unlock dan dalam keadaan terkunci.
FLASH_LOCK_UNLOCKED Dikembalikan oleh perangkat apa pun yang mendukung kunci/buka kunci berkedip dan dalam keadaan tidak terkunci.

Produsen harus menguji nilai yang dikembalikan oleh perangkat dengan bootloader terkunci dan tidak terkunci. Misalnya, AOSP berisi implementasi referensi yang mengembalikan nilai berdasarkan properti boot ro.boot.flash.locked . Kode contoh terletak di direktori berikut:

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