Vai al contenuto

Debugging

GitHub

Se ricevi un rifiuto cloud da code e hai bisogno di guide dettagliate per la risoluzione, consulta Problemi comuni di aggiornamento.

I log di Capgo possono includere i metadati dell'evento. Nella dashboard, filtra per l'azione in snake_case code e clicca sulla cella dei metadati per copiare l'intero payload JSON. I metadati sono utilissimi per i crash e gli eventi WebView, poichĂŠ possono includere il messaggio di errore, l'URL sorgente, riga e colonna, lo stato del processo, la pressione della memoria o la causa specifica della piattaforma. I log piĂš vecchi potrebbero ancora mostrare alias legacy in camelCase tra parentesi.

Ogni titolo di sezione corrisponde all'azione code mostrata nella tabella dei log della console, cosĂŹ puoi collegarti direttamente.

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

Cosa significa

Capgo ha rilevato traffico che sembra provenire da Google o da infrastrutture cloud. Gli aggiornamenti effettuati da meno di quattro ore vengono ignorati, in modo che il traffico bot non venga conteggiato tra i dispositivi fatturabili.

Cosa fare

Ignora questo errore per gli utenti reali. Riprova da reti normali e dispositivi reali, oppure attendi e ricontrolla piĂš tardi.

Cosa significa

La tua app è configurata per bloccare le richieste provenienti dai range di IP noti dei datacenter Google e Apple. La protezione si applica ai controlli degli update, alle statistiche e alle richieste channel-self; pertanto, probe cloud-hosted e runner del provider potrebbero ricevere questa risposta anche se la configurazione dell'app è valida.

Cosa fare

Riprova da un dispositivo fisico su una rete utente standard. Se il traffico proveniente dal provider è intenzionale, disabilita temporaneamente Blocca le richieste dell'infrastruttura del provider nella scheda Informazioni dell'app, quindi riabilitala dopo il test. Le nuove app hanno questa impostazione attiva di default; le app esistenti mantengono l'impostazione precedente fino a modifica.

Cosa significa

La tua organizzazione ha raggiunto il limite del piano o dei dispositivi. Il dispositivo non riceverĂ  aggiornamenti finchĂŠ non effettuerai l'upgrade o non inizierĂ  il prossimo ciclo di fatturazione.

Cosa fare

Fai l'upgrade del piano nella dashboard o attendi il prossimo ciclo di fatturazione.

Cosa significa

Il dispositivo ha già l'ultimo bundle disponibile per il suo canale. È uno stato normale, non un errore.

Cosa significa

Il dispositivo ha inviato troppe richieste di update o di canale in un breve lasso di tempo.

Cosa fare

Evita di chiamare le API di update all'interno dei render loop. Chiama setChannel / getChannel solo in risposta ad azioni dell'utente e imposta defaultChannel le capacitor.config.

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

Cosa significa

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

Cosa fare

Imposta plugins.CapacitorUpdater.version per un semver valido, verifica in Tester SemVer, quindi ricostruisci e reinstalla l'app nativa.

Rifiuti dal backend quando la policy del canale blocca una piattaforma, un tipo di build o una classe di dispositivi.

Cosa significa

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

Cosa fare

Abilita iOS nel canale se si tratta di un errore, oppure instrada le build iOS verso un canale dedicato se il blocco è intenzionale.

Cosa significa

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

Cosa fare

Abilita Android nel canale se è stato un errore, oppure instrada le build Android verso un canale dedicato se il blocco è intenzionale.

Cosa significa

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

Cosa fare

Abilita Electron nel canale se è stato un errore, oppure instrada le build Electron verso un canale dedicato se il blocco è intenzionale.

Cosa significa

Il dispositivo è una dev build, ma le dev build sono bloccate per questo canale.

Cosa fare

Permetti le dev build in un canale di test, oppure mantieni questo canale solo per il rilascio e sposta i dispositivi dev altrove.

Cosa significa

Build di produzione chiamata /updates, ma gli aggiornamenti di produzione sono bloccati per questo canale.

Cosa fare

Abilita gli aggiornamenti di produzione nel canale se è un errore, oppure instrada le build di produzione verso il canale corretto.

Cosa significa

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

Cosa fare

Abilita gli aggiornamenti su dispositivi reali se è un errore, oppure mantieni la restrizione e instrada i dispositivi reali su un altro canale.

Cosa significa

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

Cosa fare

Abilita gli aggiornamenti su emulatore in un canale di test, oppure mantieni questo canale bloccato per gli emulatori e usane un altro per la validazione.

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

Cosa significa

L'auto-update è disabilitato dalla policy di compatibilità del channel. I metadati includono auto_update con una regola corrispondente come major, minor, patch, metadata, o none.

