Implementare il logging dei fornitori basato sugli ambiti

Android 11 aggiunge un nuovo HAL, IDumpstateDevice (versione 1.1). Questo HAL espone nuovi metodi per limitare l'ambito dei log del fornitore inclusi nei report di bug standard, nonché per consentire alle build utente di attivare e disattivare il logging del fornitore (il valore predefinito per le build utente è disattivato). In questo modo, gli OEM hanno un maggiore controllo su ciò che viene incluso in determinati tipi di segnalazioni di bug.

Questa funzionalità interessa gli 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 sugli operatori.

Gli elementi da includere nei report di bug dipendono dalle informazioni che ritieni pertinenti per il debug, ma in genere è meglio fornire più dettagli.

Esempi e origine

Esiste un'implementazione predefinita della versione 1.0 (ritirata) di IDumpstateDevice che mostra un esempio di utilizzo della libreria di utilità dumpstate:frameworks/native/cmds/dumpstate/DumpstateUtil.h. Esiste anche un'implementazione di Cuttlefish dell'HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.

Il codice sorgente si trova qui:

Implementazione

Per implementare questo HAL, implementa l'interfaccia HAL android.hardware.dumpstate@1.1::IDumpstateDevice. Esistono molti possibili valori di DumpstateMode, ma è probabile che non tutti siano supportati da un singolo dispositivo (ad esempio, WEAR per i dispositivi non Wear OS).

L'implementazione dell'HAL dumpstate è facoltativa. Tutti i nuovi dispositivi lanciati con Android 11 DEVONO implementare IDumpstateDevice 1.1 se implementano l'HAL Dumpstate. Per i dispositivi che hanno già implementato IDumpstateDevice 1.0 prima di Android 11, l'upgrade alla versione 1.1 dovrebbe essere relativamente semplice e caldamente consigliato, in quanto riduce notevolmente la quantità di informazioni private estranee incluse nei report di bug.

Questa funzionalità dipende dalle modifiche a dumpstate di base incluse anche in Android 11, che si trovano in frameworks/native/cmds/dumpstate.

L'implementazione di questo HAL richiederà probabilmente alcune modifiche a SEPolicy per determinate proprietà di sistema, file e così via per il funzionamento completo e richiederà il coordinamento con i fornitori per scaricare tutte le informazioni pertinenti nei report di bug.

Personalizzazione

L'utente del dispositivo può attivare o disattivare la registrazione del fornitore utilizzando le impostazioni dello sviluppatore. Se è disattivata, dumpstateBoard_1_1 potrebbe comunque produrre informazioni minime essenziali come stabilito dall'OEM. Se disattivi la registrazione dei fornitori,IDumpstateDevice::dumpstateBoard viene aggiunta solo la segnalazione di bug obbligatoria, mentre se la attivi vengono incluse tutte le informazioni scelte dall'OEM.

Puoi modificare dumpstate.cpp (che chiama i metodi HAL IDumpstateDevice), ad esempio per aumentare il timeout specificato per il completamento di dumpstateBoard. Tuttavia, la logica di base di dumpstate.cpp dovrebbe rimanere invariata.

I timeout possono avere qualsiasi valore, ma non devono aumentare in modo significativo il tempo necessario per completare una segnalazione di 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/networking.

Convalida

Esiste un test VTS per l'implementazione di IDumpstateDevice e sono disponibili 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.