Sviluppo di dispositivi personalizzati

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

Crea una configurazione flash personalizzata

Le istruzioni di avvio rapido sono definite in un artefatto chiamato fastboot-info.txt . Se crei più destinazioni, avrai più file fastboot-info.txt in $OUT_DIR . Inoltre, $ANDROID_PRODUCT_OUT punta al target più recente che hai creato. Questa pagina elenca le attività da eseguire per fastboot e può essere rigenerata utilizzando m fastboot_info . È possibile introdurre una logica di flashing 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 qualche altro componente se viene specificata una cancellazione.
  • erase %s : cancella una determinata partizione (può essere utilizzato solo insieme a if-wipe -> ad es. if-wipe erase cache ).

Determina lo stato di blocco del flash

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

I produttori dovrebbero 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