Dérouler vers le contenu

Débogage

GitHub

Si vous obtenez un refus de cloud code et avez besoin de remédiation plus approfondie, voir Problèmes d'actualisation 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.

Limites de plan et réponses normales

Sous-titre « Limites de plan et réponses normales »

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

Ce qu'il signifie

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

Ce à quoi faire

Réessayez à partir de réseaux et de dispositifs normaux, ou attendez et vérifiez à 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 channel-self, donc les sondes hébergées en cloud et les exécutables des fournisseurs peuvent recevoir cette réponse même lorsque 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 d'origine du fournisseur est intentionnel, désactiver temporairement Bloquer les requêtes d'infrastructure du fournisseur dans la configuration de l'application Informations tab, then enable it again after the test. New apps enable this setting by default; existing apps retain their previous disabled setting until changed.

Ce qu'il signifie

Your organization reached its plan or device limit. The device will not receive updates until you upgrade or the next billing cycle resets usage.

Ce que faire

Augmentez votre plan dans l'interface de dashboard ou attendez le cycle de facturation suivant.

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 qu'il signifie

Le dispositif a envoyé trop de requêtes d'actualisation ou de canal en un court laps de temps.

Que faire

Stop calling update APIs inside render loops. Call setChannel / getChannel seulement à partir d'actions de l'utilisateur, et définissez defaultChannel dans capacitor.config.

Refus de backend causé par des métadonnées de version native invalides.

Ce que cela signifie

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

Que faire

Configurez plugins.CapacitorUpdater.version to valid semver, verify it in the SemVer tester, puis reconstruisez et réinstallez l'application native.

Plateforme et ciblage de construction

Sous-titre « Plateforme et ciblage de construction »

Refus de backend lorsqu'une politique de canal bloque une plateforme, un type de build ou une classe de dispositif.

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 faire

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

Ce qu'il signifie

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

Ce à quoi faire

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

Ce qu'il signifie

Le dispositif tourne sur Electron, mais les mises à jour Electron sont désactivées pour ce canal.

Ce à quoi faire

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

Ce qu'il signifie

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

Qu'est-ce faire

Allow dev builds in a test channel, or keep this channel release-only and move dev devices elsewhere.

Ce qu'il signifie

Une version de production appelée /updatesMises à jour de production bloquées pour ce canal.

Qu'est-ce faire

Permettre les mises à jour de production dans le canal si c'était une erreur, ou rediriger les versions de production vers le canal correct.

Ce qu'il signifie

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 maintenez la restriction et dirigez les appareils réels vers un autre canal.

Ce qu'il signifie

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

Qu'est-ce à faire

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

Compatibilité des règles d'actualisation automatique

Section intitulée « Auto-update compatibility rules »

Refus de backend lorsqu'une règle de semver ou de métadonnées bloque le bundle cible.

Ce qu'il signifie

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

Qu'est-ce à faire

Changer 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 la base de ligne du dispositif et bloque l'envoi d'actualisations sous la version native.

Qu'est-ce à faire

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

Ce qu'il signifie

Le canal nécessite min_update_versionmais la version native du dispositif est inférieure à ce seuil.

Qu'est-ce à faire

Configurer min_update_version À partir d'une version native plus récente sur le bundle ou la version cible.

Section intitulée « disableAutoUpdateToMajor »

La chaîne bloque les sauts de version majeure, par exemple. 1.x.x to 2.x.x.

Qu'est-ce à faire

Alignez la stratégie de canal avec votre plan de déploiement majeur, ou autorisez des sauts majeurs pour ce track. Voir Problèmes d'actualisation courants.

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 pour 1.3.0.

Qu'est-ce faire

Alignez la stratégie de canal avec votre plan de mise à jour mineure, ou autorisez les sauts mineurs pour ce suivi.

Ce qu'il signifie

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

Qu'est-ce faire

Synchronisez la cadence de mise à jour avec la politique du canal, ou permettez des sauts de patch pour ce track.

Refus du backend causé par une configuration de canal manquante ou incompatibles.

Ce que cela signifie

Le dispositif a tenté de s'associer lui-même à un canal privé qui ne permet pas la mise en place automatique de dispositifs.allow_device_self_set Ce à quoi il faut faire attention

Activer

Enable allow_device_self_set sur le canal ou basculer le dispositif vers un canal public ou autorisé.

Ce qu'il signifie

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

Qu'est-ce faire

