Los dispositivos que se lanzan con Android 12 y usan versiones de kernel superiores a la v5.4 deben enviarse con el kernel de GKI. Para que los socios puedan acceder a DebugFS
en compilaciones de userdebug mientras desarrollan en el kernel de GKI, la configuración del kernel CONFIG_DEBUG_FS
está habilitada en la defconfig de GKI.
Nunca actives DebugFS
en compilaciones de usuario para dispositivos que se inicien en Android 12.
Las compilaciones de userdebug tienen una mejor cobertura de pruebas que las compilaciones de usuario y se prueban mucho durante el ciclo de desarrollo. El siguiente plan minimiza la diferencia entre los dos tipos de compilación con respecto al acceso a DebugFS
y proporciona los siguientes beneficios:
- Evita que las compilaciones de userdebug dependan accidentalmente de
DebugFS
para obtener funciones nuevas. - Garantiza que cualquier funcionalidad existente que se vea afectada por la falta de DebugFS se conozca al principio del ciclo de desarrollo.
Los accesos a DebugFS en compilaciones de userdebug se clasifican de la siguiente manera:
- Inicializaciones de archivos
DebugFS
durante el inicio del dispositivo, como un acceso de escritura a un archivo enDebugFS
para activar la recopilación de datos de depuración - Generación de informes de errores: El HAL de dumpstate lee archivos
DebugFS
cuandodumpstate
invoca aDumpstateBoard()
. Esta información forma parte del informe de errores. - Pruebas y validación específicas del dispositivo
En la siguiente tabla, se describe cómo se admite cada una de estas tres categorías en Android 12. Ten en cuenta que lo siguiente solo se aplica a las compilaciones de userdebug, ya que DebugFS
no se puede activar en las compilaciones de usuario.
Caso de uso | Compilación de userdebug de Android 12 |
---|---|
Inicialización única de archivos DebugFS durante el inicio.
Este acceso ocurre solo una vez durante el tiempo de inicio.
|
El HAL de Dumpstate realiza esta acción durante la inicialización del HAL. Para habilitar lo mismo,
init activa DebugFS en compilaciones de userdebug antes de que se inicialice el HAL.
Init llama a umount() en DebugFS cuando el dispositivo completó el inicio.
|
Generación de informes de errores: El HAL de dumpstate lee archivos DebugFS , que se convierten en parte del informe de errores.
|
Se realiza mediante el HAL de dumpstate dentro de DumpstateBoard() cuando lo invoca dumpstate (DumpstateDevice.cpp).
La herramienta dumpstate (parte del framework de Android) garantiza que DebugFS se monte durante la invocación.
|
Pruebas y validación específicas del dispositivo | Root y shell de adb Activa DebugFS desde el shell de adb con acceso raíz1.
|
1Para activar DebugFS
desde adb shell
con acceso raíz, usa este comando:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Acciones obligatorias de los socios
Los socios deben implementar lo siguiente en función de estos cambios en los dispositivos Android 12:
- Haz que todas las inicializaciones del tiempo de inicio de los nodos
DebugFS
ocurran durante la inicialización de HAL de dumpstate. Para ver un ejemplo de cómo hacerlo, consulta DNM: Ejemplo de inicialización del tiempo de inicio de archivosDebugFS
. - No permitas el acceso de
DebugFS
durante el tiempo de ejecución. Se aplican las siguientes excepciones:- Generación de informes de errores (proviene del HAL de dumpstate)
- Pruebas y validación (a las que se puede acceder con
adb root
yshell
; asegúrate de que DebugFS se monte primero)
Los desarrolladores pueden configurar la propiedad persistente de depuración persist.dbg.keep_debugfs_mounted
para mantener DebugFs
montada en los reinicios en compilaciones de userdebug y eng.
Las pruebas de cumplimiento de GTS garantizan que el sistema de archivos DebugFS
no se monte en compilaciones de usuarios. Las sentencias neverallow
de Sepolicy garantizan que, en los dispositivos que se inician en Android 12 o versiones posteriores, no se les proporcione acceso a DebugFs
a los procesos no autorizados.