App de ejemplo
Si tienes problemas cuando usas las APIs de Home, puedes recopilar registros para depurar aún más. Para recopilar registros del dispositivo móvil, se requiere Android Debug Bridge (adb). Si necesitas asistencia de Google, recopila los registros de los dispositivos Android y del concentrador, y abre un ticket en el sistema de seguimiento de problemas con la información y los registros pertinentes asociados.
Cómo recopilar registros de Android
Tu dispositivo móvil debe estar conectado a tu máquina local para todos los pasos que involucren a adb.
Instala adb
Si aún no lo hiciste, configura Android Debug Bridge en tu máquina local:
- Instala "adb" en tu computadora.
- Activa las opciones para desarrolladores y la depuración por USB en tu teléfono Android.
Cómo obtener el ID del dispositivo móvil
- Obtén el ID de tu dispositivo móvil:
adb devicesList of devices attached device-id device
- Almacena este valor en una variable llamada
phoneid:phoneid=device-id
Información de la versión
Te recomendamos que recopiles toda la información de la versión relacionada con tu configuración cada vez que decidas recopilar registros. Este paso es obligatorio si necesitas compartir problemas con Google.
- Guarda diversa información del dispositivo en variables:
containerinfo=$(adb -s $phoneid shell dumpsys package com.google.android.gms | grep -m 1 "versionName" || true); ghainfo=$(adb -s $phoneid shell dumpsys package com.google.android.apps.chromecast.app | grep -m 1 "versionName" || true); androidversion=$(adb -s $phoneid shell getprop ro.build.version.release || true); androidapiversion=$(adb -s $phoneid shell getprop ro.build.version.sdk || true); chimeradump=$(adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider || true); homemoduleinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.home" || true); optionalhomemoduleinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.optional_home" || true); threadinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.threadnetwork" || true); enabledfeatures=$(echo "$chimeradump" | grep "Enabled features" | grep -i "home" | sort -u || true) - Guarda todas las variables en un archivo llamado
_versions.txt:Expande para mostrar los comandos para guardar variables en un archivo
Todo el bloque se puede copiar y pegar en una terminal a la vez.
versionfile="_versions.txt" echo "Saving version info to $versionfile" echo "Container version: $containerinfo" > $versionfile echo "Home Module version: $homemoduleinfo" >> $versionfile echo "Optional Home Module version: $optionalhomemoduleinfo" >> $versionfile echo "Thread Module version: $threadinfo" >> $versionfile echo "GHA version: $ghainfo" >> $versionfile echo "Android version: $androidversion" >> $versionfile echo "Android API version: $androidapiversion" >> $versionfile echo "Found enabled features: $enabledfeatures" >> $versionfile
- Verifica el contenido de
_versions.txt:cat _versions.txtAhora, este archivo se puede proporcionar a Google según sea necesario para solucionar problemas.Expandir para mostrar el resultado del archivo de muestra
Container version: versionName=26.26.34 (190400-945364269) Home Module version: com.google.android.gms.home [v262634001] Optional Home Module version: com.google.android.gms.optional_home [262634025] ... Thread Module version: com.google.android.gms.threadnetwork [v262634001] GHA version: versionName=4.22.28.0 Android version: 14 Android API version: 34 Found enabled features: Enabled features: appsearch_impl, brella_dynamite, dck_management...
Habilita marcas de depuración detalladas
Antes de recopilar registros del dispositivo Android o ejecutar un informe de errores, configura el tamaño del búfer del registrador y habilita las etiquetas de depuración detallada para los componentes de Google Home y de GMS:
# Clear existing device logs and expand logger buffer size
adb -s $phoneid logcat -b all -c
adb -s $phoneid logcat -G 8M
# Enable GMS Service ID verbose flags
adb -s $phoneid shell setprop log.tag.gms_svc_id:168 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:304 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:305 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:319 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:336 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:360 VERBOSE
# Enable GHP and Matter log tags
adb -s $phoneid shell setprop log.tag.CameraCommissioningPlugin VERBOSE
adb -s $phoneid shell setprop log.tag.HomeSdk VERBOSE
adb -s $phoneid shell setprop log.tag.HomeClient VERBOSE
adb -s $phoneid shell setprop log.tag.InteractionApiChimeraService VERBOSE
adb -s $phoneid shell setprop log.tag.MatterCommissioner VERBOSE
adb -s $phoneid shell setprop log.tag.SampleApp VERBOSERecopila registros de Android con secuencias de comandos
Para capturar registros del dispositivo Android en vivo durante una sesión de depuración, haz lo siguiente:
- Sigue las instrucciones en Habilita marcas de depuración detallada para borrar los registros existentes, expandir el tamaño del búfer y establecer etiquetas de registro detallado.
- Cierra todas las aplicaciones que se estén ejecutando en el dispositivo móvil.
- Borra el ruido existente del búfer de registro antes de comenzar la prueba:
adb -s $phoneid logcat -c - Inicia el proceso de recopilación de registros en una ventana de terminal:
Deja abierta esta ventana de terminal. Esto capturará registros de tu dispositivo durante el tiempo que se ejecute el proceso.adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt - Ejecuta tu app y realiza todas las acciones de la interfaz de usuario necesarias para reproducir el problema.
- Cuando termines, presiona Ctrl+C (o Cmd+C en Mac) para detener el proceso de
logcaten la terminal. - Los registros de esta sesión se guardan en
android-logs_YYYYMMDDmmss.txt. Adjuntaandroid-logs_YYYYMMDDmmss.txty_versions.txta los informes de errores.
Recopila registros de Android con el informe de errores de adb
Captura un informe de errores completo de Android cuando necesites compartir información de diagnóstico detallada que abarque problemas a nivel del sistema, volcados de memoria por fallas o depuración de red y Bluetooth de bajo nivel:
- Puesta en servicio de Matter BLE: Cuando informes un problema de puesta en servicio de Matter relacionado con BLE, habilita el registro de búsqueda de HCI de Bluetooth en las Opciones para desarrolladores (Configuración > Opciones para desarrolladores > Habilitar registro de búsqueda de HCI de Bluetooth) antes de reproducir el problema.
- Configuración previa a la prueba: Antes de ejecutar la prueba, sigue los pasos que se indican en Habilita marcas de depuración detallada para habilitar las propiedades de depuración detallada en tu dispositivo.
- Capture Bug Report: Después de ejecutar la prueba y reproducir el problema, ejecuta el siguiente comando para generar un archivo completo del informe de errores:
adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip - Información de depuración avanzada: El archivo
android-bugreport_YYYYMMDDmmss.zipgenerado contiene datos de diagnóstico integrales a nivel del sistema, incluidos volcados completos del sistema, estadísticas de memoria, diagnósticos de batería y registros de subsistemas de bajo nivel, lo que proporciona información más avanzada para la depuración.
Registros del dispositivo central de transmisión
Con este método, puedes ver los registros de dispositivos de tu Google Nest Hub, que es compatible con los siguientes modelos:
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
Para habilitar un centro de Cast para la recuperación de registros locales, haz lo siguiente:
- Configura Android Debug Bridge.
Obtén la dirección IP de tu concentrador:
- Desde la unidad central, si tiene pantalla, haz lo siguiente:
- Desliza el dedo hacia abajo desde la parte superior de la pantalla.
- Presiona el ícono de Configuración .
- Busca la dirección IP del dispositivo: En un Nest Hub (2nd gen), ve a Información del dispositivo > Información técnica > Dirección IP.
- En GHA en tu teléfono, haz lo siguiente:
- Presiona el dispositivo para que aparezca la página de detalles.
- Presiona el ícono de Configuración para abrir la página de configuración.
- Busca la dirección IP del dispositivo: Ve a Información del dispositivo > Información técnica > Dirección IP.
- Desde la unidad central, si tiene pantalla, haz lo siguiente:
En una computadora conectada a la misma red Wi-Fi que el dispositivo, haz lo siguiente:
adb connect ip-addressadb logcatPara proporcionar registros a alguien, realiza la operación que falla y canaliza el resultado a un archivo de texto:
adb logcat -d > platform-logs.txt
Automatizaciones
Detección de bordes
Las automatizaciones del ecosistema de Google Home incluyen la detección de bordes, que es una lógica que verifica que un activador solo se active cuando hay un cambio de estado real, a diferencia de una actualización de estado que simplemente repite el estado anterior del dispositivo.
Por ejemplo, si encender una luz es un iniciador, la detección de bordes verifica que el iniciador solo se active si el dispositivo de luz pasa de apagado a encendido, en lugar de encendido a encendido (sin cambios).
La automatización no se comporta como se espera
Después de tener en cuenta la detección de bordes, si una automatización no se comporta como se espera, haz lo siguiente:
Verifica cada dispositivo para asegurarte de que funcione correctamente independientemente de la automatización.
Consulta el gráfico de automatización para comparar tu automatización con el DSL de automatización y revelar cualquier suposición potencialmente incorrecta de tu parte.
Observa el estado del dispositivo en la app de Google Home durante la ejecución de tu automatización.
Verifica que todos los dispositivos a los que hace referencia la automatización estén presentes en la estructura donde esperas que estén. Borrar un dispositivo del que depende una automatización puede tener consecuencias no deseadas. Consulta Impacto de la eliminación de dispositivos en las automatizaciones.
La automatización se ejecuta cuando no debería hacerlo
Si tu automatización se ejecuta cuando no debería, examina los criterios del activador. Es posible que sea necesario agregar lógica adicional para asegurarse de que un cambio de estado se capture solo una vez y active la automatización solo una vez.
La automatización no se compila
Asegúrate de que tu app contenga todas las importaciones necesarias, incluida cada clase correspondiente a los diferentes tipos de nodos, así como los rasgos a los que haces referencia.
La creación de la automatización no pasa la validación
Si la creación de la automatización no pasa la validación, un mensaje de advertencia o error proporciona información sobre el problema. Para obtener más información, consulta la referencia de ValidationIssueType.
La función de lista arroja excepciones
Cuando se llama a la función List de la API de Automation, los controladores de lectura pueden arrojar excepciones debido a la falta de funciones de la API. Para mitigar este problema, borra la automatización afectada.
Para hacer lo siguiente:
- Verifica que
adbesté instalado. Consulta Cómo instalar adb. Para recuperar el ID de la automatización de los registros de Android, invoca lo siguiente:
adb logcat -s GhpNativeRegistros de ejemplo:
adb logcat -s GhpNative level:debug | grep -A 10 -B 10 AutomationManagerTrait\.ListResponse INTERACTION RESPONSE -> SendCommandsResponse: 1 { 1: "automation@global" 3 { 1: "home.internal.traits.automation.AutomationManagerTrait.ListResponse" 2: 5 { 1: "type.googleapis.com/home.internal.traits.automation.AutomationManagerTrait.ListResponse" 1 { 1: "1111-2222-3333-44444-55555" // Automation ID to delete 2: "structure@2222-3333-4444-5555-6666" ...Si se deben borrar varios IDs de automatización, puedes usar el paginador de la terminal para controlar el resultado:
adb logcat -s GhpNative level:debug | lessBorra la automatización con su ID:
structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
La API de Discovery registra una advertencia cuando se anula el registro de un rasgo
Si la API de Discovery registra una advertencia para Trait not found, significa que la API está intentando usar el rasgo para los candidatos de Discovery, pero no lo logrará porque el rasgo no se registró durante la inicialización. Por ejemplo:
09-03 17:45:20.578 10646 10646 W AutomationSdk: trait_id: "home.matter.6006.clusters.fc43" and Exception occurred com.google.home.HomeException: 18: Trait not found: home.matter.6006.clusters.fc43
09-03 17:45:20.578 10646 10646 W AutomationSdk: While converting candidate: # com.google.home.platform.traits.AutomationCandidateNode@76f0b582
El identificador del rasgo es home.matter.6006.clusters.fc43, que corresponde a RelativeHumidityControl. Para determinar el nombre del rasgo a partir de un ID, consulta el Índice de rasgos.
En este ejemplo, RelativeHumidityControl debe registrarse durante la inicialización de la app. Consulta Cómo registrar rasgos para agregar tu rasgo al registro.
OAuth
Si ya tienes un cliente de OAuth
Si ya tienes un cliente de OAuth verificado para una app publicada, puedes usar tu cliente de OAuth existente para probar las APIs de Home.
No es necesario registrar Google Home Developer Console para probar y usar las APIs de Home. Sin embargo, seguirás necesitando un registro de Developer Console aprobado para publicar tu app, incluso si tienes un cliente de OAuth verificado de otra integración.
Se aplican las siguientes consideraciones:
Hay un límite de 100 usuarios cuando se usa un cliente de OAuth existente. Para obtener información sobre cómo agregar usuarios de prueba, consultaConfigura la pantalla de consentimiento de OAuth. Independientemente de la verificación de OAuth, las APIs de Home imponen un límite de 100 usuarios que pueden otorgar permisos a tu aplicación. Esta limitación se levanta cuando se completa el registro de Developer Console.
Developer Consoleregistro se debe enviar para su aprobación cuando esté todo listo para restringir las concesiones de tipos de dispositivos a través de OAuth en preparación para actualizar tu app con las APIs de Home.
En el caso de las apps de Google Cloud que aún no se verificaron con OAuth, los usuarios no pueden completar el flujo de OAuth hasta que se complete la verificación. Los intentos de otorgar permisos fallarán y arrojarán el siguiente error:
Access blocked: <Project Name> has not completed the Google verification process.