Sviluppo di dispositivi personalizzati

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

Crea una configurazione flash personalizzata

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

Il file fastboot-info.txt supporta questi comandi:

  • flash %s: lampeggia una determinata partizione. Gli argomenti facoltativi includono --slot-other,filename_path, and--apply-vbmeta`.
  • update-super: Aggiorna la super partizione.
  • if-wipe: esegue in modo condizionale un altro componente se viene specificata una cancellazione.
  • erase %s: cancella una determinata partizione (può essere utilizzato solo in combinazione con if-wipe -> ad es. if-wipe erase cache).

Determinare lo stato del blocco flash

Se stai creando un daemon flashboot personalizzato (flashbootd) per un dispositivo, devi essere in grado di ottenere lo stato di 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 Restituito solo dai dispositivi che eseguono l'upgrade ad Android 7.x o versioni successive che non supportavano in precedenza le modifiche al bootloader necessarie per ottenere lo stato di blocco flash se supportavano la funzionalità di blocco/sblocco del flashing.
  • I nuovi dispositivi con Android 7.x o versioni successive devono trovarsi nello stato FLASH_LOCK_LOCKED o FLASH_LOCK_UNLOCKED.
  • I dispositivi che eseguono l'upgrade ad Android 7.x o versioni successive e che non supportano la funzionalità di sblocco/blocco del flashing devono restituire lo stato FLASH_LOCK_LOCKED.
FLASH_LOCK_LOCKED Restituito da qualsiasi dispositivo che non supporta l'apertura/chiusura lampeggiante (ovvero il dispositivo è sempre chiuso) o da qualsiasi dispositivo che supporta l'apertura/chiusura lampeggiante e si trova nello stato chiuso.
FLASH_LOCK_UNLOCKED Restituito da qualsiasi dispositivo che supporta il blocco/sblocco lampeggiante e si trova nello 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 basato sulla 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