Saltare al contenuto

Debugging

GitHub

Se ottieni una rifiutazione del cloud code e hai bisogno di walkthroughs di rimediazione piĂš approfonditi, vedi Problemi di aggiornamento comuni.

Capgo i log possono includere metadati per l'evento. Nel dashboard, filtra per l'azione code in snake_case e clicca sulla cella dei metadati per copiare il payload JSON completo. I metadati sono specialmente utili per gli eventi di crash e WebView perchĂŠ possono includere il messaggio di errore, l'URL di origine, la riga e la colonna, lo stato del processo, la pressione della memoria o la ragione specifica del sistema operativo. I log piĂš vecchi possono ancora mostrare gli alias di camelCase legacy elencati in parentesi.

Ogni titolo di sezione corrisponde all'azione code mostrata nella tabella dei log del console, quindi puoi collegarti direttamente a essa.

Rifiuti del backend relativi a fatturazione, limitazione o stati non di errore.

Cosa significa

Capgo ha rilevato traffico che sembra provenire da Google o da infrastrutture cloud. Aggiornamenti meno di quattro ore fa vengono ignorati per evitare che il traffico dei bot venga considerato come dispositivi fatturabili.

Cosa fare

Ignora questo per gli utenti reali. Riprova da reti normali e dispositivi reali, o aspetta e controlla di nuovo piĂš tardi.

Cosa significa

La tua organizzazione ha raggiunto il limite del piano o dei dispositivi. Il dispositivo non riceverĂ  aggiornamenti fino a quando non sarai salito di livello o il prossimo ciclo di fatturazione resettĂ  l'uso.

Cosa fare

Aggiorna il tuo piano nel dashboard o attendi il prossimo ciclo di fatturazione.

Cosa significa

Il dispositivo già dispone della versione piÚ recente disponibile per il suo canale. Questo è uno stato normale, non un errore.

Cosa significa

Il dispositivo ha inviato troppi richieste di aggiornamento o di canale in un breve lasso di tempo.

Cosa fare

Smetti di chiamare le API di aggiornamento all'interno dei loop di rendering. Chiamale setChannel / getChannel solamente dalle azioni degli utenti, e impostane defaultChannel in capacitor.config.

Formato della versione

Formato della versione

Rifiuti del backend causati da metadati di versione nativa non validi.

Cosa significa

La versione dell'app nativa in configurazione è mancante o non è un semver valido (x.y.z).

Cosa fare

Imposta plugins.CapacitorUpdater.version a semver valido, verificalo nel SemVer testerpoi ricostruisci e reinstalla l'app nativa.

Rifiuti di backend quando la politica del canale blocca una piattaforma, un tipo di build o una classe di dispositivo.

Cosa significa

Il dispositivo esegue iOS, ma gli aggiornamenti di iOS sono disabilitati per questo canale.

Cosa fare

Abilitare iOS nel canale se si trattava di un errore accidentale, o inviare gli elaborati iOS a un canale dedicato quando si tratta di blocco intenzionale.

Cosa significa

Il dispositivo esegue Android, ma gli aggiornamenti di Android sono disabilitati per questo canale.

Cosa fare

Abilitare Android nel canale se si trattava di un errore accidentale, o inviare gli elaborati Android a un canale dedicato quando si tratta di blocco intenzionale.

Cosa significa

Il dispositivo esegue Electron, ma gli aggiornamenti di Electron sono disabilitati per questo canale.

Cosa fare

Abilita Electron nel canale se si trattava di un errore accidentale, o invia gli elaborati di Electron a un canale dedicato quando il blocco è intenzionale.

Cosa significa

Il dispositivo è un build di sviluppo, ma i build di sviluppo sono bloccati per questo canale.

Cosa fare

Consenti i build di sviluppo in un canale di test, o mantieni questo canale rilascio-solo e sposta i dispositivi di sviluppo altrove.

Cosa significa

Un build di produzione chiamato /updatesMa le aggiornamenti di produzione sono bloccati per questo canale.

Cosa fare

Consenti gli aggiornamenti di produzione nel canale se si trattava di un errore, o invia gli aggiornamenti di produzione al canale corretto.

Cosa significa

Un dispositivo reale è stato bloccato perchÊ questo canale blocca i dispositivi reali.

Cosa fare

Consenti gli aggiornamenti di dispositivi reali se si trattava di un errore, o mantieni la restrizione e invia i dispositivi reali a un altro canale.

Cosa significa

Il dispositivo è un emulatore, ma gli aggiornamenti per gli emulatori sono disabilitati per questo canale.

