Implementa el registro específico del proveedor

Android 11 agrega una HAL nueva: IDumstateDevice (versión 1.1). Esta HAL expone nuevos métodos para alcanzar de manera más precisa los registros de proveedores que se incluyen en los informes de errores estándar, así como permitirles a las compilaciones de usuarios activar y desactivar el registro de proveedores (está desactivado de manera predeterminada para compilaciones de usuarios). De esta manera, los OEM tienen más control sobre lo que se incluye en tipos de informes de errores específicos.

Esta función afecta a los OEMs si deciden implementar este HAL opcional. Es posible que los SoCs se vean afectados, según lo que el OEM decida exponer con este HAL. No se espera que esto afecte a las empresas de transporte.

Lo que incluyas en los informes de errores depende de la información que consideres relevante para la depuración, pero, en general, es mejor que sea más detallado.

Ejemplos y fuente

Hay una implementación predeterminada de la versión 1.0 (obsoleto) de IDumpstateDevice que muestra un ejemplo del uso de la biblioteca de utilidad dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h. También hay una implementación de Cuttlefish del HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.

El código fuente se encuentra aquí:

Implementación

Para implementar este HAL, implementa la interfaz de HAL de android.hardware.dumpstate@1.1::IDumpstateDevice. Hay muchos valores posibles de 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 la HAL de estado de volcado es opcional. Todos los dispositivos nuevos que se lancen con Android 11 DEBEN implementar IDumpstateDevice 1.1 si implementan la HAL de Dumpstate. Los dispositivos que ya implementaron IDumpstateDevice 1.0 antes de Android 11 deberían ser relativamente fáciles de actualizar a la versión 1.1, y se recomienda hacerlo, ya que reduce en gran medida la cantidad de información privada adicional que se incluye en los informes de errores.

Esta función depende de los cambios de estado de volcado principales que también se incluyen en Android 11, ubicados en frameworks/native/cmds/dumpstate.

Es probable que la implementación de esta HAL requiera algunos cambios de SEPolicy en ciertos archivos, propiedades del sistema, etc. para que todo funcione por completo, y requerirá 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 registro del proveedor mediante la configuración del desarrollador. Cuando está desactivado, dumpstateBoard_1_1 puede seguir generando información mínima y esencial según lo determine el OEM. Si desactivas el registro del proveedor, IDumpstateDevice::dumpstateBoard solo agregará información esencial a un informe de errores, mientras que si lo activas, se incluirá cualquier información que elija el OEM.

Puedes modificar dumpstate.cpp (que llama a los métodos HAL de IDumpstateDevice), por ejemplo, para aumentar el tiempo de espera para que se complete dumpstateBoard. Sin embargo, la lógica principal de dumpstate.cpp no debe modificarse.

Los tiempos de espera pueden tener cualquier valor, pero no deberían aumentar drásticamente el tiempo que tarda en completarse un informe de errores. En particular, DumpstateMode::CONNECTIVITY es una función urgente y debe ejecutarse lo más rápido posible para recopilar todos los registros relevantes de módem, Wi-Fi y redes.

Validación

Hay una prueba de VTS para la implementación de IDumpstateDevice y 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.