Symbolique iOS

Important

La mise hors service de Visual Studio App Center est prévue pour le 31 mars 2025. Bien que vous puissiez continuer à utiliser Visual Studio App Center jusqu’à sa mise hors service complète, il existe plusieurs alternatives recommandées vers lesquelles vous pouvez envisager la migration.

En savoir plus sur les chronologies et les alternatives de support.

Les rapports d’incident macOS, tvOS et iOS affichent les traces de pile pour tous les threads en cours d’exécution de votre application au moment où un incident s’est produit. Les traces de pile contiennent uniquement des adresses mémoire ; pas les noms de classe, les méthodes, les noms de fichiers ou les numéros de ligne nécessaires pour comprendre les incidents.

Pour obtenir les adresses mémoire traduites, vous devez charger un package dSYM dans App Center, qui contient toutes les informations requises pour la symbolique. Pour en savoir plus sur la symbolique, consultez la documentation officielle d’Apple pour les développeurs.

Le service de génération et de distribution App Center peut générer automatiquement un fichier dSYM et de carte .zip source valide, puis charger le fichier dans le service Diagnostics. Si vous utilisez App Center pour générer et distribuer automatiquement votre application à vos utilisateurs finaux, vous n’avez pas besoin d’obtenir et de charger manuellement les fichiers de symboles.

Plantages nonmbolicés

Les incidents nonmbolicés s’affichent dans la section Diagnostics d’App Center, ce qui vous permet d’afficher certains détails avant même de charger des symboles. Les symboles manquants de ces plantages s’affichent sous l’onglet « non représenté ». Si les symboles manquants sont chargés, le groupe d’incidents non imbriqué est remplacé par un groupe d’incidents symbolique.

Recherche du .dSYM bundle

  1. Dans Xcode, ouvrez le menu Fenêtre , puis sélectionnez Organisateur.
  2. Sélectionnez l’onglet Archives .
  3. Sélectionnez votre application dans la barre latérale gauche.
  4. Cliquez avec le bouton droit sur la dernière archive et sélectionnez Afficher dans le Finder.
  5. Cliquez avec le bouton droit sur le .xcarchive fichier dans finder, puis sélectionnez Afficher le contenu du package.
  6. Vous devez voir un dossier nommé dSYMs qui contient votre bundle dSYM.
  7. Créez un fichier zip du bundle dSYM.

Si vous utilisez Visual Studio au lieu de Xcode, consultez Où puis-je trouver le fichier dSYM pour symboliser les journaux d’incident iOS ? pour trouver le fichier dSYM.

Chargement de symboles

Portail App Center

  1. Connectez-vous à App Center et sélectionnez votre application.
  2. Dans le menu de gauche, accédez à la section Diagnostics et sélectionnez Symboles.
  3. Dans le coin supérieur droit, cliquez sur Charger les symboles et chargez le fichier.
  4. Une fois les symboles indexés par App Center, les incidents sont symboliques pour vous.

React Native applications iOS

Pour obtenir des fichiers de symboles pour React Native des fichiers iOS, créez un fichier ZIP avec le package dSYM sur votre Mac et la carte source JavaScript de votre application. Le mappage source doit être nommé index.ios.map. Les commandes ci-dessous génèrent le mappage source pour les builds de mise en production :

react-native bundle --entry-file index.ios.js --platform ios --dev false --reset-cache --bundle-output unused.jsbundle --sourcemap-output index.ios.map

App Center API

Le processus de chargement des symboles via l’API implique une série de trois appels d’API : un pour allouer de l’espace sur notre back-end, un pour charger le fichier et un pour mettre à jour la status du chargement. Le corps du premier appel d’API doit être défini sur symbol_typeApple.

  1. Déclenchez une POST demande à l’API symbol_uploads. Cet appel alloue de l’espace sur notre back-end pour votre fichier et retourne une symbol_upload_id propriété et une upload_url .
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. À l’aide de la upload_url propriété retournée à la première étape, effectuez une PUT requête avec l’en-tête : "x-ms-blob-type: BlockBlob" et indiquez l’emplacement de votre fichier sur le disque. Cet appel charge le fichier dans nos comptes de stockage back-end. En savoir plus sur les en-têtes de requête PUT Blob .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Effectuez une PATCH requête auprès de l’API symbol_uploads à l’aide de la symbol_upload_id propriété retournée à la première étape. Dans le corps de la demande, spécifiez si vous souhaitez définir le status du chargement sur committed (terminé avec succès) le processus de chargement, ou aborted (sans succès).
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

Notes