Cosa fare

Abilita gli aggiornamenti dell'emulatore in un canale di test, o mantieni questo canale bloccato per l'emulatore e utilizza un altro canale per la validazione dell'emulatore.

Rifiuti del backend quando le regole semver o di metadati bloccano il bundle di destinazione.

Cosa significa

L'aggiornamento automatico è disabilitato dalla politica di compatibilità del canale. I metadati includono auto_update con una regola di corrispondenza come major, minor, patch, metadatao none.

Cosa fare

Cambia la politica di aggiornamento automatico del canale per consentire il tuo rilascio previsto.

Cosa significa

Il canale ha un bundle piĂš vecchio della linea di base del dispositivo e blocca l'invio di aggiornamenti sotto la versione nativa.

Cosa fare

Pubblica un bundle a o sopra la linea di base nativa, o disabilita la protezione sotto-nativa nel canale.

Cosa significa

Il canale richiede min_update_version, ma la versione nativa del dispositivo è sotto quel limite.

Cosa fare

Imposta min_update_version sulla bundle di destinazione o rilascio da una versione nativa piĂš recente.

Cosa significa

Il canale blocca i salto di versione maggiore, ad esempio 1.x.x a 2.x.x.

Cosa fare

Allinea la strategia del canale con il tuo piano di rilascio maggiore, o consenti i salti di versione maggiore per questo tracciato. Vedi Problemi di Aggiornamento Comuni.

Cosa significa

Il canale blocca i salti di versione minore rispetto alla base di sistema nativa del dispositivo (version_build), ad esempio 1.2.3 a 1.3.0.

Cosa fare

Allinea la strategia del canale con il tuo piano di rilascio minore, o consentire salti minori per questo tracciato.

Cosa significa

I blocchi del canale bloccano le modifiche di livello patch mentre mantenendo lo stesso MAJOR.MINOR.PATCH prefisso; solo le modifiche di suffisso sono consentite.

Cosa fare

Allinea il ritmo di rilascio con la politica del canale, o consentire salti di patch per questo tracciato.

Rifiuti di backend causati da configurazioni di canale mancanti o incompatibili.

Cosa significa

The dispositivo ha provato ad associarsi con un canale privato che non consente l'assegnazione automatica dei dispositivi (allow_device_self_set è falso) e il canale non è pubblico.

Cosa fare

Abilita allow_device_self_set nel canale o sposta il dispositivo su un canale pubblico o consentito.

Cosa significa

Il canale utilizza disable_auto_update: "version_number" ma il pacchetto min_update_version è nullo, quindi Capgo non può decidere quali dispositivi dovrebbero aggiornarsi.

Cosa fare

Inserisci la configurazione mancante per quella regola o sposta a un modo di aggiornamento automatico piĂš semplice.

Cosa significa

Non è configurata alcuna canale predefinito e il dispositivo non ha alcuna sovrascrittura del canale.

Cosa fare

Imposta un canale predefinito nel pannello di controllo o configura defaultChannel nel build.

Rifiuti del backend quando Capgo non può servire o decrittografare il bundle.

Cosa significa

Capgo non è riuscito a generare un URL di download firmato valido e non era disponibile alcuna sovrascrittura del manifesto.

Cosa fare

Ricarica il bundle, rigenera i manifesti e verifica le impostazioni di R2 o del bundle pubblico.

Cosa significa

Il bundle assegnato al canale non contiene contenuti scaricabili: nessun external_urlnessun r2_pathnessun

non una versione integrata, e nessuna voci di manifesto.

Cosa fare

Sezione intitolata “keyMismatch”

Cosa significa (traduzione letterale: "La chiave di crittografia del dispositivo non corrisponde alla chiave utilizzata per crittografare il bundle. I metadati possono includere") device_key_id, bundle_key_idCos'è da fare version.

Comparare gli ID delle chiavi dispositivo e bundle nel console. Pubblica con la stessa chiave e versioni plugin corrispondenti __CAPGO_KEEP_0__.

Compare device and bundle key IDs in the console. Publish with the same key and matching CLI/plugin versions.

Sottosezione intitolata “Configurazione dell'applicazione e client legacy”

Rifiuti del backend causati dalla configurazione dell'applicazione o versioni di aggiornamento non supportate.

Sottosezione intitolata “customIdBlocked”

customIdBlocked

Cos'è

L'applicazione ha inviato un ID dispositivo personalizzato, ma questa applicazione non accetta gli ID personalizzati, quindi l'ID viene ignorato.

