Vai al contenuto

Debug

GitHub

Se ricevi un rifiuto cloud code e ti servono procedure di risoluzione piĂš dettagliate, 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 crash ed eventi WebView, poichĂŠ possono includere il messaggio di errore, l'URL sorgente, riga e colonna, lo stato del processo, la pressione di 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 alla sezione.

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 update con meno di quattro ore di vita vengono ignorati, cosĂŹ il traffico bot non viene conteggiato come 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 dai range IP noti dei datacenter Google e Apple. La protezione vale per i controlli degli aggiornamenti, le statistiche e le richieste channel-self, quindi i probe ospitati nel cloud e i runner del provider possono ricevere questa risposta anche se per il resto la configurazione dell'app è valida.

Cosa fare

Riprova da un dispositivo fisico su una rete utente normale. Se il traffico originato dal provider è intenzionale, disabilita temporaneamente Blocca le richieste all'infrastruttura del provider nella scheda dell'app Informazioni quindi riabilitala dopo il test. Le nuove app abilitano questa impostazione di default; le app esistenti mantengono la precedente impostazione disabilitata finchÊ non viene modificata.

Cosa significa

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

Cosa fare

Esegui l'upgrade del piano nel dashboard o attendi il prossimo ciclo di fatturazione.

Cosa significa

Il dispositivo ha giĂ  l'ultimo bundle disponibile per il suo canale. Si tratta di uno stato normale, non di un errore.

Cosa significa

Il dispositivo ha inviato troppe richieste di aggiornamento o di canale in un breve intervallo di tempo.

Cosa fare

Evita di chiamare le API di update nei loop di render. Chiama setChannel / getChannel solo da azioni utente e imposta defaultChannel nella capacitor.config.

Rifiuti del backend causati da metadati di 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 a semver valido, verificalo nel tester SemVer, quindi ricostruisci e reinstalla l'app nativa.

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

Cosa significa

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

Cosa fare

Abilita iOS nel canale se l'errore è stato accidentale, oppure instrada le build iOS a un canale dedicato se il blocco è intenzionale.

Cosa significa

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

Cosa fare

Abilita Android nel canale se è stato un errore, oppure indirizza i build Android a un canale dedicato se il blocco è intenzionale.

Cosa significa

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

Cosa fare

Abilita Electron nel canale se è stato un errore, oppure indirizza i build di Electron a un canale dedicato se il blocco è intenzionale.

Cosa significa

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

Cosa fare

Consenti build di dev in un canale di test, oppure mantieni questo canale solo per release e sposta i dispositivi di dev altrove.

Cosa significa

Una build di produzione ha chiamato /updates, ma gli aggiornamenti di produzione sono bloccati per questo canale.

Cosa fare

Consenti aggiornamenti di produzione nel canale se è stato un errore, oppure instrada i build di produzione al canale corretto.

Cosa significa

Un telefono o tablet reale è stato bloccato perchÊ questo canale blocca i dispositivi reali.

Cosa fare

Abilita gli aggiornamenti per dispositivi reali se è stato un errore, oppure mantieni la restrizione e instrada 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 sull'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 canale. I metadati includono auto_update con una regola corrispondente, ad esempio 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 ha un bundle piĂš vecchio della baseline del dispositivo e blocca l'invio di aggiornamenti sotto la versione nativa.

Cosa fare

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

Cosa significa

Il canale richiede min_update_version, ma la versione nativa del dispositivo è inferiore a questa soglia.

Cosa fare

Imposta min_update_version sul bundle di destinazione o su un release da una versione nativa piĂš recente.

Cosa significa

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

Cosa fare

Allinea la strategia del canale al piano di rilascio principale o consenti salti di versione maggiore per questa track. Vedi Problemi comuni di aggiornamento.

Cosa significa

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

Cosa fare

Allinea la strategia dei canali al tuo piano di rollout, oppure permetti salti di versione minori 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 del backend causati da una configurazione del canale mancante o incompatibile.

Cosa significa

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