Remplissez la configuration manquante pour cette règle ou passez à un mode d'auto-mise à jour plus simple.

Ce qu'il signifie

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

Qu'est-ce faire

Définir un canal par défaut dans le tableau de bord ou configurer defaultChannel dans la construction.

Refus du backend lorsque Capgo ne peut pas servir ou déchiffrer le paquet.

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.

Qu'est-ce faire

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

Ce que cela signifie

Le paquet affecté au canal n'a pas de contenu téléchargeable : aucun external_urlaucun 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. device_key_id, bundle_key_id, et version.

Qu'est-ce à faire

Comparez les clés d'ID de l'appareil et du bundle dans la console. Publiez avec la même clé et des versions de plugin correspondantes CLI.

Refus de serveur causés par la configuration de l'application ou des versions de mise à jour non supportées.

Ce qu'il signifie

The app sent a custom device ID, but this app does not accept custom IDs, so the ID is ignored.

Ce à quoi faire

Arrêtez d'envoyer des identifiants personnalisés, ou activez-les 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 Capgo en direct nécessitent des fichiers locaux et server.url est déconseillé en production.

Ce à quoi faire

Supprimer ou effacer server.url Pour les builds de production et garder les payloads d'actualisation locaux. Cela code peut apparaître comme un refus du serveur ou comme une statistique côté appareil.

Ce qu'il signifie

L'extension de mise à jour est désormais à la version 4, incompatible avec le backend.

Ce à quoi faire

Mettez à jour le plugin et CLI à v5+ (préférez v8) avec Capacitor v5+, reconstruirez, et republiez les métadonnées du bundle.

Événements côté appareil pour le flux de mise à jour normal, d'activation et d'annulation.

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

Un bundle a échoué à s'activer sur le dispositif.

Ce à quoi faire

Vérifiez les journaux natifs avec npx @capgo/cli@latest app debug et vérifiez l'intégrité du bundle, des chemins et du 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 du dispositif 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 qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

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

Qu'est-ce faire

Réparez l'élément manquant ou bloqué, régénérez le manifeste et ré-uploadez le bundle.

Ce que cela signifie

Un fichier de manifeste a échoué à valider son checksum.

Ce que 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.

Ce que faire

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

Ce que cela 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 que cela signifie

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

Ce à quoi faire

Appelez notifyAppReady() après que votre application ait terminé de se démarrer. notifyAppReady was not called, roll back current bundle correspond à ce code.

Ce qu'il signifie

Le bundle téléchargé a échoué à valider le checksum. Les causes courantes : décalage CRC32 vs SHA256 d'un ancien CLI téléchargement, ou décalage de clé de chiffrement sur les anciens plugins qui affichent la défaillance de déchiffrement comme une défaillance de checksum.

Ce à quoi faire

Re-upload with a current CLI/plugin (SHA256). If using encryption, verify the app public key matches the upload key, or upgrade to plugin 8.3.0+ for explicit keyMismatch errors.

Ce qu'il signifie

Le paquet téléchargé n'a pas pu être déchiffré.

Ce à quoi faire

Vérifiez les clés de chiffrement et ré-uploadez le bundle avec la paire de clés correspondante.

Ce qu'il signifie

Le zip contient des chemins Windows illégaux.

Qu'est-ce faire

Rebâtissez le bundle sur des chemins Unix ou nettoyez les chemins d'archive avant l'envoi.

Ce qu'il signifie

File paths inside the zip are not canonical.

Qu'est-ce faire

Fixez la génération des chemins d'archive avant l'envoi.

Ce qu'il signifie

Le zip contient des chemins de répertoire invalides.

Qu'est-ce à faire

Vérifiez la structure de l'archive avant de l'envoyer.

Ce que cela signifie

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

Qu'est-ce à faire

Vérifiez l'intégrité de l'archive et les compressions supportées.

Ce que cela signifie

Le téléchargement a échoué car le dispositif manquait de mémoire.

Qu'est-ce à faire

Réduisez la taille du bundle ou réessayez sur un dispositif avec plus de mémoire libre.

Diagnostic de crash, de mémoire et de WebView sur le périphérique. Vérifiez toujours les métadonnées JSON dans le tableau de bord.

Ce qu'il signifie

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

Ce qu'il signifie

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

Ce qu'il signifie

Crash JavaScript ou niveau Capacitor. Les métadonnées peuvent inclure le message, la pile, la source et le contexte de bundle actif.

Qu'est-ce à faire

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

