Passer à la navigation

Débogage

GitHub

Si vous obtenez un refus de cloud code et avez besoin de guides de remédiation plus approfondis, voir Problèmes de mise à jour courants.

Capgo les journaux peuvent inclure des métadonnées pour l'événement. Dans le tableau de bord, filtrez par l'action en snake_case code, et cliquez sur la cellule de métadonnées pour copier le payload JSON complet. Les métadonnées sont particulièrement utiles pour les événements de crash et de WebView car elles peuvent inclure le message d'erreur, l'URL de source, la ligne et la colonne, l'état du processus, la pression de mémoire ou la raison spécifique au système d'exploitation. Les anciens journaux peuvent toujours afficher des alias camelCase legacy listés en parenthèses.

Chaque titre de section correspond à l'action code affichée dans la table des journaux de console, vous pouvez donc y accéder directement.

Refus de backend liés à la facturation, à la limitation de bande passante ou à des états non d'erreur.

Ce qu'il signifie

Capgo a détecté un trafic qui ressemble à celui provenant de Google ou d'infrastructure cloud. Les mises à jour moins de quatre heures sont ignorées afin que le trafic des bots ne soit pas compté comme des appareils facturables.

Ce à quoi faire

Ignorer cela pour les utilisateurs réels. Réessayer depuis des réseaux normaux et des appareils réels, ou attendre et vérifier à nouveau plus tard.

Ce qu'il signifie

Votre application est configurée pour bloquer les requêtes provenant des adresses IP des centres de données Google et Apple connus. La protection s'applique aux vérifications de mise à jour, aux statistiques et aux demandes de canal-self, donc les sondes hébergées par le cloud et les exécutants de fournisseur peuvent recevoir cette réponse même si la configuration de l'application est autrement valide.

Ce à quoi faire

Réessayer depuis un appareil physique sur un réseau utilisateur normal. Si le trafic provenant du fournisseur est intentionnel, désactivez temporairement Bloquer les requêtes de l'infrastructure du fournisseur dans l'application Informations dans l'onglet Informations, activez-l’à nouveau après le test. Les nouvelles applications activent ce paramètre par défaut ; les applications existantes conservent leur paramètre désactivé précédent jusqu'à ce qu'il soit modifié.

Ce qu'il signifie

Votre organisation a atteint ses limites de plan ou de dispositif. Le dispositif ne recevra pas de mises à jour jusqu'à ce que vous augmentiez votre plan ou que le prochain cycle de facturation réinitialise l'utilisation.

Ce qu'il faut faire

Augmentez votre plan dans le tableau de bord ou attendez le prochain cycle de facturation.

Ce qu'il signifie

Le dispositif dispose déjà de la dernière version disponible pour son canal. C'est un état normal, pas une erreur.

Ce que cela signifie

Le dispositif a envoyé trop de demandes d'actualisation ou de canal dans une fenêtre de temps courte.

Ce que faire

Arrêtez d'appeler les API d'actualisation à l'intérieur des boucles de rendu. Appelez-les setChannel / getChannel seulement à partir d'actions de l'utilisateur, et définissez defaultChannel dans capacitor.config.

Refus du serveur causé par des métadonnées de version native non valides.

Ce que cela signifie

La version de l'application native dans la configuration est manquante ou non valide semver (x.y.z).

Qu'est-ce qu'il faut faire

Définir plugins.CapacitorUpdater.version à une version valide semver, vérifiez-la dans le Testeur SemVer, puis reconstruisez et réinstallez l'application native.

Section intitulée « Désactiver la plateforme iOS »

disablePlatformIos

Ce qu'il signifie

Le dispositif exécute iOS, mais les mises à jour d'iOS sont désactivées pour ce canal.

Qu'est-ce qu'il faut faire

Section intitulée « Plateforme et ciblage de construction »

Activer iOS dans le canal si cela était involontaire, ou diriger les builds iOS vers un canal dédié lorsque le blocage est intentionnel.

Ce que cela signifie

L'appareil tourne sous Android, mais les mises à jour d'Android sont désactivées pour ce canal.

