Vai al contenuto

Debugging

Se ricevi un codice di rifiuto del cloud e sono necessarie misure correttive concrete, consulta Problemi comuni di aggiornamento.

Inviato dal backend| codice | Descrizione |

Section titled “Inviato dal backend| codice | Descrizione |”

| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Ip non valido | L’utente si trova in un data center Google e l’aggiornamento risale a meno di 4 ore fa. Questo viene fatto per impedire che i dispositivi dei bot Google vengano conteggiati come dispositivi nel tuo account. | | needPlanUpgrade (in precedenza needUpgrade) | Indica che hai raggiunto il limite del tuo piano e che il dispositivo non riceverà aggiornamenti fino all’aggiornamento o fino al mese successivo. | | noNovità | Il dispositivo ha l’ultima versione disponibile. | | disablePlatformIos | Il dispositivo si trova sulla piattaforma iOS, ma è disabilitata nelle impostazioni del canale. | | disablePlatformAndroid | Il dispositivo si trova sulla piattaforma Android, ma è disabilitata nelle impostazioni del canale. | | disabilitaaggiornamento automatico | “maggiore” | “minore” | “numero_versione” | “nessuno” | | disableAutoUpdateUnderNative | Il dispositivo ha una versione (1.2.3) e il canale ha un aggiornamento (1.2.2) nella versione del dispositivo da inviare, ma questo è disabilitato nelle impostazioni del canale. | | disableDevBuild | Il dispositivo ha una build di sviluppo, ma è disabilitata nelle impostazioni del canale. | | disableEmulator | Il dispositivo è un emulatore, ma è disabilitato nelle impostazioni del canale. | | impossibileGetBundle | Impossibile generare un URL firmato valido per il download del pacchetto. Ciò si verifica quando la generazione dell’URL del bundle non riesce o restituisce un URL non valido (che non inizia con http/https) e non è disponibile alcun manifest come fallback. | | impossibile aggiornare tramite canale privato | Il dispositivo ha tentato di autoassociarsi a un canale privato, ma le impostazioni del canale non consentono l’autoassociazione del dispositivo (allow_device_self_set è falso) e il canale non è pubblico. | | canale non configurato correttamente | Il canale è configurato per disabilitarele si aggiorna automaticamente in base al numero di versione (disable_auto_update: 'version_number'), ma il campo min_update_version del bundle è nullo, rendendo impossibile determinare quali dispositivi dovrebbero ricevere l’aggiornamento. | | disableAutoUpdateMetadata | L’aggiornamento automatico è disabilitato dai metadati del numero di versione. Il canale richiede che la versione del dispositivo sia almeno min_update_version, ma la versione corrente del dispositivo è inferiore a questa soglia. | | disableAutoUpdateToMajor | L’impostazione del canale disable_auto_update: 'major' impedisce gli aggiornamenti che aumenterebbero il numero della versione principale (ad esempio, bloccando 1.x.x dall’aggiornamento a 2.x.x). | | disableAutoUpdateToMinor | L’impostazione del canale disable_auto_update: 'minor' impedisce gli aggiornamenti che aumenterebbero il numero di versione secondaria (ad esempio, bloccando 1.2.x dall’aggiornamento a 1.3.x). | | disableAutoUpdateToPatch | L’impostazione del canale disable_auto_update: 'patch' impedisce gli aggiornamenti che aumenterebbero il numero di versione della patch o consente solo aggiornamenti a livello di patch all’interno della stessa versione major.minor (ad esempio, 1.2.3 può essere aggiornato a 1.2.4 ma non 1.2.2 o 1.3.0). | | Pacchetto mancante | Il bundle assegnato a questo canale non ha contenuti scaricabili. Ciò significa che il bundle non ha external_url, né r2_path, non è una versione integrata e non ci sono voci manifest disponibili per il download. | | NoChannelOrOverride | Per questa app non è configurato alcun canale predefinito e al dispositivo non è assegnato alcun canale specifico. Almeno uno deve essere presente affinché gli aggiornamenti funzionino. | | tariffa limitata | La tariffa del dispositivo è stata limitata a causa delle richieste eccessive. | | chiave non corrispondente | La chiave pubblica di crittografia del dispositivo non corrisponde alla chiave pubblica utilizzata per crittografare il pacchetto. Ciò accade quando: (1) la chiave pubblica capacitor.config.json della tua app è diversa da quella utilizzata durante il caricamento del pacchetto oppure (2) hai ruotato le chiavi di crittografia ma non hai ancora aggiornato tutti i dispositivi. La risposta include sia deviceKeyId che bundleKeyId (i primi 4 caratteri di ciascuna chiave pubblica) per aiutare a identificare la mancata corrispondenza. Per risolvere questo problema, assicurati che venga utilizzata la stessa coppia di chiavi sia per il caricamento dei bundle (CLI utilizza la chiave privata) sia nell’app (capacitor.config.json contiene la chiave pubblica). |### Inviato dal dispositivo| codice | Descrizione | | --------------------- | --------------------------------------------------------------------------------- | | ping | Azione di test interno utilizzata per verificare che il sistema delle statistiche funzioni correttamente. | | prendi | Le informazioni per scaricare la nuova versione sono state inviate al dispositivo. | | elimina | Un pacchetto è stato eliminato dal dispositivo. | | imposta | Sul dispositivo è stato impostato un pacchetto. | | set_fail | Impossibile impostare il pacchetto. | | reimposta | Il dispositivo è stato reimpostato sul pacchetto builtin. | | scarica_XX | È stato scaricato un nuovo pacchetto: avanzamento indicato dal XX% (incrementi del 10%). | | download_completo | Il download del nuovo bundle è terminato. | | download_manifest_start | Il dispositivo ha iniziato a scaricare il manifesto dell’aggiornamento. | | download_manifest_complete | Il dispositivo ha terminato il download del manifesto dell’aggiornamento. | | download_zip_start | Il dispositivo ha iniziato a scaricare l’archivio del bundle. | | download_zip_complete | Il dispositivo ha terminato il download dell’archivio del bundle. | | download_manifest_file_fail | Impossibile scaricare una voce manifest; il payload delle statistiche inserisce version_name nel modulo version:fileName per individuare la risorsa. | | download_manifest_checksum_fail | Il file manifest non ha superato la convalida del checksum. | | download_manifest_brotli_fail | Impossibile decomprimere il file manifest utilizzando Brotli. | | download_fail | Impossibile scaricare il nuovo bundle. | | update_fail | Il nuovo bundle è stato installato ma non è stato possibile chiamare notifyAppReady. | | checksum_fail | Il nuovo bundle non è riuscito a convalidare il checksum. Ciò può verificarsi per diversi motivi: 1) Mancata corrispondenza del tipo di checksum: l’ultima versione di CLI e dei plugin (versione 5.10.0+, 6.25.0+ o 7+) utilizza checksum SHA256, mentre i plugin più vecchi utilizzavano CRC32. Se vedi un checksum fallire, controlla se il checksum è CRC32 (un hash più breve) anziché SHA256. Questo di solito indica che il pacchetto è stato caricato con una versione precedente di CLI. Verifica la versione del tuo bundle nel dashboard Capgo: i bundle creati a partire dalla versione 5.10.0/6.25.0/7 dovrebbero utilizzare SHA256. Se visualizzi checksum CRC32, assicurati di avere la versione più recente del plug-in installata localmente (CLI controlla la versione del plug-in locale per determinare quale tipo di checksum caricare), quindi aggiorna il tuo CLI e ricarica il pacchetto. 2) Mancata corrispondenza della chiave di crittografia (sulle versioni del plug-in precedenti alla 8.3.0 o 5/6/7.38.0): Nelle versioni del plug-in precedenti, se la chiave pubblica del dispositivo non corrisponde alla chiave utilizzata per crittografare il pacchetto,la decrittografia fallirà silenziosamente e causerà un errore di checksum. Se utilizzi la crittografia e vedi checksum_fail, verifica che la chiave pubblica in capacitor.config.json della tua app corrisponda alla chiave privata utilizzata per caricare il pacchetto. L’aggiornamento alla versione del plugin 8.3.0+ (o 5/6/7.38.0+) ti darà invece un errore keyMismatch corretto dal server, rendendo questo problema più facile da diagnosticare. | | windows_path_fail | Lo zip contiene file che contengono percorsi di Windows illegali | | canonical_path_fail | Il percorso dei file non è canonico | | percorso_directory_fail | C’è un errore nel percorso dei file zip | | unzip_fail | decompressione non riuscita | | low_mem_fail | Download non riuscito a causa della memoria insufficiente nel dispositivo | | app_moved_to_ background | L’applicazione è entrata nello stato in background. | | app_moved_to_foreground | L’applicazione è entrata nello stato in primo piano. | | decrypt_fail | Impossibile decrittografare il pacchetto scaricato. | | getChannel | È stato interrogato il canale attuale del dispositivo. | | setChannel | Un canale è stato impostato correttamente per il dispositivo. | | disinstalla | L’applicazione è stata disinstallata o i dati Capgo sono stati cancellati. | | bloccato_da_url_server | Server.url è presente nella configurazione del condensatore, questo fa sì che Capacitor serva l’URL remoto e ignori i file locali, mentre il nostro programma di aggiornamento è fatto per funzionare con il file locale, Server.url è considerato dai produttori di Capacitor una cattiva pratica in produzione e porterà a molti problemi e il plug-in non funzionerà correttamente. |### Stato del pacchetto

  • SUCCESS: installazione del pacchetto completata
  • ERROR: installazione o download non riuscito
  • PENDING: download completato, in attesa di rilascio
  • DELETED: pacchetto eliminato, ancora presentato per le statistiche
  • DOWNLOADING: sto scaricando un pacchetto in corso

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