Ce qu'il signifie

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

Qu'est-ce à faire

Utilisez les journaux de crash Xcode ou Logcat et corrigez-les avec le bundle actif à partir des métadonnées.

Ce qu'il signifie

Événement d'Application Non Répondante Android.

Qu'est-ce à faire

Inspectez les traces d'ANR dans Logcat et réduisez le travail de blocage de la main-thread après les mises à jour.

Ce qu'il signifie

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

Ce que faire

Reduce memory use after update activation and inspect metadata for available memory signals.

Ce qu'il signifie

L'OS a tué l'application pour 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 qu'il signifie

Updater or startup failed before normal runtime was ready.

À quoi faire ?

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

Ce que cela signifie

Avertissement de mémoire iOS.

À quoi faire ?

Inspect memory context in metadata and reduce peak usage after updates.

Ce que cela signifie

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

À quoi faire ?

Installez la gestion des erreurs dans les couches JS et natives pour capturer la ligne exacte en cause en production.

Ce qu'il signifie

Rejet d'une promesse non gérée dans le WebView.

Ce que faire

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

Ce qu'il signifie

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

Ce que faire

Use metadata URL and status details to fix broken assets or network rules.

Ce qu'il signifie

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

Ce à quoi faire

Ajustez les CSP en utilisant la directive de métadonnées et les détails d'URI bloqués.

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 d'erreur de WebView et de crash avant et après redémarrage.

Ce qu'il signifie

Le processus de rendu WebView Android a quitté.

Qu'est-ce à faire

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

Ce qu'il signifie

Le processus de contenu de la vue Web iOS a été terminé.

Qu'est-ce à faire

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

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

Ce qu'il signifie

Device OS version changed between checks.

Ce que cela signifie

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

Ce que cela signifie

Le dispositif a interrogé son canal actuel.

Ce que cela signifie

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

Ce que cela signifie

The app was uninstalled or Capgo data was cleared.

  • SUCCESS: installation du paquet terminée
  • ERROR: installation ou téléchargement échoué
  • PENDING: Téléchargement terminé, version en attente
  • DELETED: Bundle deleted, still presented for stats
  • DOWNLOADING: Un paquet est actuellement téléchargé

There is a debug command for Capgo cloud users.

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 dans Xcode

pour trouver vos journaux dans 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 Dispositifs et Simulateurs

Pour atteindre cela :

  • Connectez votre appareil à votre Mac et sélectionnez Fenêtre > Appareils dans le menu Xcode.
  • Sélectionnez votre appareil dans le panneau de gauche sous la section Appareils.
  • Cela affichera une liste des applications développées pour cet appareil.
  • Sélectionnez l'application que vous souhaitez inspecter puis sélectionnez l'icône de trois points près du bas de l'écran.
  • Ici, vous pouvez afficher le système de fichiers actuel en sélectionnant Télécharger une capture d'écran.

Xcode Devices panel showing app container download option

Sélectionner Télécharger le conteneur… téléchargera et exporter un instantané du système de fichiers sous forme de 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 affichant les dossiers Documents et Bibliothèque

Vous trouverez ensuite une version dans 2 dossiers :

library/NoCloud/ionic_built_snapshots is necessary after the app reboot

et documents/versions pour le rechargement chaud

Pour déboguer sur Android, vous devez accéder au dispositif depuis Android Studio :

  • Click View > Tool Windows > Device File Explorer or click the Device File Explorer button in the tool window bar to open the Device File Explorer.
  • Sélectionnez un appareil dans la liste déroulante.
  • Ouvrez le chemin data/donnees/APP_NOM/ where APP_NAME est votre ID d'application.

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

Trouvez ensuite le versions dossier pour voir toutes les versions

Comprendre les journaux de crash de production IOS

Sous-titre : « Comprendre les journaux de crash 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’avec En utilisant @capgo/capacitor-mises à jour pour la capacité native dans En utilisant @capgo/capacitor-mises à jour, Répertoire de plugin Capgo pour le flux de travail du produit dans Répertoire de plugin Capgo, Plugins Capacitor par Capgo pour le détail d'implémentation dans Plugins Capacitor par Capgo, Ajouter ou Mettre à jour des Plugins pour le détail d'implémentation dans Ajouter ou Mettre à jour des Plugins, et Alternatives de Plugins d'Entreprise Ionic pour le flux de travail du produit dans Alternatives de Plugins d'Entreprise Ionic.