Passer à la navigation

Débogage

GitHub

Si vous obtenez un refus de cloud code et que vous avez besoin de remédiation plus approfondie, 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 journaux plus anciens 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 »

Les refus de backend liés à la facturation, à la limitation de vitesse ou à des états non d'erreur.

Ce qu'il signifie

Capgo a détecté un 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 compté comme des appareils facturables.

Ce à quoi faire

Ignorez cela pour les utilisateurs réels. Réessayez depuis des réseaux normaux et des appareils réels, 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 de canal-self, donc les sondes hébergées sur le cloud et les exécutables des fournisseurs peuvent recevoir cette réponse même si la configuration de l'application est autrement valide.

Ce à quoi faire

Réessayez depuis un appareil physique sur un réseau d'utilisateur normal. Si le trafic d'origine du fournisseur est intentionnel, désactivez temporairement La protection des requêtes d'infrastructure du fournisseur dans l'application Informations dans la rubrique Informations, activez-l’à nouveau après le test. Les nouvelles applications activez cette configuration par défaut ; les applications existantes conservent leur paramétrage précédemment désactivé 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 d'actualisations jusqu'à ce que vous augmentiez votre plan ou que le cycle de facturation suivant réinitialise les utilisations.

Ce qu'il faut faire

Augmentez votre plan dans le tableau de bord 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 que cela signifie

Le dispositif a envoyé trop de requêtes d'actualisation ou de canal dans une fenêtre de temps raccourcie.

Ce à quoi faire

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

Les refus de serveur provoqués 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 à faire

Définir plugins.CapacitorUpdater.version à une version valide semver, vérifiez-la dans le Testeur SemVer, puis rebuild 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 à faire

protectedTokens

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

Ce que cela signifie

Le dispositif exécute 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 rediriger les builds Android vers un canal dédié lorsque le blocage est intentionnel.

Ce que cela signifie

Le dispositif exécute 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 rediriger 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 à quoi 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 à jour de production appelée /updates, mais les mises à jour de production sont bloquées pour ce canal.

Ce à quoi faire

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

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

Titre de la section « Auto-update compatibility rules »

Refus du serveur lorsqu'il est refusé par des règles semver ou de métadonnées du paquet cible.

What cela 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.

What faire

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

What cela 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.

What 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 dispositif est inférieure à ce seuil.

Ce qu'il faut 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.

Ce qu'il faut faire

Aligner la stratégie du canal avec votre plan de lancement majeur, ou autoriser les sauts majeurs pour ce track. Voir Problèmes de mise à jour 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.

context

Page/area: Page de produit de mises à jour en direct. Role: Étiquette de navigation ou élément UI court. Clé de message `live_update_dynamic_label_to` (Étiquette de mise à jour en direct dynamique à).

disableAutoUpdateToPatch

Ce à quoi faire

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

Section intitulée “désactiverMiseAJourAutomatiqueVersLaMineure” MAJOR.MINOR.PATCH Ce qu'il signifie : Le canal bloque les changements de niveau de patch tout en gardant le même préfixe ; seuls les changements de suffixe sont autorisés.

Qu'est-ce à faire

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

Refus du serveur causé par une configuration de chaîne manquante ou incompatible.

Ce que cela signifie

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

Activer

la fonctionnalité sur la chaîne ou passer le dispositif à une chaîne publique ou autorisée. allow_device_self_set Activer

Ce qu'il signifie

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

Ce à quoi faire

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

Ce qu'il signifie

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

Ce à quoi faire

Définissez un canal par défaut dans le tableau de bord ou configurez defaultChannel en cours de 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 que 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.

Qu'est-ce que cela 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

Section intitulée “App configuration and legacy clients”

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

Ce qu'il signifie

L'application a envoyé un ID de périphérique personnalisé, mais cette application ne prend pas en charge les IDs personnalisés, donc l'ID est ignoré.

Ce que faire

Cesser d'envoyer des IDs personnalisés, ou activer les IDs personnalisés uniquement lorsque votre flux de travail les nécessite.

Ce qu'il signifie

server.url est défini dans Capacitor config, 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