Terminal window
npx @capgo/cli@latest app debug

Ciò ti consentirà di controllare tutti gli eventi che si verificano nell’app e trovare una soluzione se gli aggiornamenti non vengono eseguiti.

###IOS

per trovare i tuoi registri su Xcode

per trovare i tuoi registri su Android studio

  • Impossibile scaricare da => uguale a download_fail
  • notifyAppReady non è stato chiamato, ripristina il bundle corrente => come update_fail

Trovare il pacchetto scaricato sul tuo dispositivo

Section titled “Trovare il pacchetto scaricato sul tuo dispositivo”

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

Xcode dispone di una funzionalità integrata per ispezionare il file system delle app installate dallo sviluppatore su un dispositivo iOS. Xcode Menu della finestra che mostra l'opzione Dispositivi e simulatori

Per raggiungere questo obiettivo:

  • Collega il tuo dispositivo al Mac e seleziona Finestra > Dispositivi nella barra dei menu Xcode.
  • Seleziona il tuo dispositivo nel riquadro di sinistra nella sezione Dispositivi.
  • Verrà visualizzato un elenco delle app installate dallo sviluppatore per quel dispositivo.
  • Seleziona l’app che desideri controllare, quindi seleziona l’icona a 3 punti nella parte inferiore dello schermo.
  • Qui è possibile visualizzare il file system corrente selezionando scaricarne un’istantanea.

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

