Android 11 aggiunge una nuova HAL, IDumpstateDevice (versione 1.1). Questa HAL espone nuovi metodi per definire in modo più preciso l'ambito dei log dei fornitori inclusi nei report bug standard, nonché per consentire alle build utente di attivare e disattivare la registrazione 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 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 sugli operatori.
Ciò che includi nei report sui bug dipende dalle informazioni che ritieni pertinenti per il debug, ma in generale più dettagliato è meglio.
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 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 i contenuti dei report sugli errori si trova in
frameworks/native/cmds/dumpstate/
.
Implementazione
Per implementare questo HAL, implementa l'interfaccia HAL android.hardware.dumpstate@1.1::IDumpstateDevice
. Esistono molti
valori DumpstateMode
possibili, ma non tutti sono probabilmente 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. I dispositivi che hanno già implementato IDumpstateDevice 1.0 prima di Android 11 dovrebbero essere relativamente facili da aggiornare alla versione 1.1 e questa operazione è fortemente consigliata, in quanto riduce notevolmente la quantità di informazioni private estranee incluse nei report sui bug.
Questa funzionalità dipende dalle modifiche di dumpstate principali incluse anche in Android
11, che si trovano in frameworks/native/cmds/dumpstate
.
L'implementazione di questo HAL probabilmente richiederà alcune modifiche a SEPolicy per determinate proprietà, file di sistema e così via per far funzionare tutto correttamente 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 del fornitore utilizzando le impostazioni dello sviluppatore.
Se è disattivata, dumpstateBoard_1_1
potrebbe comunque restituire informazioni essenziali minime
come stabilito dall'OEM. La disattivazione della registrazione del fornitore
IDumpstateDevice::dumpstateBoard
aggiunge solo le informazioni essenziali a una segnalazione
di bug, mentre l'attivazione include le informazioni scelte dall'OEM.
Puoi modificare dumpstate.cpp
(che chiama i metodi HAL IDumpstateDevice),
ad esempio per aumentare il timeout concesso per il completamento di dumpstateBoard
.
Tuttavia, la logica di base di dumpstate.cpp
deve rimanere invariata.
I timeout possono avere qualsiasi valore, ma non devono aumentare drasticamente 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/rete.
Convalida
Esiste un test VTS per l'implementazione di IDumpstateDevice e test delle unità funzionali per la funzionalità generale di BugreportManager
.
Lo scenario di test manuale consigliato è
frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
.