Saltare al contenuto

Debugging

GitHub

Se ottieni una rifiutazione del cloud code e hai bisogno di passaggi di rimediazione concreta, vedi Problemi di aggiornamento comuni.

Capgo i log possono includere metadati per l'evento. Nel dashboard, utilizza il filtro di azione per filtrare per l'azione a capo di spazio code elencata di seguito, e clicca la cella dei metadati per copiare il payload JSON completo. I metadati sono specialmente utili per gli eventi di crash e WebView perché possono includere contesto come 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 tra parentesi.

codeDescrizione
__CAPGO_KEEP_0__ (__CAPGO_KEEP_1__)L'utente si trova in un centro dati Google e l'aggiornamento è inferiore a 4 ore. Ciò è fatto per evitare che i dispositivi dei bot Google vengano conteggiati come dispositivi nel tuo account.
__CAPGO_KEEP_0__ (__CAPGO_KEEP_1__, precedentemente __CAPGO_KEEP_0__)Indica che hai raggiunto il limite del tuo piano e il dispositivo non riceverà aggiornamenti fino a quando non sarai salito di livello o fino al prossimo mese.
__CAPGO_KEEP_0__ (__CAPGO_KEEP_1__)Il dispositivo ha la versione più recente disponibile.
erro di semverLa versione nativa non segue il formato di versione semantico previsto.
piattaforma nativa disabilitata iOS (disablePlatformIos)Il dispositivo è sulla piattaforma iOS, ma quella è disabilitata nei impostazioni del canale.
piattaforma nativa disabilitata Android (disablePlatformAndroid)Il dispositivo è sulla piattaforma Android, ma quella è disabilitata nei impostazioni del canale.
aggiornamento automatico disabilitato (disableAutoUpdate)L'aggiornamento automatico è disabilitato dalla politica di compatibilità. I metadati includono auto_update con una regola di corrispondenza come major, minor, patch, metadataThe dispositivo ha la versione ( none.
), e il canale ha un aggiornamento ( () sotto la versione del dispositivo per inviare, ma è disabilitato nei impostazioni del canale.)disable_auto_update_under_native1.2.3disableAutoUpdateUnderNative1.2.2Il dispositivo ha la versione (
), e il canale ha un aggiornamento ( () sotto la versione del dispositivo per inviare, ma è disabilitato nei canali.)disable_dev_build
disableDevBuild (Il dispositivo ha un build di sviluppo, ma è disabilitato nei canali.)disable_emulator
__CAPGO_KEEP_0__ (__CAPGO_KEEP_0__)Non è stato possibile generare un URL firmato valido per il download del bundle. Ciò si verifica quando la generazione dell'URL del bundle fallisce o restituisce un URL non valido e non è disponibile alcun manifesto come fallback.
__CAPGO_KEEP_0__ (__CAPGO_KEEP_0__)Il dispositivo ha tentato di associarsi automaticamente a un canale privato, ma le impostazioni del canale non consentono l'associazione automatica dei dispositivi (allow_device_self_set __CAPGO_KEEP_0__
Il canale è configurato per disabilitare l'aggiornamento automatico tramite numero di versione ( (), ma il campo del bundle è nullo, rendendo impossibile determinare quali dispositivi dovrebbero ricevere l'aggiornamento.)Il canale è configurato per disabilitare l'aggiornamento automatico tramite numero di versione (disable_auto_update: 'version_number'Il campo del bundle è nullo, rendendo impossibile determinare quali dispositivi dovrebbero ricevere l'aggiornamento. min_update_version Il canale è configurato per disabilitare l'aggiornamento automatico tramite numero di versione (
disabilita_aggiornamento_auto_a_metadata (disabilitaAggiornamentoAutoMetadata)L'aggiornamento automatico è disabilitato tramite numero di versione metadata. Il canale richiede che la versione del dispositivo sia almeno min_update_version, ma la versione corrente del dispositivo è inferiore a questo limite.
disabilita_aggiornamento_auto_a_maggiore (disabilitaAggiornamentoAutoAMaggiore)Impostazione del canale disable_auto_update: 'major' impedisce gli aggiornamenti che aumenterebbero il numero di versione maggiore, come bloccare 1.x.x l'aggiornamento a 2.x.x.
disabilita_aggiornamento_auto_a_minore (disabilitaAggiornamentoAutoAMinore)Impostazione del canale disable_auto_update: 'minor' blocca i blocchi target che hanno un numero maggiore o minore della versione nativa del dispositivo (version_buildtali come 1.2.3 -> 1.3.0.
disabilita l'aggiornamento automatico per patch (disabilitaAutoUpdateToPatch)Impostazione del canale disable_auto_update: 'patch' blocca qualsiasi cambiamento del numero maggiore, minore o di patch da version_build; sono consentiti solo cambiamenti di suffisso mentre MAJOR.MINOR.PATCH rimane identico, tali come 1.0.0-beta.1 -> 1.0.0-beta.2.
bundle mancante (bundleMancante)Il bundle assegnato a questo canale non ha contenuto scaricabile. Ciò significa che il bundle non ha external_urlnessun r2_pathnon è una versione integrata e non sono disponibili manifest per il download.
no_channel (NoChannelOrOverride)Non è configurato alcun canale predefinito per questa app e il dispositivo non ha alcun canale specifico impostato per override. Deve essere presente almeno uno per consentire l'aggiornamento.
rate_limited (rateLimited)Il dispositivo è stato limitato per rate a causa di richieste eccessive.
key_id_mismatch (keyMismatch)La chiave pubblica di crittografia del dispositivo non corrisponde alla chiave pubblica utilizzata per crittografare il bundle. I metadati includono device_key_id, bundle_key_ide version per aiutare l'identificazione della non corrispondenza.
disabilita_build_produzione (__CAPGO_KEEP_0__)Una build di produzione chiamata /updates è stata bloccata dalla politica del canale.
disabilita_dispositivo (__CAPGO_KEEP_0__)Un telefono/tablet normale è stato bloccato perché questo canale blocca dispositivi reali.
disabilita_piattaforma_electron (__CAPGO_KEEP_0__)Electron è bloccato in questo canale.
ID_dispositivo_customBloccatoÈ stato inviato un ID dispositivo personalizzato, ma questa app non accetta gli ID personalizzati, quindi viene ignorato.
rifiuto del backendv4 l'aggiornamento dell'aggiornatore non è più supportato. Aggiorna a v5 almeno (con Capacitor v5) e preferisci v8 perché le vecchie versioni di Capacitor non possono più essere aggiornate attraverso le pipeline dello store dell'applicazione.

Risposte rapide per problemi di politica/configurazione

Sezione intitolata “Risposte rapide per problemi di politica/configurazione”
CodePerché succede questoCosa fare dopo
invalidIpCapgo ha rilevato traffico che sembra essere di bot (IP di Google/infrastruttura cloud).Ignora per gli utenti reali; riprova da dispositivi reali e reti normali, o controlla dopo un po' di tempo.
needPlanUpgradeL'organizzazione ha raggiunto il limite del piano/dispositivo.Aggiorna il piano nel dashboard o attendi il prossimo ciclo di fatturazione.
semver_errorLa versione dell'app nativa nella configurazione è mancante o non è un semver valido (x.y.z).Imposta plugins.CapacitorUpdater.version a un semver valido, quindi verifica in Testatore di SemVer e ricostruisci l'app.
disablePlatformIosiOS è disabilitato nella politica del canale.Se si trattava di un errore, abilita iOS in quel canale e ripubblica la routing. Se hai intenzionalmente bloccato iOS in questo tracciato, lascialo spento e sposta le costruzioni iOS in un canale separato.
disablePlatformAndroidAndroid è disabilitato nella politica del canale.Se si trattava di un errore, abilita Android in quel canale e ripubblica la routing. Se hai intenzionalmente bloccato Android in questo tracciato, lascialo spento e sposta le costruzioni Android in un canale separato.
disableAutoUpdateIl canale di aggiornamento automatico blocca questo stile di aggiornamento.Modifica la politica di aggiornamento automatico del canale (maggiore/minore/patch/metadata/null) per consentire il tuo rilascio previsto.
disableAutoUpdateUnderNativeIl canale è impostato per bloccare gli aggiornamenti più vecchi rispetto alla linea di base del dispositivo.Pubblica una versione a o sopra la linea di base nativa, o disabilita quella protezione sotto-nativa.
disableAutoUpdateMetadataIl canale richiede min_update_version metadata e l'app è più vecchia.Imposta min_update_version per il bundle o rilascio di destinazione da una versione nativa più recente.
disableAutoUpdateToMajorIl canale blocca i salti di versione maggiore.Mantieni le versioni maggiori nella stessa strategia del canale, o consenti i salti maggiori per questo tracciato.
disableAutoUpdateToMinorIl canale blocca i salti di versione minore.Mantieni le versioni minori nella stessa strategia del canale, o consenti i salti minori per questo tracciato.
disableAutoUpdateToPatchIl canale blocca i salti di livello patch per questo flusso.Sincronizza il tuo calendario di rilascio, o apri salti di patch in politica del canale per questo tracciato.
disableEmulatorAggiornamenti dell'emulatore non sono consentiti per questo canale.Se si trattava di un errore, attiva gli aggiornamenti dell'emulatore in un canale di test dove si validano gli emulatori. Se intenzionale, mantieni questo canale bloccato per gli emulatori e utilizza un altro canale per gli aggiornamenti degli emulatori.
disableDevBuildAggiornamenti di sviluppo sono bloccati per questo canale.Se si trattava di un errore, consenti gli aggiornamenti di sviluppo o sposta questo dispositivo in un canale abilitato per lo sviluppo. Se intenzionale, mantieni questo canale bloccato alle sole versioni di rilascio.
disableProdBuildUn dispositivo costruito in modalità di produzione chiamato /updates, mentre il tuo canale lo bloccava.Se si trattava di un errore, consenti gli aggiornamenti in produzione in quel canale e ripubblica. Se intenzionale, mantieni la restrizione e invia i build di produzione al canale/build appropriato.
cannotGetBundleCapgo non è stato in grado di costruire una URL di download valida per il bundle selezionato.Ricarica il bundle o regenera i manifesti e controlla le impostazioni del bundle R2/public.
cannotUpdateViaPrivateChannelL'app ha cercato di auto-assegnarsi a un canale privato che non consente l'auto-assegnazione.Abilita allow_device_self_set On il canale o passa a un canale pubblico/consentito.
channelMisconfiguredLa regola di aggiornamento automatico del canale manca di dati richiesti (version_number senza min_update_version).Compila la configurazione mancante per quella regola o passa a un modo di aggiornamento automatico più semplice.
missingBundleLa raccolta non ha un payload scaricabile (mancante external_url/r2_path e nessun manifesto).Riavra o ricarica la versione e verifica che la raccolta abbia contenuto di file reale.
NoChannelOrOverrideNon è stato trovato alcun canale per questo dispositivo (nessun cloud predefinito + nessuna configurazione di fallback + nessuna sovrascrittura).Imposta un canale predefinito nel pannello di controllo o mantieni un test defaultChannel in quella versione.
rateLimitedTroppi chiamate di aggiornamento/canale in un breve periodo di tempo (spesso setChannel/getChannel).Smetti di chiamare in render. Chiamalo solo su azione dell'utente. Utilizza defaultChannel in capacitor.config.
keyMismatchLa chiave di crittografia dell'app e del pacchetto differiscono (device_key_id vs bundle_key_id).Nella console, confronta le chiavi di dispositivo e di pacchetto. Se differiscono, pubblica con la stessa chiave e versione del plugin CLI corrispondente; l'encoding della chiave può differire tra le versioni.
disableDeviceUn dispositivo reale (telefono/tablet) è stato bloccato perché questo canale è impostato per bloccare i dispositivi reali.Se è stato fatto per errore, attiva le aggiornamenti dei dispositivi reali in quel canale. Se è stato fatto intenzionalmente, lascialo bloccato e invia i dispositivi reali a un altro canale.
disablePlatformElectronL'Electron è bloccato in questo canale.Se è stato fatto per errore, abilita l'Electron in questo canale e ripubblica la routing. Se è stato fatto intenzionalmente, lascialo bloccato e invia gli utenti di Electron a un canale dedicato.
customIdBlockedÈ stato inviato un ID di dispositivo personalizzato, ma questa app non accetta gli ID personalizzati.Disabilita l'invio degli ID personalizzati o abilita gli ID personalizzati solo se il tuo workflow lo richiede.
blocked_by_server_urlL'app è server.url configurata, quindi Capacitor serve l'URL remoto al posto dei file locali.Elimina/cancella server.url per le costruzioni di produzione e conserva i payload di aggiornamento locali.
backend_refusalL'aggiornatore è v4, che il backend non accetta più.Aggiorna plugin/CLI a v5+ (preferisci v8), con Capacitor v5+, quindi ricostruisci e ripubblica i metadati del pacchetto.
codeDescrizione
pingAzione di test interna utilizzata per verificare che il sistema di statistica funzioni correttamente.
getLe informazioni per il download della nuova versione sono state inviate al dispositivo.
deleteÈ stato eliminato un bundle sul dispositivo.
setÈ stato impostato un bundle sul dispositivo.
set_failIl bundle non è stato impostato correttamente.
resetIl dispositivo è stato resettato al builtin bundle.
download_0La sequenza di download è iniziata al 0% di avanzamento.
download_XXÈ stato scaricato un nuovo bundle - il progresso indicato da XX% (incrementi di 10%).
download_completeIl nuovo bundle è stato scaricato con successo.
download_manifest_startIl dispositivo ha iniziato a scaricare l'elenco delle aggiornamenti.
download_manifest_completeIl dispositivo ha completato la scarica dell'elenco delle aggiornamenti.
download_zip_startIl dispositivo ha iniziato a scaricare l'archivio del bundle.
download_zip_completeIl dispositivo ha completato lo scaricamento dell'archivio del bundle.
download_manifest_file_failUna voce del manifesto non è riuscita a scaricarsi; il payload dei dati mette version_name in forma version:fileName per individuare l'asset.
download_manifest_checksum_failIl file del manifesto ha fallito la verifica del checksum.
download_manifest_brotli_failIl file del manifesto non è riuscito a decomprimere con Brotli.
download_failIl nuovo bundle non è stato scaricato con successo.
Aggiornamento fallitoIl nuovo bundle è stato installato ma non è riuscito a chiamare notifyAppReady.
errore_di_calcolo_del_checksumIl nuovo bundle non è riuscito a validare il checksum. Ciò può accadere per diverse ragioni: 1) Mancanza di corrispondenza tra il tipo di checksum: La versione più recente di CLI e dei plugin (versione 5.10.0+, 6.25.0+ o 7+) utilizza checksums SHA256, mentre i plugin più vecchi utilizzavano CRC32. Se noti un fallimento del checksum, controlla se il checksum è CRC32 (un hash più breve) piuttosto che SHA256. Ciò indica spesso che il bundle è stato caricato con una versione vecchia di CLI. Verifica la versione del tuo bundle nel dashboard di Capgo - i bundle creati dalla versione 5.10.0/6.25.0/7 utilizzano SHA256. Se vedi checksum CRC32, assicurati di avere l'ultima versione del plugin installata localmente (il CLI controlla la versione locale del plugin per determinare quale tipo di checksum caricare), quindi aggiorna il tuo CLI e ricarica il bundle. 2) Mancanza di corrispondenza della chiave di cifratura (su versioni del plugin sotto 8.3.0 o 5/6/7.38.0): Se si utilizzano versioni più vecchie del plugin, se la chiave pubblica del dispositivo non corrisponde a quella utilizzata per cifrare il bundle, la decrittazione fallirà in modo silenzioso e causerebbe un errore di checksum. Se si utilizza l'encryption e si vedono checksum_failverifica che la chiave pubblica nel tuo app capacitor.config.json matches il chiave privata utilizzata per caricare il bundle. Aggiornando alla versione del plugin 8.3.0+ (o 5/6/7.38.0+) otterrai una corretta keyMismatch l'errore è stato ricevuto dal server, il che rende più facile diagnosticare il problema.
windows_path_failIl zip contiene file con percorsi Windows illegali
canonical_path_failIl percorso dei file non è canonico
directory_path_failCi è stato un errore nel percorso dei file zip
unzip_failEstrarre il file zip è fallito
low_mem_failIl download è fallito a causa di scarsa memoria sul dispositivo
app_moved_to_backgroundL'applicazione è stata portata in stato di background
app_moved_to_foregroundL'applicazione è stata spostata in primo piano.
app_crashL'applicazione ha segnalato un crash rilevato dal layer JavaScript o Capacitor. I metadati possono includere il messaggio, lo stack, la fonte e il contesto del bundle attivo.
app_crash_nativeIl layer nativo ha segnalato un crash della piattaforma. I metadati possono includere la piattaforma, la ragione, lo stack e i dettagli del processo quando disponibili.
app_anrAndroid ha segnalato un evento di non risposta dell'applicazione. I metadati possono includere la ragione dell'ANR, il thread o la sintesi del tracciato quando disponibili.
app_killed_low_memoryIl processo dell'applicazione è stato ucciso dopo pressione di memoria bassa. I metadati possono includere la memoria disponibile e i segnali della piattaforma quando disponibili.
app_killed_excessive_resource_usageL'SO ha ucciso l'applicazione per l'uso eccessivo di risorse. I metadati possono includere il tipo di risorsa o la ragione della piattaforma quando disponibili.
app_initialization_failureLa flussi di aggiornamento o l'avvio dell'app è fallito prima che il runtime normale fosse pronto. I metadati possono includere il passo che ha fallito e il messaggio di errore.
app_memory_warningiOS ha segnalato un avviso di memoria. I metadati possono includere il bundle attivo e il contesto di memoria quando disponibili.
webview_javascript_errorIl WebView ha segnalato un errore JavaScript non catturato. I metadati possono includere il messaggio, l'URL di origine, la riga, la colonna e lo stack. Installare Sentry in entrambi i luoghi: JS SDK nell'app web e nativo SDK in iOS/Android, quindi confrontare le sessioni per risolvere la riga esatta che causa l'errore.
webview_unhandled_rejectionIl WebView ha segnalato una rifiuto di promessa non gestito. I metadati possono includere la ragione di rifiuto, l'URL di origine e lo stack. Installare Sentry in entrambi i luoghi (JS + nativo) per rendere visibili le fallite asincrone con il contesto utente/dispositivo/sessione.
webview_resource_errorUn risorsa del WebView non è riuscita a caricare. I metadati possono includere l'URL, lo stato code, il tipo di risorsa e il messaggio di errore. Installare Sentry (JS + nativo) per catturare l'URL che fallisce e il contesto ambientale, quindi riparare il caricamento di asset danneggiati più velocemente.
webview_security_policy_violationIl WebView ha segnalato una violazione della politica di sicurezza del contenuto. I metadati possono includere l'URI bloccato, la direttiva e l'URL del documento. Installare Sentry (JS + nativo) per vedere quando e dove avvengono le violazioni CSP in sessioni reali e aggiornare le regole in modo sicuro.
__CAPGO_KEEP_0__L'app ha rilevato una sessione WebView precedente che non si è chiusa in modo pulito. Ciò può aiutare a identificare i loop di crash dopo un aggiornamento. Aggiungi Sentry in entrambi i lati JS e nativi per collegare gli eventi di riavvio ai errori circostanti.
__CAPGO_KEEP_0__L'Android ha segnalato che il processo di rendering WebView è uscito. I metadati possono includere se il renderer è crashato e la priorità del renderer. Installa Sentry (JS + nativo) per legare le uscite del renderer ai recenti crash e ai registri del dispositivo.
__CAPGO_KEEP_0__L'iOS ha segnalato che il processo di contenuto WebView è terminato. I metadati possono includere il bundle attivo e l'URL della pagina quando disponibili. Installa Sentry sui livelli JS e nativi per ottenere informazioni di timing, URL e contesto della sessione per ogni fine del processo di contenuto.
Fallito il tentativo di decrittare il bundle scaricato.La versione del sistema operativo del dispositivo è cambiata tra le verifiche. Ciò viene utilizzato per correlare il comportamento dell'aggiornamento con i cambiamenti a livello di sistema operativo.
La versione dell'app nativa è cambiata (ad esempio da un rollout nativo), aiutando a separare i cambiamenti di comportamento della vista web e nativa.__CAPGO_KEEP_0__
__CAPGO_KEEP_0____CAPGO_KEEP_0__
ottieni_canale (ottieniCanale)È stato effettuato un controllo sul canale corrente per il dispositivo.
imposta_canale (impostaCanale)È stato impostato con successo un canale per il dispositivo.
disinstallaL'applicazione è stata disinstallata o sono stati eliminati i dati Capgo.
url_di_server_bloccatoServer.url è presente nella tua capacitor configurazione, ciò fa in modo che Capacitor serva l'URL remoto e ignorare i file locali, mentre il nostro aggiornatore è fatto per funzionare con i file locali. Server.url è considerato dai Capacitor creatori come una cattiva pratica in produzione e porterà a molti problemi e plugin non funzionanti correttamente.
  • SUCCESS: install bundle fatto
  • ERROR: installazione o download fallito
  • PENDING: Download fatto, rilascio in sospeso
  • DELETED: Bundle cancellato, ancora presente per le statistiche
  • DOWNLOADING: Stanno scaricando attualmente un bundle

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

