Passer à la navigation

Débogage

GitHub

Comprendre les logs du cloud

Comprendre les logs du cloud

If vous obtenez une refus de cloud code et 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 de legacy listés entre 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, au surréglement ou à des états non d'erreur.

Ce que cela signifie

Capgo a détecté du trafic qui ressemble à celui qui provient de Google ou de l'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

Ignorez cela sur 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 que cela 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, de sorte que les sondes hébergées sur le cloud et les exécutants de fournisseur peuvent recevoir cette réponse même lorsque la configuration de l'application est autrement valide.

Que 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 d'infrastructure du fournisseur dans la Informations rubrique de l'application, puis activez-le à 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 que cela 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 cycle de facturation suivant réinitialise l'utilisation.

Qu'est-ce à faire

Mettez à niveau votre plan dans le tableau de bord ou attendez le prochain cycle de facturation.

Ce que cela signifie

Le dispositif dispose déjà de la dernière mise à jour disponible pour son canal. Il s'agit d'un état normal, pas d'un échec.

Ce que cela signifie

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

Qu'est-ce à 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 en capacitor.config.

Les refus de backend causés 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).

Ce que faire

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

Refus de backend lorsqu'une politique de canal bloque une plateforme, un type de construction 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.

Ce qu'il faut faire

Activer iOS dans le canal si c'était une erreur, ou diriger les builds d'iOS vers un canal dédié lorsque le blocage est intentionnel.

Ce qu'il signifie

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

Ce qu'il faut faire

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

Ce qu'il signifie

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

Ce qu'il faut 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 construction de développement, mais les constructions de développement sont bloquées pour ce canal.

Ce qu'il faut faire

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

Ce qu'il signifie : Le dispositif exécute Electron, mais les mises à jour d'Electron sont désactivées pour ce canal. Ce qu'il faut 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.

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

Qu'est-ce à faire

Autoriser les mises à jour de production dans le canal si c'était une erreur, ou rediriger les builds de production vers le bon canal.

Ce que cela signifie

Un téléphone ou une tablette réelle a été bloqué car ce canal bloque les appareils réels.

Qu'est-ce à faire

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

Ce que cela 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 de l'émulateur dans un canal de test, ou garder ce canal émulateur bloqué et utiliser un autre canal pour la validation de l'émulateur.

Compatibilité des règles de mise à jour automatique

Section intitulée “Compatibilité des règles de mise à jour automatique”

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

Qu'est-ce que cela signifie

La mise à jour automatique est désactivée par la politique de compatibilité du canal. Les métadonnées incluent auto_update avec une règle correspondante comme major, minor, patch, metadataou none.

Qu'est-ce à faire

Changer la politique de mise à jour automatique 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 qu'il faut faire

Publiez un bundle à ou au-dessus du niveau de base native, 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éfinissez min_update_version sur le bundle cible ou la mise à jour 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

Alignez la stratégie de canal avec votre plan de mise à jour majeure, ou autorisez 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 à 1.3.0.

Que faire

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

Ce que cela signifie

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

Que faire

Alignez la cadence de mise à jour avec la politique de canal, ou autorisez les sauts de mise à jour patch pour cette piste.

Refus de mise à jour côté serveur causé par une configuration de canal manquante ou incohérente.

Ce que cela signifie

Le dispositif a tenté de se connecter à un canal privé qui ne permet pas la mise en relation automatique des appareils (allow_device_self_set est faux) et le canal n'est pas public.

Que faire

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

Ce que cela 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 doivent se mettre à jour.

Que faire

Remplissez la configuration manquante pour cette règle ou passez à un mode d'actualisation automatique plus simple.

Ce que cela signifie

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

Ce que faire

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

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

Ce que cela signifie

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

Que faire

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

Ce que cela signifie

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

Que faire

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

Ce que cela signifie

La clé 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.

Que faire

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

Refus de l'arrière-plan causé par la configuration de l'application ou des versions de l'actualiseur non supportées.

Ce que cela signifie

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

Que faire

Arrêtez d'envoyer des IDs personnalisés, ou activez les IDs 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 Web 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.

Que faire

Supprimer ou effacer server.url pour les builds de production et garder les payloads de mise à jour locaux. Cela code peut apparaître comme une refus de serveur ou comme un statut du côté appareil.

Ce qu'il signifie

Le plugin de mise à jour est en v4, qui n'est plus accepté par le serveur.

Que faire

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

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

Ce que cela signifie

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

Ce que cela signifie

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

Ce que cela signifie

Un bundle a été activé sur l'appareil.

Ce que cela signifie

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

Ce qu'il faut faire

Vérifiez les journaux natifs avec npx @capgo/cli@latest app debug et vérifiez l'intégrité du bundle, les chemins et notifyAppReady le flux.

Ce que cela signifie

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

Ce que cela signifie

Un bundle a été supprimé 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é — 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

The appareil a terminé le téléchargement de l'archive du bundle.

Ce que cela signifie

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

Ce à quoi faire

Réparez l'actif 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 la somme de contrôle.

Ce à quoi faire

Ré-uploader le bundle avec une version actuelle CLI et vérifier les sommes de contrôle du manifeste.

Ce que cela signifie

Un fichier de manifeste a échoué à décompresser Brotli.

Ce à quoi faire

Vérifier les paramètres de compression et ré-uploader les actifs affectés.

Ce que cela signifie

Le bundle a échoué à se télécharger.

Ce à quoi faire

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

What cela signifie

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

Que faire

