Android 11 aggiunge un nuovo HAL, IDumpstateDevice (versione 1.1). Questo HAL espone nuovi metodi a registri dei fornitori con un ambito più ristretto inclusi nelle segnalazioni di bug standard, oltre a consentire alle build degli utenti di attivare e disattivare l'accesso del fornitore (l'impostazione predefinita per le build degli utenti è disattivata). Ciò offre agli OEM un maggiore controllo su ciò che viene incluso in particolari tipi di segnalazioni di bug.
Questa funzionalità influisce sugli OEM se scelgono di implementare questo HAL facoltativo. I SoC potrebbero essere interessati, a seconda di ciò che l'OEM sceglie di esporre con questo HAL. Non è previsto alcun impatto per i vettori.
Ciò che includi nelle segnalazioni di bug dipende da quali informazioni ritieni rilevanti per il debug, ma generalmente è meglio essere più dettagliate.
Esempi e fonte
Esiste un'implementazione predefinita della versione 1.0 (obsoleta) di IDumpstateDevice che mostra un esempio di utilizzo della libreria dumpstate util: frameworks/native/cmds/dumpstate/DumpstateUtil.h
. Esiste anche un'implementazione Cuttlefish dell'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 il contenuto della segnalazione di bug si trova in
frameworks/native/cmds/dumpstate/
.
Implementazione
Per implementare questo HAL, implementare 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 dispositivi con sistema operativo non Wear).
L'implementazione dell'HAL dumpstate è facoltativa. Tutti i nuovi dispositivi avviati con Android 11 DEVONO implementare IDumpstateDevice 1.1 se implementano Dumpstate HAL. I dispositivi che hanno già implementato IDumpstateDevice 1.0 prima di Android 11 dovrebbero essere relativamente facili da aggiornare a 1.1, ed è fortemente consigliato farlo, poiché riduce notevolmente la quantità di informazioni private estranee incluse nelle segnalazioni di bug.
Questa funzionalità dipende dalle modifiche principali del dumpstate incluse anche in Android 11, che si trovano in frameworks/native/cmds/dumpstate
.
L'implementazione di questo HAL richiederà probabilmente alcune modifiche alla SEPolicy su determinate proprietà di sistema, file, ecc. per far sì che le cose funzionino completamente, e richiederà il coordinamento con i fornitori per inserire tutte le informazioni rilevanti nelle segnalazioni di bug.
Personalizzazione
L'utente del dispositivo può attivare o disattivare l'accesso al fornitore utilizzando le impostazioni dello sviluppatore. Quando è disattivato, dumpstateBoard_1_1
potrebbe comunque restituire informazioni essenziali minime come determinato dall'OEM. La disattivazione della registrazione del fornitore fa sì che IDumpstateDevice::dumpstateBoard
aggiunga solo le informazioni essenziali a una segnalazione di bug, mentre l'attivazione include qualsiasi informazione scelta dall'OEM.
È possibile modificare dumpstate.cpp
(che chiama i metodi HAL IDumpstateDevice), ad esempio, per aumentare il timeout fornito per il completamento dumpstateBoard
. Tuttavia, la logica fondamentale di dumpstate.cpp
dovrebbe rimanere invariata.
I timeout possono avere qualsiasi valore, ma non dovrebbero aumentare in modo drammatico il tempo necessario per il completamento di una segnalazione di bug. In particolare, DumpstateMode::CONNECTIVITY
è estremamente sensibile al tempo e deve essere eseguito il più velocemente possibile per raccogliere tutti i log rilevanti di modem/Wi-Fi/rete.
Validazione
È disponibile un test VTS per l'implementazione di IDumpstateDevice ed esistono unit test funzionali per la funzionalità generale BugreportManager
.
Il test case manuale consigliato è frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
.