Implementación del registro de proveedores con ámbito

Android 11 agrega un nuevo HAL, IDumpstateDevice (versión 1.1). Esta HAL expone nuevos métodos a registros de proveedores de alcance más estricto que se incluyen en 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 determinados tipos de informes de errores.

Esta función afecta a los OEM si eligen implementar esta HAL opcional. Los SoC pueden verse afectados, según lo que el OEM decida exponer con esta HAL. No hay un impacto esperado para los transportistas.

Lo que incluye en los informes de errores depende de la información que considere relevante para la depuración, pero, en general, más detallado es 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 herramientas dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h . También hay una implementación de Cuttlefish de HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/* .

El código fuente se encuentra aquí:

Implementación

Para implementar esta 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 que no son Wear OS).

La implementación de dumpstate HAL es opcional. Todos los dispositivos nuevos que se lancen 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 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 en el estado de volcado que también se incluyen con Android 11, ubicados en frameworks/native/cmds/dumpstate .

Es probable que la implementación de esta HAL requiera algunos cambios de SEPolicy en ciertas propiedades del sistema, archivos, etc. para que las cosas funcionen por completo, y requerirá la coordinación con los proveedores para volcar toda la información relevante en los 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á apagado, dumpstateBoard_1_1 aún puede generar información esencial mínima según lo determine el OEM. Desactivar el registro del proveedor hace que IDumpstateDevice::dumpstateBoard agregue solo información esencial a un informe de errores, 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 de módem/Wi-Fi/red.

Validación

Hay una prueba de VTS para la implementación de IDumpstateDevice y hay pruebas de unidades funcionales para la funcionalidad general de BugreportManager .

El caso de prueba manual recomendado es frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java .