Appeler notifyAppReady() après que votre application ait terminé de se démarrer. Texte de journal natif notifyAppReady was not called, roll back current bundle s'est traduit en code.

Ce que cela signifie

Le bundle téléchargé a échoué la validation de checksum. Causes courantes : décalage CRC32 vs SHA256 d'un ancien CLI de téléchargement, ou décalage de clé de chiffrement sur des anciens plugins qui affichent la défaillance de décryptage comme échec de checksum.

Que faire

Ré-télécharger avec un CLI/plugin (SHA256) actuel. Si vous utilisez la chiffrement, vérifiez que la clé publique de l'application correspond à la clé de téléchargement, ou mettez à jour le plugin 8.3.0+ pour une défaillance explicite keyMismatch Erreurs.

Ce que cela signifie

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

Ce à quoi faire

Vérifiez les clés d'encryption et ré-uploadez le bundle avec le paire de clés correspondante.

Ce que cela signifie

Le zip contient des chemins Windows illégaux.

Ce à quoi faire

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

Ce que cela signifie

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

Ce à quoi faire

Fixez la génération du chemin d'archive avant l'upload.

Ce que cela signifie

Le zip contient des chemins de répertoires invalides.

Ce à quoi faire

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

Ce que cela signifie

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

Que faire

Vérifiez l'intégrité de l'archive et les formats de compression pris en charge.

Ce que cela signifie

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

Que faire

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

Diagnostic de panne du dispositif, de la mémoire et de WebView. Inspectez toujours le JSON de métadonnées dans le tableau de bord.

Ce que cela signifie

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

Ce que cela signifie

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

Ce que cela signifie

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

Ce qu'il faut faire

Inspectez les métadonnées et les journaux natifs. Associez le rapport d'erreurs JavaScript et natif (par exemple Sentry) pour localiser le chemin de 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.

What faire

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

Ce que cela signifie

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

Ce à faire

Inspectez les traces ANR dans Logcat et réduisez le travail de blocage de la tâche principale après les mises à jour.

Ce que cela signifie

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

Ce à faire

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

Ce que cela signifie

Le système d'exploitation a tué l'application en raison d'un usage excessif des ressources.

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 soit prêt.

Que faire

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

Ce que cela signifie

Avertissement de mémoire iOS.

Qu'est-ce que vous devez faire

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

Qu'est-ce que cela signifie

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

Qu'est-ce que vous devez faire

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

Qu'est-ce que cela signifie

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

Qu'est-ce que vous devez faire

Capturer les échecs asynchrones avec JS et le rapport d'erreurs natives.

Ce que cela signifie

Une ressource WebView a échoué à se charger.

Ce que faire

Utiliser l'URL de métadonnées et les détails du statut pour réparer les actifs endommagés ou les règles de réseau.

Ce que cela signifie

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

Ce que faire

Ajuster la CSP en utilisant la directive de métadonnées et les détails de l'URI bloquée.

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

Qu'est-ce qu'il faut faire

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

Qu'est-ce que cela signifie

Le processus de rendu Android WebView a quitté.

Qu'est-ce qu'il faut faire

Inspecter les signaux de crash du rendu dans les métadonnées et les journaux natifs.

Qu'est-ce que cela signifie

Le processus de contenu WebView iOS a été terminé.

What to faire

Inspectez l'ensemble 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 le système d'exploitation, la version native ou les changements de canal.

Qu'est-ce que cela signifie

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

Qu'est-ce que cela signifie

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

What cela signifie

Le dispositif a interrogé son canal actuel.

What cela signifie

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

What cela signifie

L'application a été désinstallée ou les données Capgo ont été supprimées.

  • SUCCESS: bundle d'installation terminé
  • ERROR: installation ou téléchargement échoué
  • PENDING: Téléchargement terminé, en attente de mise à jour
  • DELETED: Bundle supprimé, 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 Capgo de Cloudflare.

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 logs sur Xcode

pour trouver vos logs sur Android Studio

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

Recherche du bundle téléchargé sur un appareil

Section intitulée « Trouver le bundle téléchargé sur un appareil »

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 navigation Xcode.
  • Sélectionnez votre appareil dans la section Appareils du panneau de gauche.
  • Cela affichera une liste des applications installé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 télécharger une capture de l'état actuel.

Xcode Devices panel affichant l'option de téléchargement du conteneur d'application

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

Fichier xcappdata téléchargé avec 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, Library, tmp, etc.

Structure du dossier du conteneur d'application iOS montrant les dossiers Documents et Library

Vous trouverez ensuite une version dans 2 dossiers :

library/NoCloud/ionic_built_snapshots 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 l'appareil ou cliquez sur le bouton Explorateur de fichiers de l'appareil dans la barre des outils de fenêtre pour ouvrir l'Explorateur de fichiers de l'appareil.
  • Sélectionnez un appareil dans la liste déroulante.
  • Ouvrez le chemin data/data/APP_NAME/APP_NAME est votre ID d'application.

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

Ensuite Trouvez le versions dossier pour voir toutes les versions

Comprendre les journaux de panne de production ios

Section intitulée “Comprendre les journaux de panne de production ios”

Si vous utilisez Debugging pour planifier le travail de plugin natif, connectez-le avec Utilisation de @capgo/capacitor-mise à jour pour la capacité native dans Utilisation de @capgo/capacitor-mise à jour Capgo Répertoire du plugin pour le flux de produit dans le Répertoire de Plugin Capgo, 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 produit dans Alternatives de Plugins d'Entreprise Ionic.