Cosa fare

Abilita allow_device_self_set sul canale o passa il dispositivo a un canale pubblico o consentito.

Cosa significa

Il canale usa 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 riesce a servire o decriptare il bundle.

Cosa significa

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

Cosa fare

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

Cosa significa

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

Cosa fare

Ricostruisci e ricarica la versione, poi verifica che il bundle contenga file reali.

Cosa significa

La chiave pubblica di crittografia del dispositivo non corrisponde alla chiave utilizzata per crittografare il bundle. I metadati possono includere device_key_id, bundle_key_id, e version.

Cosa fare

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

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

Cosa significa

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

Cosa fare

Smetti di inviare ID personalizzati, oppure abilitali solo quando il tuo flusso di lavoro lo richiede.

Cosa significa

server.url è impostato nella configurazione di Capacitor, quindi la WebView carica un URL remoto invece dei file bundle locali. Gli aggiornamenti live di Capgo 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 degli update locali. Questo code può manifestarsi come un rifiuto del backend o come uno stat lato dispositivo.

Cosa significa

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

Cosa fare

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

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

Cosa significa

Azione di test interna utilizzata per verificare la pipeline delle statistiche.

Cosa significa

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

Cosa significa

Un bundle è stato attivato sul dispositivo.

Cosa significa

L'attivazione di un bundle sul dispositivo non è riuscita.

Cosa fare

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

Cosa significa

Il dispositivo è tornato al bundle integrato.

Cosa significa

Un bundle è stato eliminato sul dispositivo.

Eventi lato dispositivo per avanzamento download, validazione archivio e errori di installazione.

Cosa significa

La sequenza di download è iniziata con avanzamento allo 0%.

Cosa significa

Un nuovo bundle è stato scaricato — avanzamento indicato al 10%.

Cosa significa

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

Cosa significa

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

Cosa significa

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

Cosa significa

Un nuovo bundle è stato scaricato — avanzamento 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 è stato completato con successo.

Cosa significa

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

Cosa significa

Il dispositivo ha completato il download del manifest dell'aggiornamento.

Cosa significa

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

Cosa significa

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

Cosa significa

Il download di un'entry del manifest non è riuscito. version_name usa version:fileName per identificare l'asset.

Cosa fare

Correggi l'asset mancante o bloccato, rigenera il manifest e re-upload del bundle.

Cosa significa

Un file manifest non ha superato la convalida del checksum.

Cosa fare

Re-upload del bundle con una versione CLI attuale e verifica i checksum del manifest.

Cosa significa

Un file manifest ha fallito la decompressione Brotli.

Cosa fare

Verifica le impostazioni di compressione e ricarica gli asset interessati.

Cosa significa

Il download del bundle non è riuscito.

Cosa fare

Verifica la connettivitĂ  di rete, la scadenza dell'URL firmato, la raggiungibilitĂ  del CDN e lo storage del dispositivo.

Cosa significa

Il bundle è stato installato, ma l'app non ha mai chiamato notifyAppReady, quindi Capgo ha eseguito il rollback.

Cosa fare

Chiama notifyAppReady() dopo che l'app ha completato il bootstrap. Testo del log nativo notifyAppReady was not called, roll back current bundle corrisponde a questo code.

Cosa significa

Il bundle scaricato non ha superato la convalida del checksum. Cause comuni: discrepanza tra CRC32 e SHA256 da un upload CLI obsoleto, oppure discrepanza della chiave di crittografia su plugin piĂš vecchi che segnalano il fallimento di decrittazione come fallimento del checksum.

Cosa fare

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

Cosa significa

Il bundle scaricato non è riuscito a essere decrittato.

Cosa fare

Verifica le chiavi di crittografia e re-upload del bundle con la coppia di chiavi corrispondente.

Cosa significa

Lo zip contiene percorsi in stile Windows non validi.

Cosa fare

Ricostruisci il bundle con percorsi Unix o sanitizza 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

Download non riuscito perchĂŠ il dispositivo ha esaurito la memoria.