Supprimer ou effacer server.url pour les builds de production et garder les payloads d'actualisation locales. Cela code peut apparaître sous la forme d'une refus de 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 en version 5+, reconstruire et républier les métadonnées du bundle.

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

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 sur 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é, les chemins et les notifyAppReady flux.

Ce que cela signifie

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

Ce que cela signifie

Une archive a été supprimée sur le dispositif.

Événements côté appareil pour le suivi du téléchargement, de la validation de l'archive et des erreurs d'installation.

Ce que cela 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é — le progrès est indiqué à 40%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — le progrès est indiqué à 50%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — le progrès est indiqué à 60%.

Ce que cela signifie

Un nouveau bundle a été téléchargé — le progrès est indiqué à 70%.

Ce que cela signifie

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

Ce que cela signifie

A 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é la téléchargement du 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é la téléchargement de l'archive du bundle.

Ce qu'il signifie

Une entrée du 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 de 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 de manifeste.

Ce que cela signifie

Un fichier de 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 et migration d'Appflow / marketing de copie. Rôle : phrase de copie du site web. Vu dans : 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). notifyAppReady was not called, roll back current bundle se mappent à ce code.

Ce qu'il signifie

Le bundle téléchargé a échoué à valider la cohérence du checksum. Causes courantes : décalage entre CRC32 et SHA256 d'un ancien CLI de téléchargement, ou décalage de la clé de cryptage sur les anciens plugins qui affichent la défaillance de déchiffrement comme une défaillance de checksum.

Ce à quoi faire

Télécharger à nouveau 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 »

decrypt_fail

Ce qu'il signifie

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

Ce à quoi faire

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

Ce à quoi faire

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 que 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 que faire

Vérifiez l'intégrité de l'archive et les formats de compression supportés.

Ce que cela signifie

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

Ce que faire

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

Diagnostics de crash, de mémoire et de WebView côté appareil. 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.

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

What to do

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.

What it means

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

What to do

Utilisez les journaux de crash Xcode ou Logcat et corréliez-les avec l'ensemble actif à partir des métadonnées.

What it means

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

What to do

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

Ce que cela signifie

L'OS a tué l'application après pression de mémoire.

Ce que faire

Réduisez l'utilisation de la mémoire après 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 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 que cela signifie

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

Ce à quoi faire

Inspectez les métadonnées pour l'étape qui a échoué et le message d'erreur.

Ce que cela signifie

Avertissement de mémoire iOS.

Ce à quoi 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 de l'application. Les métadonnées peuvent inclure le message, l'URL de la source, la ligne, la colonne et la pile.

What to 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

La promesse non traitée dans la WebView.

Ce que faire

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

Ce que cela signifie

Une ressource de la WebView a échoué à se charger.

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

Ajuster la CSP à l'aide de la directive de métadonnées et des détails de la ressource 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 que faire

Corréler avec les événements de crash et d'erreur WebView 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 WebView iOS a été 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 d'OS, 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 du magasin a changé, ce qui aide à séparer les modifications du bundle natif 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.

What 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 à venir
  • DELETED: Le paquet a été supprimé, mais il est toujours présent pour les statistiques
  • DOWNLOADING: Un paquet est actuellement téléchargé

Il existe une commande de débogage pour les utilisateurs Capgo du 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 Dispositifs et Simulateurs

To achieve this:

  • 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.
  • Ici, vous pouvez afficher le système de fichiers actuel en sélectionnant Télécharger une capture d'écran.

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

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'applications iOS affichant les dossiers Documents et Bibliothèque.

Ensuite, vous trouverez une version dans 2 dossiers :

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

et documents/versions pour le rechargement chaud

Pour déboguer sur Android, vous devez accéder à l'appareil depuis Android Studio :

  • Cliquez sur Vue > Outils de fenêtre > Explorateur de fichiers de périphérique ou cliquez sur le bouton Explorateur de fichiers de périphérique dans la barre des outils de fenêtre pour ouvrir l'Explorateur de fichiers de périphérique.
  • Sélectionnez un appareil dans la liste déroulante.
  • Ouvrez le chemin données/donnees/data/APP_NAME/APP_NAME est votre ID d'application.

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

Trouvez ensuite le versions répertoire 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 »

If vous utilisez Debugging 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, 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 les alternatives Ionic Enterprise Plugin