Cosa fare

Modifica la policy di auto-update del canale per consentire il rollout previsto.

Cosa significa

Il canale contiene un bundle piĂš vecchio della baseline del dispositivo e blocca l'invio di update sotto la versione native.

Cosa fare

Pubblica un bundle uguale o superiore alla baseline native, oppure disabilita la protezione under-native nel canale.

Cosa significa

Il canale richiede min_update_version, ma la versione native del dispositivo è inferiore a tale soglia.

Cosa fare

Imposta min_update_version sul bundle o sulla release di una versione native piĂš recente.

Cosa significa

Il canale blocca i salti di versione major, ad esempio 1.x.x a 2.x.x.

Cosa fare

Allinea la strategia dei canali al tuo piano di rollout major, o permetti i salti major per questo track. Vedi Problemi comuni di aggiornamento.

Cosa significa

Il canale blocca i salti di versione minor rispetto alla baseline native del dispositivo (version_build), per esempio 1.2.3 a 1.3.0.

Cosa fare

Allinea la strategia del canale al tuo piano di rollout, o permetti salti di versione minor per questo track.

Cosa significa

Il canale blocca i cambiamenti a livello di patch mantenendo lo stesso MAJOR.MINOR.PATCH prefisso; sono consentiti solo i cambiamenti del suffisso.

Cosa fare

Allinea la cadenza dei rilasci alla policy del canale, o permetti salti di patch per questo track.

Rifiuti dal backend causati da una configurazione del canale mancante o incompatibile.

Cosa significa

Il dispositivo ha tentato di associarsi a un canale privato che non permette l'auto-assegnazione (allow_device_self_set è false) e il canale non è pubblico.

Cosa fare

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

Cosa significa

Il canale utilizza disable_auto_update: "version_number" ma il bundle min_update_version è null, quindi Capgo non può decidere quali dispositivi devono aggiornarsi.

Cosa fare

Completa la configurazione mancante per quella regola o passa a una modalitĂ  di auto-update piĂš semplice.

Cosa significa

Nessun canale predefinito configurato e il dispositivo non ha un override del canale.

Cosa fare

Imposta un canale predefinito nella dashboard o configura defaultChannel nella build.

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

Cosa significa

Capgo non è riuscito a generare un URL di download firmato valido e non era disponibile un manifest di fallback.

Cosa fare

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

Cosa significa

Il bundle assegnato al canale non contiene contenuti scaricabili: nessun external_url, nessun r2_path, non una versione integrata, e nessuna voce nel manifest.

Cosa fare

Ricrea e carica nuovamente la versione, quindi conferma che il bundle contenga file reali.

Cosa significa

La chiave pubblica di crittografia del dispositivo non corrisponde a quella usata per il bundle. I metadati possono includere device_key_id, bundle_key_id, e version.

Cosa fare

Confronta gli ID delle chiavi di dispositivo e del bundle nella console. Pubblica con la stessa chiave e versioni CLI/plugin corrispondenti.

Rifiuti dal backend causati dalla configurazione dell'app o da versioni dell'updater non supportate.

Cosa significa

L'app ha inviato un ID dispositivo personalizzato, ma l'app non accetta ID custom, quindi l'ID viene ignorato.

Cosa fare

Smetti di inviare ID personalizzati, o attivali solo se il tuo workflow lo richiede.

Cosa significa

server.url è impostato nella configurazione di Capacitor, quindi la WebView carica un URL remoto invece dei file del bundle locale. Gli Capgo live updates richiedono file locali e server.url è sconsigliato in produzione.

Cosa fare

Rimuovi o svuota server.url per le build di produzione e mantenere i payload di code locali. Questo code può apparire come un rifiuto del backend o come uno stato del dispositivo.

Cosa significa

Il plugin updater è la v4, che il backend non accetta piÚ.

Cosa fare

Aggiorna il plugin e CLI alla v5+ (preferibilmente v8) con Capacitor v5+, ricostruisci e pubblica nuovamente i metadati del bundle.

Eventi lato device per il normale flusso di update, attivazione e rollback.

Cosa significa

Azione di test interna usata per verificare la pipeline delle stats.

Cosa significa

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

Cosa significa

Un bundle è stato attivato sul dispositivo.

Cosa significa

L'attivazione di un bundle sul dispositivo è fallita.

Cosa fare

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

Cosa significa

Il dispositivo è tornato al bundle predefinito.

Cosa significa

Un bundle è stato eliminato sul dispositivo.

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

Cosa significa

La sequenza di download è iniziata allo 0%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso al 10%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso al 20%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso al 30%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso al 40%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso al 50%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso al 60%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso al 70%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso all'80%.