Ce que faire

Activer Android dans le canal si cela était involontaire, ou diriger les builds Android vers un canal dédié lorsque le blocage est intentionnel.

Ce que cela signifie

L'appareil tourne sous Electron, mais les mises à jour d'Electron sont désactivées pour ce canal.

Ce que faire

Activer Electron dans le canal si cela était involontaire, ou diriger les builds Electron vers un canal dédié lorsque le blocage est intentionnel.

Ce que cela signifie

Le dispositif est une version de développement, mais les versions de développement sont bloquées pour ce canal.

Ce que faire

Autoriser les versions de développement dans un canal de test, ou garder ce canal en version de production et déplacer les appareils de développement ailleurs.

Ce que cela signifie

Une mise en production appelée /updates, mais les mises à jour de production sont bloquées pour ce canal.

Ce que faire

Autoriser les mises à jour de production dans le canal si cela était accidentel, ou rediriger les mises en production vers le bon canal.

Ce que cela signifie

A un téléphone ou une tablette réel a été bloqué car ce canal bloque les appareils réels.

Qu'est-ce à faire ?

Activer les mises à jour de dispositifs réels si c'était une erreur, ou maintenir la restriction et rediriger les appareils réels vers un autre canal.

Ce qu'il signifie

L'appareil est un émulateur, mais les mises à jour d'émulateur sont désactivées pour ce canal.

Qu'est-ce à faire ?

Activer les mises à jour d'émulateur dans un canal de test, ou maintenir ce canal émulateur-bloqué et utiliser un autre canal pour la validation d'émulateur.

Règles de compatibilité des mises à jour automatiques

Section intitulée « Auto-update compatibility rules »

Refus du serveur lorsqu'il y a des règles de semver ou de métadonnées qui bloquent le bundle cible.

Ce qu'il signifie

L'auto-mise à jour est désactivée en raison de la politique de compatibilité du canal. Les métadonnées incluent auto_update avec une règle correspondante comme major, minor, patch, metadata, ou none.

Ce à quoi faire

Modifier la politique d'auto-mise à jour du canal pour permettre votre lancement prévu.

Ce qu'il signifie

Le canal a un bundle plus ancien que le niveau de base du dispositif et bloque l'envoi d'actualisations sous la version native.

Ce à quoi faire

Publiez un bundle à ou au-dessus du niveau de base natif, ou désactivez la protection sous-native dans le canal.

Ce qu'il signifie

Le canal nécessite min_update_version, mais la version native du périphérique est inférieure à ce seuil.

Qu'est-ce à faire

Définir min_update_version sur le bundle cible ou la version de sortie à partir d'une version native plus récente.

Ce qu'il signifie

Le canal bloque les sauts de version majeure, par exemple 1.x.x à 2.x.x.

Qu'est-ce à faire

Aligner la stratégie du canal avec votre plan de lancement majeur, ou autoriser les sauts majeurs pour ce track. Voir Problèmes courants d'actualisation.

Ce qu'il signifie

Le canal bloque les sauts de version mineure par rapport au niveau de base natif du dispositif (version_build), par exemple 1.2.3 Vers quoi 1.3.0.

Ce qu'il faut faire

Alignez la stratégie de canal avec votre plan de déploiement mineur, ou autorisez les sauts mineurs pour ce track.

Ce qu'il signifie

Le canal bloque les modifications au niveau de correction tout en gardant le même MAJOR.MINOR.PATCH préfixe; seuls les changements de suffixe sont autorisés.

Qu'est-ce à faire

Aligner le rythme de mise à jour avec la politique du canal, ou permettre des sauts de correctif pour ce track.

Refus de l'arrière-plan causé par une configuration de canal manquante ou incohérente.

Ce que cela signifie

Le dispositif a tenté de se lier automatiquement à un canal privé qui ne permet pas la liaison automatique des appareils (« is false ») et le canal n'est pas public.allow_device_self_set Qu'est-ce à faire

Activer

le canal ou passer le dispositif à un canal public ou autorisé. allow_device_self_set Sous-titre « Channel setup »

