Implementare il logging dei fornitori con ambito

Android 11 aggiunge un nuovo HAL, IDumpstateDevice (versione 1.1). Questo HAL espone nuovi metodi a log dei fornitori con ambito più ristretto inclusi nelle segnalazioni di bug standard, oltre a consentire alle build utente di attivare e disattivare l'accesso del fornitore (l'impostazione predefinita per le build degli utenti è disattivata). 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 che scelgono di implementare l'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 nelle segnalazioni 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 dell'HAL android.hardware.dumpstate@1.1::IDumpstateDevice. Esistono molti valori possibili per 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 far funzionare tutto correttamente 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. Quando è disattivato, 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 relativi a 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.