Cosa fare

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

Diagnostica lato dispositivo per crash, memoria e WebView. Ispeziona sempre il JSON dei metadati nel dashboard.

Cosa significa

L'app è passata in background.

Cosa significa

L'app è passata in foreground.

Cosa significa

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

Cosa fare

Ispeziona i metadati e i log nativi. Abbina 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 piattaforma, motivo, stack e dettagli del processo.

Cosa fare

Usa i log di crash di Xcode o Logcat e correlali con il bundle attivo dai metadati.

Cosa significa

Evento Android Application Not Responding.

Cosa fare

Ispeziona i tracciati ANR in Logcat e riduci il lavoro bloccante sul main thread dopo gli aggiornamenti.

Cosa significa

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

Cosa fare

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

Cosa significa

Il sistema operativo ha chiuso l'app per un uso eccessivo delle risorse.

Cosa fare

Ispeziona i metadati per il tipo di risorsa o la ragione della piattaforma.

Cosa significa

Updater o avvio non riuscito 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 iOS.

Cosa fare

Ispeziona il contesto di memoria nei metadati e riduci l'utilizzo massimo dopo gli aggiornamenti.

Cosa significa

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

Cosa fare

Installa la segnalazione degli errori nei livelli JS e nativo per catturare la riga esatta che fallisce in produzione.

Cosa significa

Promise rejection non gestita nella WebView.

Cosa fare

Cattura i fallimenti asincroni con la segnalazione degli errori JS e nativi.

Cosa significa

A WebView resource failed to load.

Cosa fare

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

Cosa significa

La Content Security Policy ha bloccato una risorsa.

Cosa fare

Regola la CSP con la direttiva metadati e i dettagli sull'URI bloccato.

Cosa significa

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

Cosa fare

Correla con gli eventi di crash e errori WebView prima e dopo il riavvio.

Cosa significa

Il processo renderer di Android WebView è terminato.

Cosa fare

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

Cosa significa

Il processo content di iOS WebView è terminato.

Cosa fare

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

Questi eventi di timing descrivono il ciclo di vita dell'app. Non garantiscono che tutte le funzionalitĂ  funzionino.

Cosa significa

L'app ha avviato una misurazione del lancio. Si tratta di un evento normale del ciclo di vita.

Cosa significa

L'app ha segnalato che era pronta. I metadati di timing aiutano a confrontare l'avvio tra le versioni. Si tratta di un evento normale del ciclo di vita.

Cosa significa

L'app non ha segnalato la prontezza entro la finestra di misurazione del lancio.

Cosa fare

Ispeziona gli errori di avvio e la timeline del dispositivo. Verifica che l'avvio raggiunga la chiamata di readiness e che la notifyAppReady() dopo che il bootstrap ha esito positivo. Confronta i tempi e gli errori con il bundle precedente prima di modificare le impostazioni di timeout.

Cosa significa

Il WebView ha segnalato il caricamento del contenuto DOM. Si tratta di un evento temporale normale, non di una prova che tutte le risorse o le funzionalitĂ  dell'app siano pronte.

Cosa significa

La WebView ha segnalato il caricamento della pagina. Si tratta di un evento temporale normale. Confronta i metadati di durata tra le versioni quando analizzi i caricamenti lenti.

Cosa significa

L'app ha segnalato un evento di navigazione. Si tratta di telemetria normale. I metadati di route e durata consentono confronti per schermata quando l'app li fornisce.

Cosa significa

Un bundle è stato programmato per l'attivazione al successivo avvio dell'app. La programmazione è normale e non significa che il bundle sia già stato attivato.

Cosa significa

Il canale selezionato è in pausa. Il server non invia aggiornamenti e il dispositivo mantiene il bundle corrente. Questo può essere una policy di rilascio intenzionale.

Cosa fare

Verifica perchÊ il canale è stato messo in pausa e se è sicuro riprendere. Non riprendere un rollout automaticamente solo per silenziare questo evento.

