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
DebugFSper 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
DebugFSdurante l'avvio del dispositivo, ad esempio un accesso in scrittura a un file inDebugFSper attivare la raccolta dei dati di debug. - Generazione di segnalazioni di bug: l'HAL dumpstate legge i file
DebugFSquandoDumpstateBoard()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
DebugFSavvengano durante l'inizializzazione HAL dumpstate. Per un esempio di come eseguire questa operazione, consulta DNM: Example for boot time initialization ofDebugFSfiles. - Non consentire l'accesso a
DebugFSdurante l'esecuzione. Si applicano le seguenti eccezioni:- Generazione di segnalazioni di bug (proveniente dall'HAL dumpstate)
- Test e convalida (accessibili da
adb rooteshell- 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.