Saltare al contenuto

Debugging

GitHub

Se ricevi un rifiuto 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 in snake_case code, 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 in camelCase di vecchia data elencati tra parentesi.

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

Rifiuti di backend relativi a fatturazione, limitazione del traffico 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 vecchi sono ignorati per evitare che il traffico generato da bot venga considerato come dispositivi fatturabili.

Cosa fare

Ignorare questo su utenti reali. Riprovare da reti normali e dispositivi reali, o attendere e controllare nuovamente in un secondo momento.

Cosa significa

La tua app è configurata per bloccare le richieste provenienti da indirizzi IP dei datacenter di Google e Apple. La protezione si applica alle verifiche degli aggiornamenti, alle statistiche e alle richieste di canale-self, quindi i probe ospitati in cloud e i provider runner possono ricevere questa risposta anche quando la configurazione dell'app è altrimenti valida.

Cosa fare

Riprovare da un dispositivo fisico su una rete di utente normale. Se il traffico originato dal provider è intenzionale, disabilitare temporaneamente Blocca le richieste dell'infrastruttura del provider In app, nella scheda "Informazioni", abilitalo nuovamente dopo il test. Le nuove app abilitano questo impostazione per impostazione predefinita; le app esistenti conservano la loro impostazione precedente disabilitata fino a quando non viene modificata. Sottosezione intitolata "needPlanUpgrade" Cosa significa

Cosa fare

Aggiorna il tuo piano nel pannello di controllo o aspetta il prossimo ciclo di fatturazione.

Sottosezione intitolata "noNew"

Cosa significa

Sottosezione intitolata "rateLimited"

In app, nella scheda "Informazioni"

Cosa significa

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

Cosa fare

Smettere di chiamare le API di aggiornamento all'interno dei loop di rendering. Chiamare setChannel / getChannel solo dalle azioni degli utenti, e impostare defaultChannel in capacitor.config.

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

Cosa significa

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

Cosa fare

Impostare plugins.CapacitorUpdater.version a una versione semver valida, verificare con il Tester SemVer, quindi ricostruisci e reinstalla l'app nativa.

Sezione intitolata “disabilitaPiattaformaIos”

disablePlatformIos

Cosa significa

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

Cosa fare

What to do

Abilita iOS nel canale se si trattava di un errore accidentale, o invia i build iOS a un canale dedicato quando il blocco è intenzionale.

Cosa significa

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

Cosa fare

Abilita Android nel canale se si trattava di un errore accidentale, o invia i build Android a un canale dedicato quando il 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 i build Electron a un canale dedicato quando il blocco è intenzionale.

Cosa significa

Il dispositivo è una versione 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 con rilascio solo e sposta i dispositivi di sviluppo altrove.

Cosa significa

Un rilascio di produzione chiamato /updates, ma gli 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 i build di produzione al canale corretto.

Cosa significa

A un telefono o tablet reale è stato bloccato a causa di questo canale che blocca dispositivi reali.

Che fare

Abilitare gli aggiornamenti per dispositivi reali se si è trattato di un errore accidentale, o mantenere la restrizione e indirizzare i dispositivi reali a un altro canale.

Cosa significa

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

Che fare

Abilitare gli aggiornamenti per emulatori in un canale di test, o mantenere questo canale bloccato per emulatori e utilizzare un altro canale per la validazione degli emulatori.

Regole di compatibilitĂ  degli aggiornamenti automatici

Sezione intitolata “Auto-update compatibility rules”

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, metadata, o none.

Cosa fare

Cambia la politica di aggiornamento automatico del canale per consentire il tuo intento di distribuzione

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 è inferiore a quel livello.

Cosa fare

Impostare min_update_version sul bundle o rilascio target 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

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

Cosa significa

Il canale blocca i salto di versione minore rispetto alla linea di base nativa del dispositivo (version_build), ad esempio 1.2.3 Cosa fare 1.3.0.

Allinea la strategia del canale con il tuo piano di rilascio minore, o consenti i salti di versione minore per questo tracciato.

Sottosezione intitolata “disabilitaAggiornamentoAutomaticoAPatch”

disableAutoUpdateToPatch

Cosa significa

Il canale blocca le modifiche di livello di patch mentre mantiene lo stesso

prefisso; sono consentite solo le modifiche di suffisso. MAJOR.MINOR.PATCH Cosa fare

Cosa fare

Allinea il calendario di rilascio con la politica del canale, o consenti gli scatti di patch per questo tracciato.

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

Cosa significa

Il dispositivo ha cercato di associarsi automaticamente a un canale privato che non consente l'assegnazione automatica del dispositivo (allow_device_self_set è falso) e il canale non è pubblico.

Cosa fare

Abilita allow_device_self_set il 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

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

Cosa significa

Non è configurato alcun canale di default e il dispositivo non ha alcun canale di override.

Cosa fare

Imposta un canale di default nel pannello di controllo o configura defaultChannel in fase di costruzione.

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