Cosa significa

Un nuovo bundle è stato scaricato — progresso al 90%.

Cosa significa

Il download del bundle è terminato con successo.

Cosa significa

Il dispositivo ha iniziato a scaricare il manifest dell'aggiornamento.

Cosa significa

Il dispositivo ha terminato di scaricare il manifest dell'aggiornamento.

Cosa significa

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

Cosa significa

Il dispositivo ha terminato il download dell'archivio del bundle.

Cosa significa

Non è stato possibile scaricare una voce del manifest. version_name usa version:fileName per identificare l'asset.

Cosa fare

Correggi l'asset mancante o bloccato, rigenera il manifest e fai di nuovo l'upload del bundle.

Cosa significa

La validazione del checksum del file manifest è fallita.

Cosa fare

Carica nuovamente il bundle con una versione CLI aggiornata e verifica i checksum del manifest.

Cosa significa

La decompressione Brotli di un file manifest è fallita.

Cosa fare

Verifica le impostazioni di compressione e ricarica gli asset interessati.

Cosa significa

Il download del bundle è fallito.

Cosa fare

Controlla la connettivitĂ  di rete, la scadenza dell'URL firmato, la raggiungibilitĂ  della CDN e lo spazio sul dispositivo.

Cosa significa

Il bundle è stato installato ma l'app non lo ha mai chiamato notifyAppReady, quindi Capgo è tornato alla versione precedente.

Cosa fare

Esegui notifyAppReady() dopo il bootstrapping dell'app. Testo del log Native notifyAppReady was not called, roll back current bundle corrisponde a questo code.

Cosa significa

Il bundle scaricato ha fallito la validazione del checksum. Cause comuni: mismatch CRC32 vs SHA256 da un vecchio upload CLI, o mismatch della chiave di cifratura su plugin datati che segnalano un errore di decifratura come errore di checksum.

Cosa fare

Ricarica con un CLI/plugin aggiornato (SHA256). Se usi la crittografia, verifica che la chiave pubblica dell'app corrisponda a quella di upload, o passa al plugin 8.3.0+ per errori keyMismatch espliciti.

Cosa significa

Il bundle scaricato non è stato possibile decriptarlo.

Cosa fare

Verifica le chiavi di crittografia e ricarica il bundle con la coppia di chiavi corrispondente.

Cosa significa

Lo zip contiene percorsi non validi per Windows.

Cosa fare

Ricrea il bundle con percorsi Unix o pulisci i percorsi dell'archivio prima dell'upload.

Cosa significa

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

Cosa fare

Fix archive path generation before upload.

Cosa significa

Lo zip contiene percorsi di directory non validi.

Cosa fare

Correggi la struttura dell'archivio prima dell'upload.

Cosa significa

Il dispositivo non è riuscito a decomprimere il bundle scaricato.

Cosa fare

Verifica l'integritĂ  dell'archivio e la compressione supportata.

Cosa significa

Il download è fallito perchÊ il dispositivo ha esaurito la memoria.

Cosa fare

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

Diagnostica di crash, memoria e WebView lato dispositivo. Controlla sempre il JSON dei metadati nella dashboard.

Cosa significa

L'app è passata in background.

Cosa significa

L'app è tornata in foreground.

Cosa significa

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

Cosa fare

Ispeziona i metadati e i log nativi. Combina il reporting degli errori JS e nativi (ad esempio Sentry) per individuare il percorso code che fallisce.

Cosa significa

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

Cosa fare

Usa i crash log di Xcode o Logcat e correlali al bundle attivo tramite i metadati.

Cosa significa

Evento Android Application Not Responding.

Cosa fare

Ispeziona i trace ANR in Logcat e riduci i blocchi sul main thread dopo gli update.

Cosa significa

L'OS ha terminato l'app a causa della pressione sulla memoria.

Cosa fare

Riduci l'uso della memoria dopo l'attivazione dell'update e controlla i metadati per i segnali di memoria disponibile.

Cosa significa

Il sistema operativo ha terminato l'app per uso eccessivo di risorse.

Cosa fare

Controlla i metadati per il tipo di risorsa o il motivo lato piattaforma.

Cosa significa

L'Updater o l'avvio sono falliti prima che il runtime normale fosse pronto.

Cosa fare

Controlla i metadati per il passaggio fallito e il messaggio d'errore.

Cosa significa

Avviso di memoria iOS.

Cosa fare

Analizza il contesto di memoria nei metadati e riduci il picco di utilizzo dopo gli update.

Cosa significa

Errore JavaScript non gestito nella WebView. I metadati possono includere messaggio, URL sorgente, riga, colonna e stack trace.

Cosa fare