Ce que cela signifie

Le canal utilise disable_auto_update: "version_number" mais le bundle min_update_version est nul, donc Capgo ne peut pas décider quelles appareils devraient mettre à jour.

Que faire

Remplissez la configuration manquante pour cette règle ou passez à un mode de mise à jour automatique plus simple.

Ce que cela signifie

Aucun canal par défaut n'est configuré et l'appareil n'a pas de canal de substitution.

Que faire

Définissez un canal par défaut dans le tableau de bord ou configurez defaultChannel au cours de la construction.

Refus du serveur de backend lorsque Capgo ne peut pas servir ou déchiffrer le bundle.

Ce que cela signifie

Capgo a échoué à générer une URL de téléchargement signée valide et aucune substitution de manifeste n'était disponible.

Ce à quoi il faut faire

Ré-uploader le bundle, régénérer les manifestes et vérifier les paramètres R2 ou bundle public.

Ce que cela signifie

Le bundle affecté au canal n'a pas de contenu téléchargeable : aucun external_url, non r2_path, pas une version intégrée, et aucune entrée de manifeste.

Qu'est-ce à faire

Reconstruire et ré-uploader la version, puis confirmer que le bundle a un contenu de fichiers réel.

Ce qu'il signifie

La clé publique de chiffrement du dispositif ne correspond pas à la clé utilisée pour chiffrer le bundle. Les métadonnées peuvent inclure device_key_id, bundle_key_id, et version.

Qu'est-ce à faire

Comparer les identifiants de clés du dispositif et du bundle dans la console. Publier avec la même clé et des versions CLI/plugin correspondantes.

Configuration de l'application et clients legacy

Sous-section intitulée “App configuration and legacy clients”

Les refus de backend causés par la configuration de l'application ou les versions non supportées de l'actualiseur.

Ce qu'il signifie

L'application a envoyé un identifiant de appareil personnalisé, mais cette application ne prend pas en charge les identifiants personnalisés, donc l'ID est ignoré.

Ce que faire

Arrêtez d'envoyer des identifiants personnalisés, ou activez les identifiants personnalisés uniquement lorsque votre flux de travail les nécessite.

Ce qu'il signifie

server.url est défini dans la configuration Capacitor, donc la Vue de l'application charge une URL distante au lieu de fichiers de bundle locaux. Les mises à jour en direct Capgo nécessitent des fichiers locaux et server.url est déconseillé en production.

Ce que faire

Supprimez ou effacez server.url pour les builds de production et garder les payloads d'actualisation locales. Cela code peut apparaître sous forme de refus du backend ou comme un statut du côté appareil.

Ce qu'il signifie

Le plugin de mise à jour est en version 4, que le backend ne prend plus en charge.

Ce qu'il faut faire

Mettre à jour le plugin et CLI en version 5+ (préférer la version 8) avec Capacitor version 5+, reconstruire et républier les métadonnées du bundle.

Cycle de vie de l'actualisation

Section intitulée « Update lifecycle »

Événements du côté appareil pour le flux d'actualisation normal, d'activation et de reversion.

Ce qu'il signifie

Action de test interne utilisée pour vérifier la pipeline de statistiques.

Ce qu'il signifie

Capgo a envoyé des informations de téléchargement pour une nouvelle version vers le dispositif.

Ce qu'il signifie

Un bundle a été activé sur le dispositif.

Ce qu'il signifie

Ce à quoi faire attention

Vérifiez les journaux natifs avec

et vérifiez l'intégrité, les chemins et les npx @capgo/cli@latest app debug paths et les chemins notifyAppReady flux.

Ce qu'il signifie

Le dispositif a été réinitialisé vers le bundle intégré.

Ce qu'il signifie

Un bundle a été supprimé sur le dispositif.

Événements côté appareil pour la progression de téléchargement, la validation de l'archive et les erreurs d'installation.

Ce qu'il signifie

La séquence de téléchargement a commencé à 0% de progression.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 10%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 20%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 30%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 40%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 50%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 60%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 70%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 80%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — progression indiquée à 90%.

Ce que cela signifie