Cosa significa

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

Cosa fare

Ricaricare il pacchetto, rigenerare i manifesti e verificare le impostazioni di R2 o pacchetto pubblico.

Cosa significa

Il pacchetto assegnato al canale non contiene contenuti scaricabili: nessun external_url, no r2_path, non una versione integrata, e nessuna voci di manifesto.

Cosa fare

Ri-costruisci e riacquista la versione, poi conferma che il pacchetto contiene contenuti di file reali.

Cosa significa

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

Cosa fare

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

Configurazione dell'app e clienti legacy

Configurazione dell'app e clienti legacy

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

Cosa significa

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

Cosa fare

Smettere di inviare ID personalizzati, o abilitare gli ID personalizzati solo quando il tuo workflow li richiede.

Cosa significa

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

Cosa fare

Rimuovere o cancellare server.url per costruire build in 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

L'aggiornamento del plugin è v4, che il backend non accetta piÚ.

Cosa fare

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

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

Cosa significa

Azione di test interna utilizzata per verificare il pipeline dei dati.

Cosa significa

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

Cosa significa

Un pacchetto è stato attivato sul dispositivo.

Cosa significa

Un pacchetto non è riuscito ad attivarsi sul dispositivo.

Cosa fare

Controlla i log nativi con npx @capgo/cli@latest app debug e verifica l'integritĂ , le percorrenze e i notifyAppReady Flusso.

Cosa significa

Il dispositivo è stato resettato sul bundle predefinito.

Cosa significa

È stato cancellato un bundle sul dispositivo.

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

Cosa significa

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

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

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

Cosa significa

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

Cosa significa

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

Cosa significa

A è stato scaricato un nuovo pacchetto — progresso indicato al 70%.

Cosa significa

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

Cosa significa

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

Cosa significa

È stato completato con successo lo scarico del pacchetto.

Cosa significa

Il dispositivo ha iniziato a scaricare l'elenco delle aggiornamenti.

Cosa significa

Il dispositivo ha completato il download del manifesto 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

Un'entry del manifesto non è riuscita a scaricare. version_name utilizza version:fileName per identificare l'asset.

Cosa fare

Risolvere il problema di un asset mancante o bloccato, rigenerare il manifesto e riacquisire il bundle.

Cosa significa

Un file manifesto non ha superato la verifica del checksum.

Cosa fare

Riacquisire il bundle con una versione attuale CLI e verificare i checksum dei manifesti.

Cosa significa

Un file manifesto non è stato decompresso con successo con Brotli.

Cosa fare

Verificare le impostazioni di compressione e riacquisire gli asset interessati.

Cosa significa

La bundle non è stata scaricata.

Cosa fare

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

Cosa significa

La bundle è stata installata ma l'app non l'ha mai chiamata notifyAppReady, quindi Capgo è stato annullato.

Cosa fare

Chiamare notifyAppReady() context notifyAppReady was not called, roll back current bundle si mappa a questo code.

Cosa significa

La bundle scaricata non ha superato la verifica del checksum. Cause comuni: malfunzionamento del CRC32 rispetto allo SHA256 da un vecchio CLI caricato, o malfunzionamento della chiave di crittografia su plugin piĂš vecchi che manifestano il fallimento della decrittazione come errore di checksum.

Cosa fare

Ricaricare con una CLI/plugin (SHA256) aggiornata. 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 espliciti keyMismatch Sottosezione intitolata “errore di decrittazione”

decrypt_fail

Cosa significa

La bundle scaricata non è stata decrittata.

Cosa fare

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

errore di checksum

Cosa significa

Il file zip contiene percorsi Windows non validi.

Cosa fare

Riavvia la creazione del bundle utilizzando percorsi Unix o sanificare i percorsi degli archivi prima di caricarli.

Cosa significa

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

Cosa fare

Correggi la generazione dei percorsi degli archivi prima di caricarli.

Cosa significa

Il file zip contiene percorsi di directory non validi.

Cosa fare

Ripristina la struttura dell'archivio prima dell'upload.

Cosa significa

Il dispositivo non è riuscito a scompattare il bundle scaricato.

Cosa fare

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

Cosa significa

L'errore di download è avvenuto perchÊ il dispositivo non aveva abbastanza memoria.

Cosa fare

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

Diagnostica 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 foreground.

Cosa significa

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

Cosa fare

Esamina i metadati e i log nativi. Abbinare il reporting degli errori JS e nativi (ad esempio Sentry) per individuare la strada del code che fallisce.

Cosa significa

Crash del sistema operativo nativo. I metadati possono includere piattaforma, motivo, stack e dettagli del processo.

Cosa fare

Utilizza i log di crash di Xcode o Logcat e correla con il bundle attivo dai metadati.

Cosa significa

Evento di non risposta dell'applicazione Android.

Cosa fare

Analizza le tracce di ANR in Logcat e riduci il lavoro di blocco del thread principale dopo gli aggiornamenti.