Selezionando Scarica contenitore… verrà scaricata ed esportata un’istantanea del file system come file .xcappdata che è possibile sfogliare.

File xcappdata scaricato con il menu contestuale Mostra contenuto pacchetto

Fare clic con il tasto destro su questo file e selezionare Mostra contenuto pacchetto per aprire la cartella.

Apri la cartella Dati app e ora dovresti vedere alcune cartelle come Documenti, Libreria, tmp, ecc.

iOS struttura delle cartelle del contenitore dell'app che mostra le cartelle Documenti e Libreria

Quindi troverai una versione in 2 cartelle:

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

e documents/versions per la ricarica a caldo

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

  • Fare clic su Visualizza > Finestre degli strumenti > Esplora file dispositivo oppure fare clic sul pulsante Esplora file dispositivo nella barra della finestra degli strumenti per aprire Esplora file dispositivo.
  • Seleziona un dispositivo dall’elenco a discesa.
  • Apri il percorso data/data/APP_NAME/ dove APP_NAME è l’ID della tua app.

Android Studio Device File Explorer che mostra la directory dei dati dell'app

Quindi trova la cartella versions per vedere tutte le versioni

Lo sapevate?

Su Android, tutte le versioni sono archiviate in una cartella, a differenza di IOS dove deve essere duplicato in due posizioni.

Comprensione dei registri di arresto anomalo della produzione iOS

Section titled “Comprensione dei registri di arresto anomalo della produzione iOS”