Android 11 aggiunge una nuova HAL, IDumpstateDevice (versione 1.1). Questa HAL espone nuovi metodi per limitare più strettamente i log dei fornitori inclusi nei report sui bug standard, nonché per consentire alle build utente di attivare e disattivare la registrazione dei log dei fornitori (l'impostazione predefinita per le build utente è disattivata). In questo modo, gli OEM hanno un maggiore controllo su ciò che viene incluso in determinati tipi di report sui bug.
Questa funzionalità influisce sugli OEM se scelgono di implementare questa HAL facoltativa. I SoC potrebbero essere interessati, a seconda di ciò che l'OEM sceglie di esporre con questa HAL. Non è previsto alcun impatto sugli operatori.
I contenuti inclusi nei report sui bug dipendono dalle informazioni che ritieni pertinenti per il debug, ma in genere più dettagliate sono meglio.
Esempi e codice sorgente
Esiste un'implementazione predefinita della versione 1.0 (deprecata) di IDumpstateDevice che mostra un esempio di utilizzo della libreria di utilità dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h. Esiste anche un'implementazione Cuttlefish della HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.
Il codice sorgente si trova qui:
- I file HAL si trovano in
hardware/interfaces/dumpstate/1.1/. - Il codice nativo dumpstate che controlla i contenuti dei report sui bug si trova in
frameworks/native/cmds/dumpstate/.
Implementazione
Per implementare questa HAL, implementa l'interfaccia HAL android.hardware.dumpstate@1.1::IDumpstateDevice. Esistono molti valori DumpstateMode possibili, ma è probabile che non tutti siano supportati da un singolo dispositivo (ad esempio, WEAR per i dispositivi non Wear OS).
L'implementazione della HAL dumpstate è facoltativa. Tutti i nuovi dispositivi lanciati con Android 11 DEVONO implementare IDumpstateDevice 1.1 se implementano la HAL Dumpstate. L'upgrade alla versione 1.1 dei dispositivi che hanno già implementato IDumpstateDevice 1.0 prima di Android 11 dovrebbe essere relativamente semplice ed è vivamente consigliato, in quanto riduce notevolmente la quantità di informazioni private estranee incluse nei report sui bug.
Questa funzionalità dipende anche dalle modifiche principali di dumpstate incluse in Android 11, che si trovano in frameworks/native/cmds/dumpstate.
Per il corretto funzionamento, l'implementazione di questa HAL richiederà probabilmente alcune modifiche a SEPolicy per determinate proprietà di sistema, file e così via e richiederà il coordinamento con i fornitori per inserire tutte le informazioni pertinenti nei report sui bug.
Personalizzazione
L'utente del dispositivo può attivare o disattivare la registrazione dei log dei fornitori utilizzando le opzioni sviluppatore.
Quando è disattivata, dumpstateBoard_1_1 potrebbe comunque restituire informazioni essenziali minime determinate dall'OEM. Se la registrazione dei log dei fornitori è disattivata, IDumpstateDevice::dumpstateBoard aggiunge solo le informazioni essenziali a un report sui bug, mentre se è attivata include le informazioni scelte dall'OEM.
Puoi modificare dumpstate.cpp (che chiama i metodi HAL IDumpstateDevice), ad esempio per aumentare il timeout assegnato a dumpstateBoard per il completamento.
Tuttavia, la logica principale di dumpstate.cpp deve rimanere invariata.
I timeout possono avere qualsiasi valore, ma non devono aumentare drasticamente il tempo necessario per completare un report sui bug. In particolare, DumpstateMode::CONNECTIVITY è molto sensibile al tempo e deve essere eseguito il più rapidamente possibile per raccogliere tutti i log pertinenti di modem, Wi-Fi e rete.
Convalida
Esiste un test VTS per l'implementazione di IDumpstateDevice e test delle unità funzionali per la funzionalità generale di BugreportManager.
Il caso di test manuale consigliato è frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.