Implementa el registro de proveedores específicos

Android 11 agrega una HAL nueva: IDumpstateDevice (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 OEM si deciden implementar este HAL opcional. Los SoCs pueden verse afectados, según lo que el OEM decida exponer con este HAL. No se espera que esto afecte a los operadores.

Lo que incluyas en los informes de errores dependerá de la información que consideres pertinente para la depuración, pero, en general, cuanto más detallado sea el informe, 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 de 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 esta HAL, implementa la interfaz de la HAL android.hardware.dumpstate@1.1::IDumpstateDevice. Hay muchos valores de DumpstateMode posibles, 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 del HAL de dumpstate 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 poder actualizarse a la versión 1.1 con relativa facilidad, y se recomienda hacerlo, ya que reduce en gran medida la cantidad de información privada ajena que se incluye en los informes de errores.

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

Es probable que la implementación de este HAL requiera algunos cambios en SEPolicy para ciertas propiedades del sistema, archivos, etcétera, para que todo funcione correctamente, y requerirá coordinación con los proveedores para volcar toda la información pertinente en los informes de errores.

Personalización

El usuario del dispositivo puede activar o desactivar el registro del proveedor con la configuración para desarrolladores. Cuando está desactivada, es posible que dumpstateBoard_1_1 siga mostrando información esencial mínima según lo determine el OEM. Desactivar el registro del proveedor hace que IDumpstateDevice::dumpstateBoard agregue solo la información esencial a un informe de errores, mientras que activarlo incluye la información que el OEM elija.

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

Los tiempos de espera pueden tener cualquier valor, pero no deben aumentar drásticamente el tiempo que lleva completar un informe de errores. 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 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.