Le téléchargement du bundle s'est terminé avec succès.

Ce que cela signifie

Le dispositif a commencé à télécharger le manifeste d'actualisation.

Ce que cela signifie

Le dispositif a terminé de télécharger le manifeste d'actualisation.

Ce que cela signifie

Le dispositif a commencé à télécharger l'archive du bundle.

Ce que cela signifie

Le dispositif a terminé de télécharger l'archive du bundle.

Ce que cela signifie

Un élément de manifeste a échoué à se télécharger. version_name utilise version:fileName pour identifier l'asset.

Qu'est-ce à faire

Réparez les actifs manquants ou bloqués, régénérez le manifeste et ré-uploadez le bundle.

Ce que cela signifie

Un fichier manifeste a échoué la validation de son checksum.

Qu'est-ce à faire

Ré-uploadez le bundle avec une version actuelle CLI et vérifiez les checksums du manifeste.

Ce que cela signifie

Un fichier manifeste a échoué la décompression Brotli.

Qu'est-ce à faire

Vérifiez les paramètres de compression et ré-uploadez les actifs affectés.

Ce qu'il signifie

Le bundle n'a pas pu être téléchargé.

Ce à quoi faire

Vérifiez la connectivité réseau, l'expiration de l'URL signée, la disponibilité du CDN et l'espace de stockage du dispositif.

Ce qu'il signifie

Le bundle a été installé mais l'application n'a jamais appelé notifyAppReady, donc Capgo a été annulé.

Ce à quoi faire

