Partager via


Kit de développement natif (NDK) Android

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.

Android NDK vous permet d’implémenter des parties de vos applications Android en C et C++. Vous pouvez utiliser la bibliothèque de client Google Breakpad pour vos applications Android afin de recevoir des traces de pile valides dans du code natif. Les traces de pile peuvent contenir uniquement des adresses mémoire. Ils n’affichent pas les noms de classes, les méthodes, les noms de fichiers et les numéros de ligne nécessaires pour lire et comprendre les incidents. Pour obtenir les adresses mémoire traduites pour votre application Android NDK, vous devez charger des symboles d’application pour chaque build.

Pour savoir comment signaler des incidents NDK, reportez-vous à la documentation du SDK Android pour les applications Android ou à la documentation du SDK Unity pour les applications Unity.

Si vous souhaitez envoyer des incidents de bloc d’arrêt à partir d’autres plateformes à App Center, consultez la documentation sur le chargement des incidents personnalisés.

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.

Notes

App Center ne prend pas en charge la symbolique des images provenant de bibliothèques système. Étant donné la fragmentation élevée des fichiers binaires système pour Android et d’autres plateformes , qui peuvent être différentes sur une combinaison de version de l’appareil/du système d’exploitation donnée, App Center ne fournit pas de symboles lui-même pour les fichiers binaires système et ignore automatiquement les images des binaires système dans la symbolique.

Générer un fichier .zip à charger

Il existe deux façons pour App Center de récupérer les symboles nécessaires à la symbolique. App Center peut les générer à partir des fichiers binaires natifs utilisés dans votre projet, ou vous pouvez charger directement les symboles breakpad.

Option 1 : Charger des fichiers binaires natifs

Placez tous les fichiers .so du répertoire du obj/local/$ABI/ projet dans un fichier .zip.

Option 2 : Charger les symboles du bloc-arrêt

  1. Videz les symboles à l’aide de la chaîne d’outils breakpad, comme décrit dans la documentation du bloc-arrêt sous la section « Obtenir les symboles de débogage ».
  2. Créez un fichier symbols.zip avec la structure suivante :

Notes

Si vous chargez vos symboles à partir de macOS, vous devez propre vos symboles de tous les dossiers superflus, par exemple, __MACOS est généré et, pour le supprimer, vous pouvez utiliser zip -d <symbols.zip> __MACOSX/\*.

$ unzip -l symbols.zip
Archive:  symbols.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  07-22-13 15:07   symbols/
        0  07-22-13 15:07   symbols/libnative.so/
        0  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/
    12468  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/libnative.so.sym
        0  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/
    12467  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/libnative.so.sym
 --------                   -------
    24935                   6 files

Chargement de symboles

Notes

Le service de génération et de distribution App Center peut transférer automatiquement les symboles au 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, comme indiqué dans les étapes ci-dessous.

Portail App Center

  1. Connectez-vous à App Center et sélectionnez votre application.
  2. Dans le menu de gauche, accédez à la section Diagnostics , puis Problèmes.
  3. Si votre application n’a pas encore signalé d’incident, vous devez utiliser l’API ou l’interface CLI pour charger les symboles du bloc-arrêt.
  4. Si votre application a déjà signalé des incidents nécessitant des symboles, case activée l’onglet Nonmbolicé et qu’il doit y avoir un groupe de versions avec des symboles manquants, cliquez dessus pour afficher le menu permettant de charger le fichier.
  5. Une fois les symboles indexés par App Center, les incidents sont symboliques pour vous.

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_typeBreakpad.

  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 --breakpad {symbols file}

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.