Cos'è da fare

Interrompi l'invio degli ID personalizzati, o abilita gli ID personalizzati solo quando il tuo workflow lo richiede.

Sottosezione intitolata “blocked_by_server_url”

blocked_by_server_url

Che fare

Cosa significa

server.url è impostato in Capacitor config, quindi il WebView carica una URL remota al posto dei file bundle locali. Capgo gli aggiornamenti in tempo reale richiedono file locali e server.url è sconsigliato in produzione.

Cosa fare

Eliminare o cancellare server.url per le costruzioni di produzione e mantenere i payload degli aggiornamenti locali. Questo code può apparire come una rifiuto del backend o come un valore di stato del dispositivo.

Cosa significa

Il plugin di aggiornamento è v4, che il backend non accetta piÚ.

Cosa fare

Aggiornare il plugin e CLI a v5+ (preferibilmente v8) con Capacitor v5+, ricostruisci e ripubblica i metadati del bundle.

Eventi sul dispositivo per il flusso di aggiornamento normale, l'attivazione e il rollback.

Cosa significa

Azione di test interna utilizzata per verificare il pipeline di statistiche.

Cosa significa

Capgo ha inviato informazioni di download per una nuova versione al dispositivo.

Cosa significa

Un pacchetto è stato attivato sul dispositivo.

Cos'è

Un bundle non è stato attivato sul dispositivo.

Cosa fare

Controlla i log nativi con npx @capgo/cli@latest app debug e verifica l'integritĂ  del bundle, le path e notifyAppReady il flusso.

Cos'è

Il dispositivo è stato resettato sul bundle predefinito.

Cos'è

Un bundle è stato eliminato sul dispositivo.

Eventi sul dispositivo per il progresso di download, la validazione dell'archivio e gli errori di installazione.

Cosa significa

La sequenza di download è iniziata al 0% di progresso.

Cosa significa

È stato scaricato un nuovo pacchetto — progresso indicato al 10%.

Cosa significa

È stato scaricato un nuovo pacchetto — progresso indicato al 20%.

Cosa significa

È stato scaricato un nuovo pacchetto — progresso indicato al 30%.

Cosa significa

È stato scaricato un nuovo pacchetto — progresso indicato al 40%.

Cosa significa

È stato scaricato un nuovo pacchetto — progresso indicato al 50%.

Cosa significa

È stato scaricato un nuovo pacchetto — progresso indicato al 60%.

Cos'è

È stato scaricato un nuovo pacchetto — indicato il progresso al 70%.

Cos'è

È stato scaricato un nuovo pacchetto — indicato il progresso al 80%.

Cos'è

È stato scaricato un nuovo pacchetto — indicato il progresso al 90%.

Cos'è

È stato completato con successo il download del pacchetto.

Cos'è

Il dispositivo ha iniziato a scaricare il manifesto di aggiornamento.

Cos'è

Il dispositivo ha completato la scarica del manifesto di aggiornamento.

Cos'è

Il dispositivo ha iniziato a scaricare l'archivio del pacchetto.

Cos'è

Il dispositivo ha completato la scarica dell'archivio del pacchetto.

Cosa significa

Un'ingresso del manifesto non è stato scaricato con successo. version_name utilizza version:fileName per identificare l'asset.

Cosa fare

Risolve il problema dell'asset mancante o bloccato, rigenera il manifesto e riacquista il bundle.

Cosa significa

Un file di manifesto non è stato validato con successo.

Cosa fare

Riacquista il bundle con una versione attuale CLI e verifica i checksum dei manifesti.

Cosa significa

Il file di manifesto non è stato decompresso con successo da Brotli.

Cosa fare

Verifica le impostazioni di compressione e ricarica gli asset interessati.

Cosa significa

Il bundle non è stato scaricato con successo.

Cosa fare

Controlla la connettivitĂ  di rete, la scadenza delle URL firmate, la raggiungibilitĂ  del CDN e lo spazio di archiviazione del dispositivo.

Cosa significa

Il pacchetto è stato installato, ma l'app non ha mai chiamato notifyAppReady, quindi Capgo è stato annullato.

Cosa fare

Chiamare notifyAppReady() dopo che l'app ha completato l'avvio. Testo di log nativo notifyAppReady was not called, roll back current bundle si mappa a questo code.

Cosa significa

Il pacchetto scaricato non ha superato la verifica del checksum. Cause comuni: malfunzionamento CRC32 vs SHA256 da un vecchio CLI caricato, o malfunzionamento della chiave di crittografia su plugin piĂš vecchi che manifestano la falla di crittografia come falla del checksum.

