Sviluppo di dispositivi personalizzati

Questa pagina spiega diverse attività che potresti dover eseguire se stai configurando una build per il tuo dispositivo.

Creare una configurazione flash personalizzata

Le istruzioni di Fastboot sono definite in un artefatto chiamato fastboot-info.txt. Se crei più target, avrai più file fastboot-info.txt nel $OUT_DIR. Inoltre, $ANDROID_PRODUCT_OUT indica il target più attuale che hai creato. Questa pagina elenca le attività da eseguire con fastboot e può essere rigenerata utilizzando m fastboot_info. Puoi introdurre una logica di sfarfallio personalizzata modificando il file fastboot-info.txt.

Il file fastboot-info.txt supporta i seguenti comandi:

  • flash %s: esegue il flashing di una determinata partizione. Gli argomenti facoltativi includono --slot-other,filename_path, and--apply-vbmeta`.
  • update-super: aggiorna la partizione super.
  • if-wipe: esegue condizionatamente un altro componente se viene specificato un azzeramento.
  • erase %s: cancella una determinata partizione (può essere utilizzato solo in combinazione con if-wipe, ad es. if-wipe erase cache).

Determina lo stato del blocco del flash

Se stai creando un daemon flashboot personalizzato (flashbootd) per un dispositivo, devi essere in grado di ottenere lo stato del bootloader e del blocco del bootloader. getFlashLockState() @SystemApi trasmette lo stato del bootloader e l'API di sistema PersistentDataBlockManager.getFlashLockState() restituisce lo stato di blocco del bootloader sui dispositivi conformi.

Valore restituito Patologie
FLASH_LOCK_UNKNOWN Valore restituito solo dai dispositivi che eseguono l'upgrade ad Android 7.x o versioni successive e che in precedenza non supportavano le modifiche al bootloader necessarie per ottenere lo stato del blocco del flashing se supportavano la funzionalità di blocco/sblocco del flashing.
  • I nuovi dispositivi con Android 7.x o versioni successive devono trovarsi in stato FLASH_LOCK_LOCKED o FLASH_LOCK_UNLOCKED.
  • I dispositivi che eseguono l'upgrade ad Android 7.x o versioni successive e non supportano la funzionalità di sblocco/blocco del flashing dovrebbero restituire uno stato FLASH_LOCK_LOCKED.
FLASH_LOCK_LOCKED Valore restituito da qualsiasi dispositivo che non supporta la funzionalità di sblocco/blocco lampeggiante (ovvero il dispositivo è sempre bloccato) o da qualsiasi dispositivo che supporta la funzionalità di sblocco/blocco lampeggiante ed è in stato bloccato.
FLASH_LOCK_UNLOCKED Valore restituito da qualsiasi dispositivo che supporta il blocco/lo sblocco lampeggiante ed è in stato sbloccato.

I produttori devono testare i valori restituiti dai dispositivi con bootloader bloccati e sbloccati. Ad esempio, AOSP contiene un'implementazione di riferimento che restituisce un valore in base alla proprietà di avvio ro.boot.flash.locked. Il codice di esempio si trova nelle seguenti directory:

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