App de exemplo
Se você tiver problemas ao usar as APIs Home, colete registros
para depuração. A coleta de registros do dispositivo móvel requer o Android
Debug Bridge (adb). Se você precisar de assistente do Google, colete os registros dos
dispositivos Android e do hub e abra um tíquete no Issue Tracker com
as informações e os registros relevantes associados a ele.
Coletar registros do Android
O dispositivo móvel precisa estar conectado à máquina local em todas as etapas
que envolvem o adb.
Instalar o adb
Se ainda não tiver feito isso, configure o Android Debug Bridge na sua máquina local:
- Instale o "adb" no seu computador.
- Ative as opções do desenvolvedor e a depuração USB no smartphone Android.
Encontrar o ID do dispositivo móvel
- Encontre o ID do seu dispositivo móvel:
adb devicesList of devices attached device-id device
- Armazene esse valor em uma variável chamada
phoneid:phoneid=device-id
Informações da versão
Recomendamos que você reúna todas as informações de versão relacionadas à sua configuração sempre que decidir coletar registros. Isso é necessário se você precisar compartilhar problemas com o Google.
- Salve várias informações do dispositivo em variáveis:
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) - Salve todas as variáveis em um arquivo chamado
_versions.txt:Abrir para mostrar comandos para salvar variáveis em um arquivo
O bloco inteiro pode ser copiado e colado em um terminal de uma só 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
- Verifique o conteúdo de
_versions.txt:cat _versions.txtEsse arquivo pode ser fornecido ao Google conforme necessário para solução de problemas.Abrir para mostrar a saída do arquivo de amostra
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...
Ativar flags de depuração detalhada
Antes de coletar registros de dispositivos Android ou gerar um relatório de bugs, configure o tamanho do buffer do logger e ative as tags de depuração detalhadas para os componentes do Google Home e do 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 VERBOSEColetar registros do Android por scripts
Para capturar registros de dispositivos Android em tempo real durante uma sessão de depuração:
- Siga as instruções em Ativar flags de depuração detalhada para limpar os registros atuais, expandir o tamanho do buffer e definir tags de registro detalhado.
- Feche todos os aplicativos em execução no dispositivo móvel.
- Limpe o ruído do buffer de registro atual antes de iniciar o teste:
adb -s $phoneid logcat -c - Inicie o processo de coleta de registros em uma janela do terminal:
Deixe essa janela do terminal aberta. Isso vai capturar os registros do seu dispositivo enquanto o processo estiver em execução.adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt - Execute o app e realize todas as ações de interface do usuário necessárias para reproduzir o problema.
- Quando terminar, interrompa o processo
logcatno terminal pressionando Ctrl+C (ou Cmd+C no Mac). - Os registros desta sessão são salvos em
android-logs_YYYYMMDDmmss.txt. Anexeandroid-logs_YYYYMMDDmmss.txte_versions.txta todos os relatórios de bugs.
Coletar registros do Android pelo bugreport do adb
Gere um relatório de bugs completo do Android quando precisar compartilhar informações de diagnóstico detalhadas sobre problemas no sistema, crash dumps ou depuração de rede e Bluetooth de baixo nível:
- Comissionamento do Matter BLE:ao informar um problema de comissionamento do Matter relacionado ao BLE, ative o registro de rastreamento do Bluetooth HCI nas Opções do desenvolvedor (Configurações > Opções do desenvolvedor > Ativar registro de rastreamento do Bluetooth HCI) antes de reproduzir o problema.
- Configuração pré-teste:antes de executar o teste, siga as etapas em Ativar flags de depuração detalhada para ativar as propriedades de depuração detalhada no dispositivo.
- Capturar relatório de bugs:depois de executar o teste e reproduzir o problema, execute o comando abaixo para gerar um arquivo completo de relatório de bugs:
adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip - Informações de depuração avançadas:o arquivo
android-bugreport_YYYYMMDDmmss.zipgerado contém dados de diagnóstico abrangentes no nível do sistema, incluindo dumps completos do sistema, estatísticas de memória, diagnósticos de bateria e rastreamentos de subsistemas de baixo nível, fornecendo informações mais avançadas para depuração.
Registros do dispositivo do hub de transmissão
É possível ver os registros do dispositivo para o Google Nest Hub usando este método, que é compatível com os seguintes modelos:
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
Para ativar um hub do Cast para recuperação de registros locais:
- Configure o Android Debug Bridge.
Encontre o endereço IP do hub:
- No hub, se ele tiver uma tela:
- Deslize de cima para baixo na tela.
- Toque no ícone de configurações
- Encontre o endereço IP do dispositivo: em um Nest Hub (2nd gen), acesse Informações do dispositivo > Informações técnicas > Endereço IP.
- No app GHA do smartphone:
- Toque no dispositivo para abrir a página de detalhes.
- Toque no ícone de configurações para abrir a página de configurações.
- Encontre o endereço IP do dispositivo: acesse Informações do dispositivo > Informações técnicas > Endereço IP.
- No hub, se ele tiver uma tela:
Em um computador na mesma rede Wi-Fi do dispositivo:
adb connect ip-addressadb logcatPara fornecer registros a alguém, execute a operação que está falhando e direcione a saída para um arquivo de texto:
adb logcat -d > platform-logs.txt
Automações
Detecção de bordas
As automações no ecossistema do Google Home têm detecção de borda, que é uma lógica que verifica se uma ativação só ocorre quando há uma mudança real de estado, em vez de uma atualização de estado que apenas repete o estado anterior do dispositivo.
Por exemplo, se acender uma luz for uma ativação, a detecção de borda vai verificar se a ativação só ocorre quando o dispositivo de iluminação passa de desligado para ligado, em vez de ligado para ligado (sem mudança).
A automação não se comporta como esperado
Depois de considerar a detecção de borda, se uma automação não se comportar conforme o esperado:
Verifique cada dispositivo para garantir que ele esteja funcionando corretamente, independente da automação.
Confira o gráfico da automação, comparando-o com a DSL da automação, para revelar possíveis suposições incorretas da sua parte.
Observe o estado do dispositivo no app Google Home durante a execução da automação.
Verifique se todos os dispositivos referenciados pela automação estão presentes na estrutura em que você espera que estejam. Excluir um dispositivo de que uma automação depende pode ter consequências indesejadas. Consulte Impacto da exclusão de dispositivos nas automações.
A automação é executada quando não deveria
Se a automação for executada quando não deveria, analise os critérios de ativação. Pode ser necessário adicionar mais lógica para garantir que uma mudança de estado seja capturada apenas uma vez e acione a automação apenas uma vez.
A automação não é compilada
Verifique se o app contém todas as importações necessárias, incluindo cada classe correspondente aos diferentes tipos de nó, bem como as características que você está referenciando.
A criação da automação falha na validação
Se a criação da automação não passar na validação, uma mensagem de aviso ou mensagem de erro vai fornecer informações sobre o problema. Para mais informações, consulte a
referência de ValidationIssueType.
A função de lista gera exceções
Ao chamar a função List da API Automation, os gerenciadores de leitura podem gerar exceções devido à falta de recursos da API. Para mitigar isso, exclua a automação afetada.
Para fazer isto:
- Verifique se o
adbestá instalado. Consulte Instalar o adb. Invoque o seguinte para recuperar o ID da automação nos registros do Android:
adb logcat -s GhpNativeExemplos de registros:
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" ...Se for necessário excluir vários IDs de automação, use o paginador do terminal para controlar a saída:
adb logcat -s GhpNative level:debug | lessExclua a automação usando o ID dela:
structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
A API Discovery registra um aviso quando um atributo é cancelado
Se a API Discovery registrar um aviso para Trait not found, isso significa
que ela está tentando usar a característica para candidatos do Discovery, mas não
vai conseguir porque a característica não foi registrada durante a inicialização. Exemplo:
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
O identificador do atributo é home.matter.6006.clusters.fc43, que corresponde
a RelativeHumidityControl. Para determinar o nome do atributo com base em um ID, consulte o
índice de atributos.
Neste exemplo, RelativeHumidityControl precisa ser registrado durante a inicialização do app. Consulte Como registrar atributos para adicionar seu atributo ao registro.
OAuth
Se você já tiver um cliente OAuth
Se você já tiver um cliente OAuth verificado para um app publicado, poderá usá-lo para testar as APIs Home.
O registro do Google Home Developer Console não é necessário para testar e usar as APIs Home. No entanto, você ainda vai precisar de um registro aprovado do Developer Console para publicar o app, mesmo que tenha um cliente OAuth verificado de outra integração.
As seguintes considerações se aplicam:
Há um limite de 100 usuários ao usar um cliente OAuth atual. Para saber como adicionar usuários de teste, consulte Configure a tela de permissão OAuth. Independentemente da verificação do OAuth, há um limite imposto pelas APIs Home de 100 usuários que podem conceder permissões ao seu aplicativo. Essa limitação é suspensa após a conclusão do registro do Developer Console.
Developer Console registration deve ser enviado para aprovação quando você estiver pronto para restringir as concessões de tipo de dispositivo pelo OAuth em preparação para atualizar seu app com as APIs Home.
Para apps do Google Cloud que ainda estão com a verificação do OAuth pendente, os usuários não podem concluir o fluxo do OAuth até que a verificação seja concluída. As tentativas de conceder permissões vão falhar com o seguinte erro:
Access blocked: <Project Name> has not completed the Google verification process.