Cosa fare

Ricaricare con un CLI/plugin (SHA256) attuale. Se si utilizza la crittografia, verificare che la chiave pubblica dell'app corrisponda alla chiave di caricamento, o aggiornare il plugin a 8.3.0+ per errori espliciti. keyMismatch What to do

Cos'è

Il bundle scaricato non è stato decrittografato correttamente.

Cosa fare

Verificare le chiavi di crittografia e ricaricare il bundle con la coppia di chiavi corrispondente.

Cos'è

Il zip contiene percorsi Windows non validi.

Cosa fare

Ricompilare il bundle con percorsi Unix o sanificare i percorsi dell'archivio prima dell'upload.

Cos'è

I percorsi dei file all'interno del file zip non sono canonici.

Cosa fare

Risolvere la generazione del percorso dell'archivio prima dell'upload.

Cosa significa

L'archivio contiene percorsi di directory non validi.

Cosa fare

Risolvere la struttura dell'archivio prima dell'upload.

Cosa significa

Il dispositivo non è riuscito ad estrarre il bundle scaricato.

Cosa fare

Verifica l'integritĂ  dell'archivio e le compressioni supportate.

Cosa significa

La scarica è fallita perchÊ il dispositivo è esaurito di memoria.

Cosa fare

Riduci la dimensione del pacchetto o riprova su un dispositivo con piĂš memoria libera.

Diagnosi di crash, memoria e WebView sul dispositivo. Ispeziona sempre il metadata JSON nel dashboard.

Cosa significa

L'app è entrata in background.

Cosa significa

L'app è entrata in primo piano.

Cosa significa

Crash del layer JavaScript o Capacitor. I metadati possono includere messaggio, stack, origine e contesto del bundle attivo.

Cosa fare

Ispeziona i metadati e i log nativi. Abbinare il reporting degli errori JavaScript e nativi (ad esempio Sentry) per individuare la via di esecuzione code che fallisce.

Cosa significa

Crash della piattaforma nativa. I metadati possono includere piattaforma, motivo, stack e dettagli del processo.

Cosa fare

Usa Xcode o Logcat per i log degli crash e correla con il bundle attivo dai metadati.

Cosa significa

Evento di non risposta dell'applicazione Android.

Cosa fare

Ispeziona le tracce di non risposta in Logcat e riduci il lavoro di blocco del thread principale dopo gli aggiornamenti.

Cosa significa

L'System ha ucciso l'app dopo la pressione di memoria.

Cosa fare

Riduci l'uso di memoria dopo l'attivazione degli aggiornamenti e ispeziona i metadati per i segnali di memoria disponibile.

Cosa significa

L'OS ha ucciso l'applicazione per l'uso eccessivo delle risorse.

Cosa fare

Ispeziona i metadati per il tipo di risorsa o il motivo del motivo del sistema operativo.

Cosa significa

Aggiornatore o avvio fallito prima che il runtime normale fosse pronto.

Cosa fare

Ispeziona i metadati per il passaggio fallito e il messaggio di errore.

Cosa significa

Avviso di memoria di iOS.

Cosa fare

Verifica il contesto di memoria nei metadati e riduci l'uso massimo dopo gli aggiornamenti.

Cosa significa

Errore JavaScript non catturato nel WebView. I metadati possono includere messaggio, URL della fonte, riga, colonna e stack.

Cosa fare

Installa il reporting degli errori in JS e layer nativi per catturare la riga esatta che fallisce in produzione.

Cosa significa

Rifiuto di promessa non gestito nel WebView.

Cosa fare

Cattura le fallite asincrone con il reporting degli errori in JS e nativi.

Cos'è

È fallito il caricamento di una risorsa WebView.

Cosa fare

Usa l'URL dei metadati e i dettagli dello stato per risolvere gli asset danneggiati o le regole di rete.

Cos'è

La politica di sicurezza del contenuto ha bloccato una risorsa.

Cosa fare

Regola la CSP utilizzando la direttiva dei metadati e i dettagli dell'URI bloccato.

Cos'è

La sessione precedente di WebView non si è chiusa in modo pulito, il che può indicare loop di crash dopo un aggiornamento.

Cosa fare

Correlare con gli eventi di crash e di errore di WebView prima e dopo il riavvio.

Cosa significa

Il processo di rendering di WebView Android è uscito.

Cosa fare

Esaminare i segnali di crash del renderer nei metadati e nei log nativi.

Cosa significa