Cosa significa

L'OS ha ucciso l'app dopo pressione di memoria.

Cosa fare

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

Cosa significa

L'OS ha ucciso l'app per l'uso eccessivo di risorse.

Cosa fare

Analizza i metadati per il tipo di risorsa o la ragione del motivo del sistema operativo.

Cosa significa

L'aggiornamento o l'avvio è fallito prima che il runtime normale fosse pronto.

Cosa fare

Ispeziona i metadati per il passaggio che fallisce e il messaggio di errore.

Cosa significa

Avviso di memoria iOS.

Cosa fare

Ispeziona 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 nei livelli JS e 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 JS e nativi.

Cosa significa

Un risorsa del WebView non è riuscita a caricare.

Cosa fare

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

Cosa significa

La politica di sicurezza del contenuto ha bloccato una risorsa.

Cosa fare

Regola la CSP utilizzando la direttiva di metadati e i dettagli della URI bloccata.

Cosa significa

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

Cosa fare

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

Cosa significa

Il processo di rendering di WebView Android è stato interrotto.

Cosa fare

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

Cosa significa

Il processo di contenuto di WebView iOS è stato interrotto.

Cosa fare

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

Eventi del contesto dispositivo che aiutano a correlare il comportamento di aggiornamento con le modifiche al sistema operativo, alla versione nativa o al canale.

Cosa significa

La versione del sistema operativo del dispositivo è cambiata tra le verifiche.

Cosa significa

La versione dell'applicazione nativa è cambiata, aiutando a distinguere le modifiche ai bundle nativi da quelle web.

Cosa significa

Il dispositivo ha interrogato il suo canale attuale.

Cosa significa

È stato impostato con successo un canale per il dispositivo.

Cosa significa

The app was uninstalled or Capgo data was cleared.

  • SUCCESS: installazione pacchetto completata
  • ERROR: installazione o download fallito
  • PENDING: Download completato, rilascio in attesa
  • DELETED: Pacchetto cancellato, ancora presente per statistiche
  • DOWNLOADING: Attualmente in corso il download di un pacchetto

C'è un comando di debug per gli utenti di Capgo cloud.

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

Questo ti permetterĂ  di controllare tutti gli eventi che avvengono 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, è necessario scaricare l'app sul proprio computer, ciò si può fare in questo modo:

Xcode ha una funzione integrata per esaminare il sistema di file degli app installate dai sviluppatori su un dispositivo iOS. Menu di Xcode con l'opzione Dispositivi e Simulatori

To raggiungere questo:

  • Collega il tuo dispositivo al tuo Mac e seleziona Menu > Dispositivi nel menu bar di Xcode.
  • Seleziona il tuo dispositivo nella sezione Dispositivi nella panella sinistra.
  • Questo mostrerĂ  una lista degli app sviluppatori installati su quel dispositivo.
  • Seleziona l'app che desideri esaminare e seleziona quindi l'icona dei puntini tre punti vicino alla parte inferiore dello schermo.
  • Ecco dove puoi visualizzare il sistema di file corrente selezionando il download di una snapshot di esso.

Pannello dispositivi di Xcode che mostra l'opzione di download del contenitore dell'app

Selezionando Download Container… si scaricherà e si esporterà una snapshot del sistema di file come un file .xcappdata che puoi esplorare.

File xcappdata scaricato con contesto menu Mostra contenuto del pacchetto

Fai clic destro su questo file e seleziona Mostra contenuto del pacchetto per aprire la cartella.

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

Struttura della cartella del contenitore dell'app iOS che mostra i cartelli Documenti e Libreria

Poi troverai una versione in 2 cartelle:

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

e documents/versions per il caricamento caldo

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

  • Clicca su Visualizza > Finestre degli strumenti > Esplora file del dispositivo o clicca sul pulsante Esplora file del dispositivo nella barra degli strumenti per aprire l'Esplora file del dispositivo.
  • Seleziona un dispositivo dalla lista a discesa.
  • Apri la cartella data/data/NOME_APP/ dove Nome dell'applicazione è il tuo ID dell'applicazione.

Esplora file del dispositivo Android Studio mostrando il percorso del file dell'applicazione

Poi trova il versions cartella per vedere tutte le versioni

If sei stai utilizzando Debugging per pianificare il lavoro di plugin nativi, connettilo con Utilizzando @capgo/capacitor-aggiornatore per la capacitĂ  nativa in Utilizzando @capgo/capacitor-aggiornatore, Capgo Directory dei plugin per il flusso di lavoro del prodotto in Capgo Directory dei plugin, Capacitor Plugin da Capgo per la dettaglio di implementazione in Capacitor Plugin da Capgo, Aggiungere o Aggiornare i Plugin per la dettaglio di implementazione in Aggiungere o Aggiornare i Plugin, e Alternative per Plugin Enterprise Ionic per il flusso di lavoro del prodotto nelle alternative del Plugin di Enterprise Ionic.