Cosa significa

Il dispositivo non è riuscito a finalizzare un bundle scaricato.

Cosa fare

Ispeziona i metadati e i log nativi per individuare errori di filesystem o di validazione. Verifica lo storage disponibile e l'archivio caricato prima di riprovare.

Cosa significa

Il percorso del file manifest non ha superato la validazione o non poteva essere utilizzato durante l'aggiornamento.

Cosa fare

Ispeziona il percorso che fallisce nei log nativi, correggi la struttura dei file del bundle e ricaricalo. Non aggirare la validazione dei percorsi.

Cosa significa

L'updater richiede metadati di checksum che mancano per questo download.

Cosa fare

Carica di nuovo il bundle con l'attuale CLI e verifica che i metadati di checksum siano presenti. Non disabilitare i controlli di integritĂ  per aggirare l'errore.

Cosa significa

Il dispositivo non ha spazio di archiviazione sufficiente per l'aggiornamento.

Cosa fare

Libera spazio di archiviazione sul dispositivo, riduci la dimensione del bundle dove possibile e riprova su un dispositivo di test interessato. Questo problema non viene risolto modificando la policy di versione di un channel.

Cosa significa

Il controllo dell'aggiornamento non è riuscito. Questo evento da solo non identifica se la causa sia la connettività, la disponibilità del server o un rifiuto specifico della risposta.

Cosa fare

Ispeziona i metadati della risposta e i log nativi circostanti. Verifica la connettivitĂ  e l'URL di aggiornamento configurato, quindi consulta eventuali errori backend specifici in Common Update Problems prima di modificare le impostazioni.

Eventi di contesto lato dispositivo per correlare il comportamento degli aggiornamenti con il sistema operativo, la versione nativa o i canali.

Cosa significa

Device OS version changed between checks.

Cosa significa

Versione dell'app nativa sullo store modificata, utile a distinguere le modifiche tra bundle nativo e web.

Cosa significa

Il dispositivo ha richiesto il suo canale attuale.

Cosa significa

Un 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: installazione o download non riuscito
  • PENDING: Download completato, rilascio in attesa
  • DELETED: Bundle eliminato, ancora presente per le statistiche
  • DOWNLOADING: Download di un bundle in corso

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

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

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

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 fare il debug su iOS, devi dumpare l'app sul computer. Ecco come:

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 Dispositivi e Simulatori

Per ottenere questo:

  • Collega il dispositivo al Mac e seleziona Window > Devices nella barra dei menu di Xcode.
  • Seleziona il dispositivo nel pannello sinistro, sotto la sezione Devices.
  • VerrĂ  visualizzato un elenco delle app installate dagli sviluppatori per quel dispositivo.
  • Seleziona l'app che vuoi ispezionare e poi tocca l'icona con i tre punti in basso a destra dello schermo.
  • Qui puoi visualizzare il file system corrente selezionando download a snapshot di esso.

Pannello Dispositivi di Xcode con l'opzione di download del contenitore dell'app

Selezionando Download Container… si scarica ed esporta uno snapshot del file system come file .xcappdata, che puoi esplorare.

File xcappdata scaricato con il menu contestuale Show Package Contents

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

Apri la cartella App Data: ora dovresti vedere alcune cartelle come Documents, Library, tmp, ecc.

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

Troverai una versione in 2 cartelle:

library/NoCloud/ionic_built_snapshots necessaria dopo il riavvio dell'app

e documents/versions per hot reload

Per fare debug su Android, devi accedere al dispositivo da Android Studio:

  • Fai clic su View > Tool Windows > Device File Explorer o sul pulsante Device File Explorer nella barra della tool window per aprire il Device File Explorer.
  • Seleziona un dispositivo dall'elenco a discesa.
  • Apri il percorso data/data/APP_NAME/ dove APP_NAME è l'ID della tua app.

Esplora file del dispositivo di Android Studio che mostra la directory dei dati dell'app

Poi trova la versions cartella per vedere tutte le versioni

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