Android 11 agrega un nuevo HAL, IDumpstateDevice (versión 1.1). Este HAL expone nuevos métodos para un alcance más estricto de los registros de proveedores que se incluyen en los informes de errores estándar, así como para permitir que las compilaciones de usuarios activen y desactiven el registro de proveedores (el valor predeterminado para las compilaciones de usuarios está desactivado). Esto les da a los OEM más control sobre lo que se incluye en tipos particulares de informes de errores.
Esta característica afecta a los OEM si deciden implementar este HAL opcional. Los SoC podrían verse afectados, dependiendo de lo que el OEM decida exponer con este HAL. No se espera ningún impacto para los transportistas.
Lo que incluya en los informes de errores depende de la información que considere relevante para la depuración, pero en general, cuanto más detallado, mejor.
Ejemplos y fuente
Hay una implementación predeterminada de la versión 1.0 (obsoleta) de IDumpstateDevice que muestra un ejemplo del uso de la biblioteca de utilidades dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h
. También hay una implementación Cuttlefish de HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
.
El código fuente se encuentra aquí:
- Los archivos HAL se encuentran en
hardware/interfaces/dumpstate/1.1/
. - El código nativo de dumpstate que controla el contenido del informe de errores se encuentra en
frameworks/native/cmds/dumpstate/
.
Implementación
Para implementar este HAL, implemente la interfaz HAL android.hardware.dumpstate@1.1::IDumpstateDevice
. Hay muchos valores posibles DumpstateMode
, pero es probable que no todos sean compatibles con un solo dispositivo (por ejemplo, WEAR para dispositivos sin sistema operativo Wear).
La implementación del estado de volcado HAL es opcional. Todos los dispositivos nuevos que se inicien con Android 11 DEBEN implementar IDumpstateDevice 1.1 si implementan Dumpstate HAL. Los dispositivos que ya implementaron IDumpstateDevice 1.0 antes de Android 11 deberían ser relativamente fáciles de actualizar a 1.1, y se recomienda encarecidamente hacerlo, ya que reduce en gran medida la cantidad de información privada superflua incluida en los informes de errores.
Esta característica depende de los cambios principales del estado de volcado que también se incluyen con Android 11, ubicados en frameworks/native/cmds/dumpstate
.
La implementación de este HAL probablemente requerirá algunos cambios de SEPolicy en ciertas propiedades del sistema, archivos, etc. para que todo funcione completamente, y requerirá coordinación con los proveedores para volcar toda la información relevante en informes de errores.
Personalización
El usuario del dispositivo puede activar o desactivar el inicio de sesión del proveedor mediante la configuración del desarrollador. Cuando está desactivado, dumpstateBoard_1_1
aún puede generar información esencial mínima según lo determine el OEM. Desactivar el registro de proveedores hace que IDumpstateDevice::dumpstateBoard
agregue solo información esencial a un informe de error, mientras que activarlo incluye cualquier información que elija el OEM.
Puede modificar dumpstate.cpp
(que llama a los métodos HAL de IDumpstateDevice), por ejemplo, para aumentar el tiempo de espera dado para que se complete dumpstateBoard
. Sin embargo, la lógica central de dumpstate.cpp
debería permanecer sin cambios.
Los tiempos de espera pueden tener cualquier valor, pero no deberían aumentar drásticamente el tiempo que tarda en completarse un informe de error. En particular, DumpstateMode::CONNECTIVITY
es muy sensible al tiempo y debe ejecutarse lo más rápido posible para recopilar todos los registros relevantes del módem/Wi-Fi/red.
Validación
Hay una prueba VTS para la implementación de IDumpstateDevice y hay pruebas de unidades funcionales para la funcionalidad general BugreportManager
.
El caso de prueba manual recomendado es frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
.