L’API de chargement de symboles ne fonctionne pas pour les fichiers dont la taille est supérieure à 256 Mo. Utilisez l’interface CLI App Center pour charger ces fichiers. Vous pouvez installer l’interface CLI App Center en suivant les instructions de notre dépôt CLI App Center.

App Center CLI

Vous pouvez également utiliser l’interface CLI pour charger des fichiers de symboles :

appcenter crashes upload-symbols --symbol {symbol file}

Code binaire

Le code binaire a été introduit par Apple pour permettre aux applications envoyées à l’App Store d’être recompilées par Apple lui-même et d’appliquer la dernière optimisation. Si bitcode est activé, les symboles générés pour votre application dans le Store seront différents de ceux de votre propre système de génération.

Les rapports d’incidents App Center ne prennent pas encore entièrement en charge la symbolique des incidents provenant d’applications prenant en charge le code binaire. En attendant, nous vous conseillons de désactiver le code binaire. La désactivation du code binaire simplifie considérablement la gestion des symboles et n’a actuellement aucun inconvénient connu pour les applications iOS.

Désactiver le code binaire pour votre application

  1. Dans Xcode, ouvrez les paramètres de votre projet en cliquant sur l’élément de niveau supérieur dans le Navigateur de projet
  2. Accédez à la page Paramètres de build
  3. Rechercher bitcode
  4. Dans le résultat, remplacez la valeur oui par non.
  5. Reconstruire votre application

Avec ces étapes simples, les rapports d’incident App Center se comportent comme d’habitude.

Récupérer des symboles pour les applications compatibles avec le code binaire

Si vous souhaitez conserver le code binaire activé, vous pouvez télécharger les fichiers dSYM appropriés en procédant comme suit :

  1. Ouvrir l’organisateur du Xcode
  2. Sélectionnez l’archive spécifique de votre application que vous avez chargée sur iTunes Connect
  3. Cliquez sur le bouton « Télécharger dSYMs ». Cette étape insère les fichiers dSYM compilés bitcode dans l’archive d’origine.
  4. Charger les symboles dans l’application et la version correspondantes dans App Center

Si l’organisateur Xcode ne fournit pas de nouveaux symboles, vous devez télécharger les fichiers dSYM à partir du portail iTunes Connect en procédant comme suit :

  1. Sélectionnez votre application dans le portail iTunes Connect
  2. Sélectionnez l’onglet Activité en haut
  3. Sélectionnez la version de build de votre application qui contient les symboles manquants
  4. Cliquez sur le lien Télécharger dSYM
  5. Chargez le fichier téléchargé dans App Center. Ce fichier contient les symboles requis pour qu’App Center symbolise vos incidents.

Résolution des problèmes de symboles

Si vos blocages semblent toujours non codés après le chargement des symboles et la désactivation du code binaire, cela peut être dû au fait que les fichiers dSYM chargés ne correspondent pas à ceux requis par App Center. Lorsque vous chargez des fichiers dSYM, App Center les met en correspondance avec la version d’application appropriée en fonction de leurs UUID.

Vous pouvez doubler case activée si vos fichiers dSYM disposent des UUID appropriés à l’aide d’un outil CLI appelé dwarfdump.

  1. Recherchez l’UUID dans le fichier dSYM :
dwarfdump --u CrashProbeiOS.app.dSYM
  1. Le résultat doit être similaire à celui-ci :
UUID:ADF53C85-4638-3EFF-A33C-42C13A18E915 (armv7)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
UUID:D449E33D-7E74-379D-8B79-15EE104ED1DF (arm64)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
  1. Double case activée si l’UUID retourné correspond aux UUID affichés dans la boîte de dialogue symboles de débogage :

App Center affiche l’UUID des symboles requis

Ignorer les symboles

Quand App Center ne dispose pas de tous les fichiers de symboles pour symboliser entièrement les rapports d’incidents, les incidents sont répertoriés sous l’onglet Nonmbolicé . Les symboles requis sont chargés à partir de cette page si vous y avez accès.

Si vous ne pouvez pas charger les symboles, vous pouvez les marquer comme ignorés en sélectionnant des lignes dans le tableau et en cliquant sur le bouton Ignorer les versions . Ce bouton indique à App Center de traiter les incidents et de les symboliquer aussi complètement que possible avec les symboles dans le fichier. Une fois le traitement terminé, ils s’affichent dans l’onglet Incidents partiellement symboliques. Les nouveaux incidents qui dépendent également de ces MÊMES ID de symboles marqués comme ignorés contournent l’onglet Nonmbolicé à mesure qu’ils entrent et transitent par le système.