Il processo di contenuto di WebView iOS è stato terminato.

Cosa fare

Esegui l'analisi del bundle attivo e dell'URL della pagina dal metadati.

Gli eventi del contesto del dispositivo che aiutano a correlare il comportamento di aggiornamento con le modifiche OS, versione nativa o canale.

Cosa significa

La versione OS del dispositivo è cambiata tra le verifiche.

Cosa significa

La versione dell'applicazione nativa è cambiata, aiutando a separare le modifiche del bundle nativo da quelle web.

Cosa significa

Il dispositivo ha interrogato il suo canale attuale.

Cosa significa

Un canale è stato impostato con successo per il dispositivo.

Cosa significa

L'app è stata disinstallata o sono stati eliminati Capgo dati.

  • SUCCESS: installazione del pacchetto completata
  • ERROR: installazione o download fallito
  • PENDING: Download completato, rilascio in sospeso
  • DELETED: Pacchetto eliminato, ancora presente per le statistiche
  • DOWNLOADING: Stanno scaricando attualmente un pacchetto

Esiste un comando di debug per gli utenti di cloud Capgo.

Fermata della console
npx @capgo/cli@latest app debug

Questo ti permetterĂ  di verificare tutti gli eventi che accadono nell'app e trovare una soluzione se gli aggiornamenti non avvengono.

per trovare i tuoi log su Xcode

per trovare i tuoi log su Android Studio

  • Failed to download from si mappa a download_fail
  • notifyAppReady was not called, roll back current bundle si mappa a update_fail

Per debuggare su iOS, hai bisogno di scaricare l'app sul tuo computer, puoi farlo in questo modo:

Xcode ha una funzionalitĂ  integrata per esaminare il sistema di file degli app installate dai sviluppatori su un dispositivo iOS. Menu finestra Xcode mostrante l'opzione dispositivi e simulatori

Per ottenere questo:

  • Collega il tuo dispositivo al tuo Mac e seleziona finestra > dispositivi nel menu bar Xcode.
  • Seleziona il tuo dispositivo nella parte sinistra del pannello sotto la sezione dispositivi.
  • Ciò mostrerĂ  una lista delle app installate dai sviluppatori per quel dispositivo.
  • Seleziona l'app che desideri esaminare e poi seleziona l'icona dei 3 punti vicino alla parte inferiore dello schermo.
  • Ecco dove puoi visualizzare il sistema di file corrente selezionando scaricare una snapshot di esso.

Pannello dispositivi Xcode mostrante l'opzione download del contenitore dell'app

Selezionando il contenitore di download… verrà scaricato e esportato un snapshot del sistema di file come un file .xcappdata che potrai esplorare.

File xcappdata scaricato con contesto menu Mostra contenuto del pacchetto

Clicca con il tasto destro su questo file e seleziona Mostra contenuto del pacchetto per aprire la cartella.

Apre la cartella App Data, e dovresti ora vedere alcuni cartelle come Documenti, Libreria, tmp, ecc.

Struttura della cartella del contenitore dell'app iOS che mostra le cartelle Documenti e Libreria

Poi troverai una versione in 2 cartelle:

library/NoCloud/ionic_built_snapshots è necessario dopo il riavvio dell'app

e documents/versions per il caricamento caldo

Per debuggare su Android, è necessario accedere al dispositivo da Android Studio:

  • Cliccare su Visualizza > Finestre degli strumenti > Esplora file del dispositivo o cliccare sul pulsante Esplora file del dispositivo nella barra degli strumenti per aprire l'Esplora file del dispositivo.
  • Selezionare un dispositivo dalla lista a discesa.
  • Aprire la cartella data/data/__CAPGO_KEEP_0__/ dove __CAPGO_KEEP_0__ è il tuo ID dell'applicazione.

Esplora file del dispositivo di Android Studio che mostra il percorso del directory dell'applicazione

Poi trovare la versions cartella per vedere tutte le versioni

Se stai utilizzando Debugging per pianificare il lavoro di plugin nativi, connettilo con Utilizzare @capgo/capacitor-aggiornatore per la capacitĂ  nativa in Utilizzare @capgo/capacitor-aggiornatore Capgo Directory dei plugin per il flusso di lavoro del prodotto in Capgo Directory dei plugin Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, Aggiunta o Aggiornamento di Plugin per i dettagli di implementazione in Aggiunta o Aggiornamento di Plugin, e Alternative per Plugin Enterprise di Ionic per il flusso di lavoro del prodotto in Alternative per Plugin Enterprise di Ionic.