Fermata di sistema
npx @capgo/cli@latest app debug

Permetterà di verificare tutti gli eventi che si verificano nell'app e trovare una soluzione se gli aggiornamenti non avvengono.

per trovare i log su Xcode

per trovare i log su Android Studio

  • Failed to download from => lo stesso download_fail
  • notifyAppReady was not called, roll back current bundle è lo stesso di come 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 di Xcode mostrante l'opzione dispositivi e simulatori

Per raggiungere questo:

  • Collega il tuo dispositivo al tuo Mac e seleziona finestra > dispositivi nel menu bar di Xcode.
  • Seleziona il tuo dispositivo nella panella sinistra nella sezione Dispositivi.
  • Questo mostrerà una lista degli app installate dai developer per quel dispositivo.
  • Seleziona l'app che desideri esaminare e poi seleziona l'icona dei puntini 3 vicino alla parte inferiore dello schermo.
  • Ecco dove puoi visualizzare il sistema di file corrente selezionando il download di una sua snapshot.

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

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

File xcappdata scaricato con contesto menu Mostra Contenuto Pacchetto

Clicca con il tasto destro su questo file e seleziona Mostra Contenuto 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 E' necessario dopo il riavvio dell'app

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 della finestra per aprire l'Esplora file del dispositivo.
  • Seleziona un dispositivo dalla lista a discesa.
  • Apri la cartella data/data/NOME_APP/ dove NOME_APP è il tuo ID app.

Esplora file del dispositivo di Android Studio che mostra il percorso della directory dei dati dell'app

Quindi Trova il versions cartella per vedere tutte le versioni

Se stai utilizzando Debugging per pianificare il lavoro del plugin nativo, connettilo con Usando @capgo/capacitor-aggiornatore per la capacità nativa in Usando @capgo/capacitor-aggiornatore, Directory dei plugin di Capgo per il flusso di lavoro del prodotto in Directory dei plugin di Capgo, I plugin di Capacitor sviluppati da Capgo per il dettaglio di implementazione in I plugin di Capacitor sviluppati da Capgo, Aggiungere o Aggiornare i plugin per il dettaglio di implementazione in Aggiungere o Aggiornare i plugin, e Alternative per plugin Enterprise Ionic per il flusso di lavoro del prodotto in Alternative per plugin Enterprise Ionic.