Installa un sistema di error reporting nei layer JS e nativi per catturare l'esatta riga che fallisce in produzione.

Cosa significa

Reiezione di una promise non gestita nella WebView.

Cosa fare

Intercetta i fallimenti asincroni con il reporting degli errori JS e nativi.

Cosa significa

Il caricamento di una risorsa WebView è fallito.

Cosa fare

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

Cosa significa

La Content Security Policy ha bloccato una risorsa.

Cosa fare

Regola la CSP tramite la direttiva metadata e i dettagli dell'URI bloccato.

Cosa significa

La sessione WebView precedente non si è chiusa correttamente; potrebbe indicare crash loop dopo un aggiornamento.

Cosa fare

Correla l'evento con i crash e gli errori WebView prima e dopo il riavvio.

Cosa significa

Il processo renderer di Android WebView è uscito.

Cosa fare

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

Cosa significa

iOS WebView content process terminated.

Cosa fare

Ispeziona il bundle attivo e l'URL della pagina dai metadati.

Eventi di contesto lato dispositivo per correlare il comportamento degli update con OS, versione nativa o cambi di channel.

Cosa significa

Device OS version changed between checks.

Cosa significa

La versione dell'app store Native è cambiata, aiutando a distinguere tra modifiche al bundle native e web.

Cosa significa

Il dispositivo ha interrogato il suo canale attuale.

Cosa significa

Il canale è stato impostato correttamente per il dispositivo.

Cosa significa

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

  • SUCCESS: installazione bundle completata
  • ERROR: errore durante l'installazione o il download
  • PENDING: Download completato, in attesa del rilascio
  • DELETED: Bundle eliminato, ancora presente nelle statistiche
  • DOWNLOADING: Download di un bundle in corso

È disponibile un comando di debug per gli utenti Capgo cloud.

Finestra del terminale
npx @capgo/cli@latest app debug

Questo ti permetterĂ  di controllare tutti gli eventi nell'app e trovare una soluzione se gli update non vengono eseguiti.

per trovare i log su Xcode

per trovare i log su Android Studio

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

Per il debug su iOS, devi scaricare l'app sul tuo computer; puoi farlo in questo modo:

Xcode ha una funzione integrata per ispezionare il file system delle app installate dagli sviluppatori su un dispositivo iOS. Menu Window di Xcode con l'opzione Devices and Simulators

To achieve this:

  • Collega il dispositivo al Mac e seleziona Window > Devices nella barra dei menu di Xcode.
  • Seleziona il tuo dispositivo nel pannello di sinistra sotto la sezione Devices.
  • VerrĂ  visualizzato un elenco delle app installate dagli sviluppatori su quel dispositivo.
  • Seleziona l'app che vuoi ispezionare, poi seleziona l'icona con i tre puntini vicino al fondo della schermata.
  • Qui puoi visualizzare il file system corrente selezionando l'opzione per scaricare uno snapshot.

Pannello Xcode Devices con l'opzione di download del container dell'app

Selezionando Download Container… scaricherai ed esporterai uno snapshot del file system come file .xcappdata consultabile.

File xcappdata scaricato con menu contestuale Show Package Contents

Fai clic destro su questo file e seleziona Show Package Contents per aprire la cartella.

Apri la cartella dei dati dell'app: dovresti vedere diverse sottocartelle come Documents, Library, tmp, ecc.

Struttura della cartella del container dell'app iOS con le cartelle Documents e Library

Troverai quindi una versione in 2 cartelle:

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

e documents/versions per l'hot reload

Per il debug su Android, devi accedere al dispositivo tramite Android Studio:

  • Clicca su View > Tool Windows > Device File Explorer oppure sul pulsante Device File Explorer nella barra delle tool window per aprire il Device File Explorer.
  • Seleziona un dispositivo dal menu a discesa.
  • Apri il percorso data/data/APP_NAME/ dove APP_NAME è l'ID della tua app.

Android Studio Device File Explorer: visualizzazione della directory dei dati dell'app

Poi cerca la versions cartella per vedere tutte le versioni

Se stai usando Debugging per pianificare il lavoro sui plugin nativi, collegalo a Utilizzo di @capgo/capacitor-updater per la funzionalitĂ  nativa in Utilizzo di @capgo/capacitor-updater, Directory dei plugin Capgo per il workflow del prodotto nella Directory dei plugin Capgo, Plugin Capacitor di Capgo per i dettagli di implementazione in Capacitor Plugins by Capgo, Aggiungere o aggiornare i plugin per i dettagli di implementazione in Aggiungere o aggiornare i plugin, e Alternative ai plugin Ionic Enterprise per il workflow del prodotto in Alternative ai plugin di Ionic Enterprise.