Appelez notifyAppReady() context : texte HTML fragment d'une chaîne de Capgo UI plus longue (clé parente `appflow_migration_step2`). Page/zone : Comparaison/Appflow de migration du contenu marketing. Rôle : Phrase de copie du site Web. Voir : page ionic-appflow.astro. Conservez exactement les termes de produit/marque et les termes de développeur de Capgo. Clé de message `appflow_migration_step2` (Étape 2 de la migration d'Appflow). Message clé `appflow_migration_step2` (Étape 2 de la migration d'Appflow). notifyAppReady was not called, roll back current bundle correspond à ce code.

Ce que cela signifie

Le bundle téléchargé a échoué à la validation de la somme de contrôle. Les causes courantes : décalage entre CRC32 et SHA256 provenant d'un ancien CLI de téléchargement, ou décalage de la clé de chiffrement sur les anciens plugins qui affichent la défaillance de déchiffrement sous forme de défaillance de somme de contrôle.

Ce que faire

Ré-télécharger avec un CLI/plugin (SHA256) actuel. Si vous utilisez la cryptage, vérifiez que la clé publique de l'application correspond à la clé de téléchargement, ou mettez à niveau le plugin vers 8.3.0+ pour une défaillance explicite keyMismatch Section intitulée « decrypt_fail »

Le bundle téléchargé a échoué à se déchiffrer.

Ce que faire

Vérifiez les clés de cryptage et ré-téléchargez le bundle avec la paire de clés correspondante.

Section intitulée « update_fail »

Ce qu'il signifie

Le zip contient des chemins Windows illégaux.

Ce que faire

Rebâtir le bundle sur des chemins Unix ou nettoyer les chemins d'archive avant téléchargement.

Ce qu'il signifie

Les chemins de fichiers à l'intérieur du zip ne sont pas canoniques.

Ce que faire

Réparer la génération des chemins d'archive avant téléchargement.

Ce qu'il signifie

Le zip contient des chemins de répertoire invalides.

Ce qu'il faut faire

Fixez la structure de l'archive avant de l'envoyer.

Ce que cela signifie

Le dispositif a échoué à dézipper le bundle téléchargé.

Ce qu'il faut faire

Vérifiez l'intégrité de l'archive et la compression prise en charge.

Ce que cela signifie

Le téléchargement a échoué car le dispositif était à court de mémoire.

Ce qu'il faut faire

Réduire la taille du bundle ou réessayer sur un appareil avec plus de mémoire gratuite.

Diagnostic de panne, de mémoire et de WebView sur le périphérique. Inspectez toujours le JSON de métadonnées dans le tableau de bord.

Ce qu'il signifie

L'application est entrée en arrière-plan.

Ce qu'il signifie

L'application est entrée en avant-plan.

Ce qu'il signifie

JavaScript ou Capacitor layer crash. Les métadonnées peuvent inclure le message, la pile, la source et le contexte de l'ensemble actif.

Que faire

Inspectez les métadonnées et les journaux natifs. Associez les rapports d'erreurs JavaScript et natives (par exemple Sentry) pour localiser le chemin code en panne.

Ce que cela signifie

Crash de la plateforme native. Les métadonnées peuvent inclure la plateforme, la raison, la pile et les détails du processus.

Que faire

Utilisez les journaux de crash Xcode ou Logcat et corréliez-les avec l'ensemble actif de la métadonnée.

Ce que cela signifie

Événement d'application Android non réactive.

Que faire

Inspectez les traces d'ANR dans Logcat et réduisez le travail de blocage du fil principal après les mises à jour.

Ce que cela signifie

L'OS a tué l'application après une pression sur la mémoire.

Ce que faire

Réduisez l'utilisation de la mémoire après l'activation de la mise à jour et inspectez les métadonnées pour les signaux de disponibilité de la mémoire.

Ce que cela signifie

L'OS a tué l'application en raison d'un usage excessif des ressources.

Ce que faire

Inspectez les métadonnées pour le type de ressource ou la raison de la plateforme.

Ce que cela signifie

L'actualiseur ou le démarrage a échoué avant que le runtime normal ne soit prêt.

Ce que faire

Inspectez les métadonnées pour l'étape en panne et le message d'erreur.

Ce que cela signifie

Avertissement de mémoire iOS.

Ce que faire

Inspectez le contexte de mémoire dans les métadonnées et réduisez l'utilisation maximale après les mises à jour.

Ce que cela signifie

Erreur JavaScript non capturée dans la vue WebView. Les métadonnées peuvent inclure le message, l'URL de source, la ligne, la colonne et la pile.

Qu'est-ce à faire

Installez la gestion des erreurs dans les couches JS et natives pour capturer la ligne de code exacte qui faille en production.

Ce que cela signifie

Rejet de promesse non géré dans le WebView.

Qu'est-ce à faire

Capturez les échecs asynchrones avec la gestion des erreurs JS et natives.

Ce que cela signifie

Une ressource du WebView a échoué à se charger.

Qu'est-ce à faire

Utilisez les informations de métadonnées et les détails de statut pour corriger les actifs endommagés ou les règles de réseau.

Ce qu'il signifie

La politique de sécurité du contenu a bloqué une ressource.

Ce à quoi faire

Ajuster la CSP à l'aide de la directive de métadonnées et des détails de l’URI bloquée.

Ce qu'il signifie

La session WebView précédente n'a pas fermé proprement, ce qui peut indiquer des boucles de crash après une mise à jour.

Ce à quoi faire

Corréler avec les événements de crash et d'erreur de la vue web avant et après le redémarrage.

Ce qu'il signifie

Le processus de rendu de WebView Android s'est arrêté.

Ce qu'il faut faire

Inspectez les signaux de panne du processus de rendu dans les métadonnées et les journaux natifs.

Ce qu'il signifie

Le processus de contenu de WebView iOS s'est arrêté.

Ce qu'il faut faire

Inspectez le bundle actif et l'URL de la page à partir des métadonnées.

Contexte de l'environnement et du canal

Section intitulée “Environment and channel context”

Événements du contexte côté appareil qui aident à corriger le comportement de mise à jour avec les changements de système d'exploitation, de version native ou de canal.

Ce qu'il signifie

La version du système d'exploitation du dispositif a changé entre les vérifications.

Ce qu'il signifie

La version de l'application native a changé, ce qui aide à séparer les changements de bundle native et web.

Ce qu'il signifie

Le dispositif a interrogé son canal actuel.

Ce qu'il signifie

Un canal a été défini avec succès pour le dispositif.

Ce qu'il signifie

The app was uninstalled or Capgo data was cleared.

  • SUCCESS : installation du bundle terminée
  • ERROR : installation ou téléchargement échoué
  • PENDING : Téléchargement terminé, version à venir
  • DELETED : Le bundle a été supprimé, mais il est toujours présent pour les statistiques
  • DOWNLOADING : En cours de téléchargement d'un bundle

Il existe une commande de débogage pour les utilisateurs de Capgo cloud.

Fenêtre de terminal
npx @capgo/cli@latest app debug

Cela vous permettra de vérifier tous les événements se produisant dans l'application et de trouver une solution si les mises à jour ne se produisent pas.

pour trouver vos journaux sur Xcode

pour trouver vos journaux sur Android Studio

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

Pour déboguer sur iOS, vous devez déposer l'application sur votre ordinateur, vous pouvez le faire comme ceci :

Xcode dispose d'une fonctionnalité intégrée pour inspecter le système de fichiers des applications installées par les développeurs sur un appareil iOS. Menu Xcode Fenêtre montrant l'option Appareils et Simulateurs

Pour atteindre cela :

  • Connectez votre appareil à votre Mac et sélectionnez Fenêtre > Appareils dans le menu de Xcode.
  • Sélectionnez votre appareil dans le panneau de gauche sous la section Appareils.
  • Cela affichera une liste d'applications développées par les développeurs pour cet appareil.
  • Sélectionnez l'application que vous souhaitez inspecter et sélectionnez ensuite l'icône de trois points située en bas de l'écran.
  • Voici où vous pouvez afficher le système de fichiers actuel en sélectionnant le téléchargement d'une capture d'écran.

Le panneau Appareils de Xcode montrant l'option de téléchargement du conteneur d'applications

En sélectionnant Télécharger le conteneur…, vous téléchargerez et exporterez une capture d'écran du système de fichiers sous forme d'un fichier .xcappdata que vous pouvez parcourir.

Fichier xcappdata téléchargé avec le menu contextuel Afficher le contenu du package

Cliquez avec le bouton droit sur ce fichier et sélectionnez Afficher le contenu du package pour ouvrir le dossier.

Ouvrez le dossier App Data, et vous devriez maintenant voir quelques dossiers comme Documents, Bibliothèque, tmp, etc.

Structure du dossier du conteneur d'application iOS montrant les dossiers Documents et Bibliothèque

Vous trouverez ensuite une version dans 2 dossiers :

library/NoCloud/ionic_built_snapshots Cela est nécessaire après le redémarrage de l'application

et documents/versions pour le rechargement chaud

Cliquez sur Vue > Outils de fenêtre > Explorateur de fichiers de dispositif ou cliquez sur le bouton Explorateur de fichiers de dispositif dans la barre des outils de fenêtre pour ouvrir l'Explorateur de fichiers de dispositif.

  • Sélectionnez un appareil dans la liste déroulante.
  • Ouvrez le chemin
  • data/data/NOM_DE_L_APPLICATION/ APP_NAME APP_NAME est votre ID d'application.

Explorateur de fichiers du dispositif Android Studio montrant le répertoire de données de l'application

Trouvez ensuite le versions dossier pour voir toutes les versions

Comprendre les journaux de panne de production IOS

Sous-titre « Comprendre les journaux de panne de production IOS »

Continuez d'en apprendre sur la débogage

Sous-titre « Continuez d'en apprendre sur la débogage »

Si vous utilisez Débogage pour planifier le travail de plugin natif, connectez-l’à En utilisant @capgo/capacitor-mises à jour pour la capacité native dans En utilisant @capgo/capacitor-mises à jour Capgo Répertoire de plugins pour le flux de travail du produit dans Capgo Répertoire de plugins Capacitor Plugins par Capgo pour le détail d'implémentation dans Capacitor Plugins par Capgo Ajouter ou Mettre à jour les plugins pour le détail d'implémentation dans Ajouter ou Mettre à jour les plugins, et Alternatives de plugins d'entreprise Ionic pour le flux de travail du produit dans les alternatives d'extension d'entreprise d'Ionic.