Implementazione della registrazione del fornitore con ambito

Android 11 aggiunge un nuovo HAL, IDumpstateDevice (versione 1.1). Questo HAL espone nuovi metodi a un ambito più ristretto dei log del fornitore inclusi nelle segnalazioni di bug standard, nonché per consentire alle build dell'utente di attivare e disattivare l'accesso del fornitore (l'impostazione predefinita per le build dell'utente è disattivata). Ciò offre agli OEM un maggiore controllo su ciò che viene incluso in particolari tipi di segnalazioni di bug.

Questa funzionalità ha un impatto sugli OEM se scelgono di implementare questo HAL opzionale. I SoC potrebbero essere interessati, a seconda di ciò che l'OEM sceglie di esporre con questo HAL. Non è previsto alcun impatto sui vettori.

Ciò che includi nelle segnalazioni di bug dipende dalle informazioni che ritieni rilevanti per il debug, ma generalmente più prolisso è meglio.

Esempi e fonte

C'è un'implementazione predefinita del (deprecato) 1.0 versione di IDumpstateDevice che mostra un esempio di utilizzo del dumpstate util biblioteca: frameworks/native/cmds/dumpstate/DumpstateUtil.h . C'è anche un'implementazione Seppie del 1,1 HAL: device/google/cuttlefish/guest/monitoring/dumpstate_ext/* .

Il codice sorgente si trova qui:

Implementazione

Per implementare questa HAL, implementare android.hardware.dumpstate@1.1::IDumpstateDevice interfaccia HAL. Ci sono molte possibili DumpstateMode valori, ma non tutti sono suscettibili di essere supportati da un unico dispositivo (per esempio, indossare per dispositivi non-Wear OS).

L'implementazione dell'HAL dumpstate è facoltativa. Tutti i nuovi dispositivi che si avviano con Android 11 DEVONO implementare IDumpstateDevice 1.1 se implementano l'HAL Dumpstate. I dispositivi che hanno già implementato IDumpstateDevice 1.0 prima di Android 11 dovrebbero essere relativamente facili da aggiornare a 1.1, e farlo è fortemente raccomandato, in quanto riduce notevolmente la quantità di informazioni private estranee incluse nelle segnalazioni di bug.

Questa caratteristica dipende dalle modifiche dumpstate fondamentali inclusi anche con Android 11, che si trova sotto frameworks/native/cmds/dumpstate .

L'implementazione di questo HAL richiederà probabilmente alcune modifiche SEPolicy a determinate proprietà di sistema, file, ecc. per far funzionare completamente le cose e richiederà il coordinamento con i fornitori per scaricare tutte le informazioni rilevanti nelle segnalazioni di bug.

personalizzazione

L'utente del dispositivo può attivare o disattivare l'accesso del fornitore utilizzando le impostazioni dello sviluppatore. Quando è spento, dumpstateBoard_1_1 può ancora uscita informazioni essenziali minime secondo quanto stabilito dal OEM. Girando fornitore disconnessione rende IDumpstateDevice::dumpstateBoard aggiungere informazioni solo essenziali per un bug report, mentre accenderlo include qualsiasi informazione da sceglie OEM.

È possibile modificare dumpstate.cpp (che chiama i metodi IDumpstateDevice HAL), ad esempio, per aumentare il timeout data per dumpstateBoard al completo. Tuttavia, la logica di nucleo di dumpstate.cpp rimanga invariato.

I timeout possono avere qualsiasi valore, ma non dovrebbero aumentare drasticamente il tempo necessario per il completamento di una segnalazione di bug. In particolare, DumpstateMode::CONNECTIVITY è altamente sensibile al tempo e ha bisogno di correre il più velocemente possibile raccogliere tutti / Wi-Fi / logs networking rilevanti modem.

Convalida

C'è un test VTS per l'attuazione IDumpstateDevice, e ci sono test di unità funzionali per generale BugreportManager funzionalità.

Il caso di test manuale raccomandata è frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java .