App de ejemplo
Si tienes problemas cuando usas las APIs de Home, puedes recopilar registros
para realizar una depuración más detallada. 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 la herramienta de seguimiento de errores con
la información y los registros pertinentes asociados.
Recopila 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.
Obtén el ID de 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. Esto es obligatorio si necesitas compartir problemas con Google.
- Guarda información de varios dispositivos 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 que guardan 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, puedes proporcionar este archivo 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 las marcas de depuración detallada
Antes de recopilar los 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 detalladas para los componentes de Google Home y GMS:
# Clear existing device logs and expand logger buffer size
adb -s $phoneid logcat -b all -c
adb -s $phoneid logcat -G 8M
# Enable displaying seconds on the screen
adb -s $phoneid shell settings put secure clock_seconds 1
# 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 de dispositivos Android en tiempo real durante una sesión de depuración, haz lo siguiente:
- Sigue las instrucciones que se indican en Habilita marcas de depuración detalladas para borrar los registros existentes, expandir el tamaño del búfer y establecer etiquetas de registro detalladas.
- 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 iniciar 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á los 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, detén el proceso de
logcaten la terminal presionando Ctrl + C (o Cmd + C en Mac). - 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 de Android completo cuando necesites compartir información de diagnóstico detallada que abarque problemas a nivel del sistema, volcados de fallas o depuración de red y Bluetooth de bajo nivel:
- Comisión de Matter BLE: Cuando informes un problema de comisión de Matter relacionado con BLE, habilita el registro de búsqueda de HCI de Bluetooth en Opciones para desarrolladores (Configuración > Opciones para desarrolladores > Habilitar el 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 las marcas de depuración detallada para habilitar las propiedades de depuración detallada en tu dispositivo.
- Captura un informe de errores: Después de ejecutar la prueba y reproducir el problema, ejecuta el siguiente comando para generar un archivo de informe de errores completo:
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 seguimientos de subsistemas de bajo nivel, lo que proporciona información más avanzada para la depuración.
Registros del dispositivo de transmisión de contenido multimedia
Puedes ver los registros del dispositivo de tu Google Nest Hub con este método, que es compatible con los siguientes modelos:
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
Para habilitar un concentrador 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:
- 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
- Desde GHA en tu teléfono:
- 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:
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 en el ecosistema de Google Home incluyen la detección de bordes, que es la lógica que verifica que un activador solo se active cuando hay un cambio de estado real, en lugar de una actualización de estado que simplemente repite el estado anterior del dispositivo.
Por ejemplo, si encender una luz es un activador, la detección de flancos verifica que el activador solo se active si ese 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 flancos, si una automatización no se comporta como se espera, haz lo siguiente:
Verifica cada dispositivo para asegurarte de que funcione correctamente de forma independiente de tu automatización.
Observa el gráfico de automatización de tu automatización y compáralo con tu DSL de automatización para 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.
Asegúrate de que todos los dispositivos a los que hace referencia la automatización estén presentes en la estructura en la que 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 debas agregar lógica adicional para asegurarte 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 que faltan funciones de la API. Para mitigar este problema, borra la automatización afectada.
Para hacer lo siguiente:
- Asegúrate de que
adbesté instalado. Consulta Cómo instalar adb. Invoca lo siguiente para recuperar el ID de la automatización de los registros de Android:
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 cancela el registro de un atributo
Si la API de Discovery registra una advertencia para Trait not found, significa que
la API está intentando usar el atributo para los candidatos de Discovery, pero no
lo logrará porque el atributo 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 de la característica es home.matter.6006.clusters.fc43, que corresponde
a RelativeHumidityControl. Para determinar el nombre del atributo a partir de un ID, consulta el
Índice de atributos.
En este ejemplo, se debe registrar RelativeHumidityControl durante la inicialización de la app. Consulta Cómo registrar rasgos para agregar tu rasgo al registro.
OAuth
Si tienes un cliente de OAuth existente
Si ya tienes un cliente de OAuth verificado para una app publicada, puedes usarlo para probar las APIs de Home.
No es necesario registrarse en Google Home Developer Console para probar y usar las APIs de Home. Sin embargo, de todas formas, necesitarás 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, consulta Configura la pantalla de consentimiento de OAuth. Independientemente de la verificación de OAuth, existe un límite impuesto por las APIs de Home de 100 usuarios que pueden otorgar permisos a tu aplicación. Esta limitación se quita cuando se completa el registro de Developer Console.
El registro deDeveloper Console debe enviarse para su aprobación cuando tengas todo listo para restringir los permisos de tipo de dispositivo a través de OAuth como preparación para actualizar tu app con las APIs de Home.
En el caso de las apps de Google Cloud que aún tienen pendiente la verificación de OAuth, los usuarios no pueden completar el flujo de OAuth hasta que se complete la verificación. Los intentos de otorgar permisos fallarán con el siguiente error:
Access blocked: <Project Name> has not completed the Google verification process.