I dispositivi lanciati con Android 12 che utilizzano versioni del kernel superiori alla v5.4 devono essere forniti con il kernel GKI. Affinché i partner possano accedere a DebugFS
nelle build userdebug durante lo sviluppo sul kernel GKI, la configurazione del kernel CONFIG_DEBUG_FS
è attivata nel defconfig GKI.
Non montare mai DebugFS
nelle build utente per i dispositivi avviati su Android 12.
Le build userdebug hanno una copertura dei test migliore rispetto alle build user e vengono sottoposte a test approfonditi durante il ciclo di sviluppo. Il seguente piano riduce al minimo la differenza tra i due tipi di build in termini di accesso a DebugFS
e offre i seguenti vantaggi:
- Impedisce alle build userdebug di dipendere accidentalmente da
DebugFS
per le nuove funzionalità - Garantisce che qualsiasi funzionalità esistente non funzionante a causa della mancanza di DebugFS sia nota nelle prime fasi del ciclo di sviluppo
Gli accessi a debugfs nelle build userdebug sono classificati come segue:
- Inizializzazione dei file
DebugFS
durante l'avvio del dispositivo, ad esempio un accesso in scrittura a un file inDebugFS
per attivare la raccolta dei dati di debug. - Generazione di segnalazioni di bug: l'HAL dumpstate legge i file
DebugFS
quandoDumpstateBoard()
viene invocato dadumpstate
. Queste informazioni fanno parte della segnalazione di bug. - Test e convalida specifici del dispositivo.
La tabella seguente descrive il supporto di ciascuna di queste tre categorie in Android 12. Tieni presente che quanto segue si applica solo alle build userdebug, poiché DebugFS
non può essere montato nelle build user.
Caso d'uso | Build userdebug di Android 12 |
---|---|
Inizializzazioni una tantum dei file DebugFS durante l'avvio.
Questo accesso si verifica una sola volta durante il boot.
|
L'HAL Dumpstate esegue questa operazione durante l'inizializzazione dell'HAL. Per attivare la stessa operazione,
init monta DebugFS nelle build userdebug prima dell'inizializzazione dell'HAL.
Init chiama umount() su DebugFS al termine dell'avvio del dispositivo.
|
Generare report di bug: l'HAL dumpstate legge i file DebugFS , che diventano parte del report di bug.
|
Eseguito dall'HAL dumpstate entro DumpstateBoard() quando viene chiamato da dumpstate
(DumpstateDevice.cpp).
Lo strumento dumpstate (parte del framework Android) assicura che DebugFS
venga montato durante l'invocazione.
|
Test e convalida specifici per il dispositivo | Adb root e shell. Monta DebugFS dalla shell adb con accesso root1.
|
1 Per montare DebugFS
da adb shell
con accesso root, utilizza questo comando:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Azioni richieste dal partner
In base a queste modifiche, i partner devono implementare quanto segue sui dispositivi Android 12:
- Fai in modo che tutte le inizializzazioni dei nodi
DebugFS
avvengano durante l'inizializzazione HAL dumpstate. Per un esempio di come eseguire questa operazione, consulta DNM: Example for boot time initialization ofDebugFS
files. - Non consentire l'accesso a
DebugFS
durante l'esecuzione. Si applicano le seguenti eccezioni:- Generazione di segnalazioni di bug (proveniente dall'HAL dumpstate)
- Test e convalida (accessibili da
adb root
eshell
- assicurati di montare prima DebugFS)
Gli sviluppatori possono impostare la proprietà persistente di debug
persist.dbg.keep_debugfs_mounted
per mantenere DebugFs
montato durante i riavvii nelle build userdebug ed eng.
I test di conformità GTS assicurano che il file system DebugFS
non sia montato nelle build utente. Le istruzioni neverallow
Sepolicy assicurano che nei dispositivi avviati su Android 12 o versioni successive, le procedure non autorizzate non abbiano accesso a DebugFs
.