App di esempio
Se riscontri problemi durante l'utilizzo delle API Home, puoi raccogliere i log per un ulteriore debug. La raccolta dei log dal dispositivo mobile richiede Android Debug Bridge (adb). Se hai bisogno di assistenza da parte di Google, raccogli i log sia dai dispositivi Android sia dall'hub e apri un ticket in Issue Tracker con le informazioni pertinenti e i log associati.
Raccogli i log di Android
Il tuo dispositivo mobile deve essere connesso alla tua macchina locale per tutti i passaggi che coinvolgono adb.
Installa adb
Se non l'hai ancora fatto, configura Android Debug Bridge sulla tua macchina locale:
- Installa "adb" sul computer.
- Attiva le Opzioni sviluppatore e il debug USB sul tuo smartphone Android.
Recupera l'ID dispositivo mobile
- Recupera l'ID del tuo dispositivo mobile:
adb devicesList of devices attached device-id device
- Memorizza questo valore in una variabile denominata
phoneid:phoneid=device-id
Informazioni sulla versione
Ti consigliamo di raccogliere tutte le informazioni sulla versione relative alla tua configurazione ogni volta che decidi di raccogliere i log. Questo è necessario se devi condividere i problemi con Google.
- Salva varie informazioni sul dispositivo in variabili:
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) - Salva tutte le variabili in un file denominato
_versions.txt:Espandi per mostrare i comandi per salvare le variabili in un file
L'intero blocco può essere copiato e incollato in un terminale contemporaneamente.
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 i contenuti di
_versions.txt:cat _versions.txtQuesto file può ora essere fornito a Google, se necessario, per la risoluzione dei problemi.Espandi per visualizzare l'output del file di esempio
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...
Attiva i flag di debug dettagliato
Prima di raccogliere i log del dispositivo Android o eseguire una segnalazione di bug, configura la dimensione del buffer del logger e attiva i tag di debug dettagliati per i componenti Google Home e 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 VERBOSERaccogli i log di Android tramite script
Per acquisire i log del dispositivo Android in tempo reale durante una sessione di debug:
- Segui le istruzioni riportate in Attiva i flag di debug dettagliato per cancellare i log esistenti, espandere la dimensione del buffer e impostare i tag di logging dettagliato.
- Chiudi tutte le applicazioni in esecuzione sul dispositivo mobile.
- Cancella il rumore esistente del buffer di log prima di iniziare il test:
adb -s $phoneid logcat -c - Avvia la procedura di raccolta dei log in una finestra del terminale:
Lascia aperta questa finestra del terminale. In questo modo, i log verranno acquisiti dal tuo dispositivo per tutta la durata del processo.adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt - Esegui l'app ed esegui tutte le azioni dell'interfaccia utente necessarie per riprodurre il problema.
- Al termine, interrompi il processo
logcatnel terminale premendo Ctrl+C (o Cmd+C su Mac). - I log di questa sessione vengono salvati in
android-logs_YYYYMMDDmmss.txt. Allega siaandroid-logs_YYYYMMDDmmss.txtsia_versions.txtalle segnalazioni di bug.
Raccogli i log di Android tramite adb bugreport
Acquisisci una segnalazione di bug Android completa quando devi condividere informazioni diagnostiche dettagliate relative a problemi a livello di sistema, dump di arresto anomalo o debug di rete e Bluetooth di basso livello:
- Commissioning BLE Matter:quando segnali un problema di commissioning Matter relativo a BLE, attiva il log di analisi HCI Bluetooth in Opzioni sviluppatore (Impostazioni > Opzioni sviluppatore > Attiva log di analisi HCI Bluetooth) prima di riprodurre il problema.
- Configurazione pre-test:prima di eseguire il test, segui i passaggi descritti in Attiva i flag di debug dettagliato per attivare le proprietà di debug dettagliato sul tuo dispositivo.
- Acquisisci segnalazione di bug:dopo aver eseguito il test e riprodotto il problema, esegui il comando seguente per generare un archivio completo delle segnalazioni di bug:
adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip - Informazioni di debug avanzate:il file
android-bugreport_YYYYMMDDmmss.zipgenerato contiene dati diagnostici completi a livello di sistema, tra cui dump di sistema completi, statistiche sulla memoria, diagnostica della batteria e tracce di sottosistemi di basso livello, fornendo informazioni più avanzate per il debug.
Log dei dispositivi hub di trasmissione
Puoi visualizzare i log del dispositivo per Google Nest Hub utilizzando questo metodo, supportato per i seguenti modelli:
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
Per attivare un hub Cast per il recupero dei log locali:
- Configura Android Debug Bridge.
Ottieni l'indirizzo IP dell'hub:
- Dall'hub, se ha uno schermo:
- Scorri verso il basso dalla parte superiore dello schermo.
- Tocca l'icona Impostazioni .
- Trova l'indirizzo IP del dispositivo: su un Nest Hub (2nd gen), vai a Informazioni sul dispositivo > Informazioni tecniche > Indirizzo IP
- Da GHA sullo smartphone:
- Tocca il dispositivo per visualizzare la relativa pagina dei dettagli.
- Tocca l'icona Impostazioni per visualizzare la pagina delle impostazioni.
- Trova l'indirizzo IP del dispositivo: vai a Informazioni sul dispositivo > Informazioni tecniche > Indirizzo IP.
- Dall'hub, se ha uno schermo:
Su un computer connesso alla stessa rete Wi-Fi del dispositivo:
adb connect ip-addressadb logcatPer fornire i log a qualcuno, esegui l'operazione che non va a buon fine e invia l'output a un file di testo:
adb logcat -d > platform-logs.txt
Automazioni
Rilevamento dei bordi
Le automazioni nell'ecosistema Google Home sono dotate di edge detection, una logica che verifica che un comando iniziale venga attivato solo quando si verifica un effettivo cambiamento di stato, anziché un aggiornamento dello stato che ripete semplicemente lo stato precedente del dispositivo.
Ad esempio, se l'accensione di una luce è uno starter, il rilevamento dei bordi verifica che lo starter si attivi solo se il dispositivo di illuminazione passa da spento ad acceso, anziché da acceso ad acceso (nessuna modifica).
L'automazione non si comporta come previsto
Dopo aver tenuto conto del rilevamento dei bordi, se un'automazione non funziona come previsto:
Controlla ogni dispositivo per assicurarti che funzioni correttamente indipendentemente dall'automazione.
Esamina il grafico dell'automazione e confrontalo con il DSL dell'automazione per individuare eventuali ipotesi errate da parte tua.
Osserva lo stato del dispositivo nell'app Google Home durante l'esecuzione dell'automazione.
Assicurati che tutti i dispositivi a cui fa riferimento l'automazione siano presenti nella struttura in cui ti aspetti che siano. L'eliminazione di un dispositivo da cui dipende un'automazione può avere conseguenze indesiderate. Consulta Impatto dell'eliminazione dei dispositivi sulle automazioni.
L'automazione viene eseguita quando non dovrebbe
Se l'automazione viene eseguita quando non dovrebbe, esamina i criteri del comando iniziale. Potrebbe essere necessario aggiungere una logica aggiuntiva per assicurarsi che una modifica dello stato venga acquisita una sola volta e attivi l'automazione una sola volta.
L'automazione non viene compilata
Assicurati che l'app contenga tutte le importazioni necessarie, inclusa ogni classe corrispondente ai diversi tipi di nodi e alle caratteristiche a cui fai riferimento.
La creazione dell'automazione non supera la convalida
Se la creazione dell'automazione non supera la convalida, un messaggio di avviso o di errore fornisce informazioni sul problema. Per saperne di più, consulta il riferimento ValidationIssueType.
La funzione List genera eccezioni
Quando chiami la funzione List dell'API Automation, i gestori di lettura potrebbero generare eccezioni a causa di funzionalità dell'API mancanti. Per mitigare questo problema, elimina l'automazione interessata.
Per
- Verifica che
adbsia installato. Consulta Installa adb. Recupera l'ID dell'automazione dai log di Android richiamando:
adb logcat -s GhpNativeLog di esempio:
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 devi eliminare più ID automazione, puoi utilizzare il pager del terminale per controllare l'output:
adb logcat -s GhpNative level:debug | lessElimina l'automazione utilizzando il relativo ID:
structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
L'API Discovery registra un avviso quando un tratto viene annullato
Se l'API Discovery registra un avviso per Trait not found, significa che l'API sta tentando di utilizzare la caratteristica per i candidati di Discovery, ma non ci riuscirà perché la caratteristica non è stata registrata durante l'inizializzazione. Ad esempio:
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
L'identificatore della caratteristica è home.matter.6006.clusters.fc43, che corrisponde a RelativeHumidityControl. Per determinare il nome del tratto da un ID, consulta l'indice dei tratti.
In questo esempio, RelativeHumidityControl deve essere registrato durante l'inizializzazione dell'app. Consulta la sezione Registrazione dei tratti per aggiungere il tuo tratto al registry.
OAuth
Se hai un client OAuth esistente
Se hai già un client OAuth verificato per un'app pubblicata, puoi utilizzarlo per testare le API Home.
La registrazione a Google Home Developer Console non è obbligatoria per testare e utilizzare le API Home. Tuttavia, per pubblicare l'app, devi comunque avere una registrazione Developer Console approvata, anche se hai un client OAuth verificato da un'altra integrazione.
Si applicano le seguenti considerazioni:
Esiste un limite di 100 utenti quando utilizzi un client OAuth esistente. Per informazioni sull'aggiunta di utenti di test, consulta Configura la schermata per il consenso OAuth. Indipendentemente dalla verifica OAuth, esiste un limite imposto dalle API Home di 100 utenti che possono concedere autorizzazioni alla tua applicazione. Questa limitazione viene revocata al completamento della registrazione di Developer Console.
Developer Console registration deve essere inviata per l'approvazione quando è tutto pronto per limitare le autorizzazioni dei tipi di dispositivi tramite OAuth in preparazione all'aggiornamento dell'app con le API Home.
Per le app Google Cloud ancora in attesa della verifica OAuth, gli utenti non possono completare il flusso OAuth finché la verifica non è stata completata. I tentativi di concedere le autorizzazioni non andranno a buon fine con il seguente errore:
Access blocked: <Project Name> has not completed the Google verification process.