Partager via


Android NDK

Important

Visual Studio App Center a été mis hors service le 31 mars 2025, à l’exception des fonctionnalités d’analyse et de diagnostic, qui continueront d’être prises en charge jusqu’au 30 juin 2026. En savoir plus.

Android NDK vous permet d’implémenter des parties de vos applications Android à l’aide de C et C++. Vous pouvez utiliser la bibliothèque client Google Breakpad pour vos applications Android afin de recevoir des traces de pile valides dans le code natif. Les traces de pile peuvent ne contenir que 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 NDK Android, vous devez charger des symboles d’application pour chaque build.

Pour savoir comment signaler des plantages de NDK, reportez-vous à la documentation du Kit de développement logiciel (SDK) Android pour les applications Android ou à la documentation du SDK Unity pour les applications Unity.

Si vous souhaitez envoyer des rapports de crash de Breakpad à partir d’autres plateformes vers App Center, consultez la documentation sur le téléchargement des crashs personnalisés.

Plantages non symboliqués

Les blocages nonmbolicés s’affichent dans la section Diagnostics App Center afin de pouvoir afficher certains détails avant de charger des symboles. Les symboles manquants de ces incidents s'affichent sous l'onglet « non symboliqués ». Si les symboles manquants sont chargés, le groupe d'incidents non symboliqués est remplacé par un groupe d'incidents symboliques.

Remarque

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

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 du Bloc-notes.

Option 1 : Charger des fichiers binaires natifs

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

Option 2 : Télécharger les symboles Breakpad

  1. Exporter les symboles à l’aide de la chaîne d’outils Breakpad, comme décrit dans la documentation Breakpad sous la section « Obtenir les symboles de débogage ».
  2. Créez un fichier symbols.zip avec la structure suivante :

Remarque

Si vous téléchargez vos symboles depuis un système macOS, vous devez nettoyer vos symboles de tous les dossiers superflus, comme le dossier __MACOS qui est généré automatiquement. 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

Remarque

Le service de génération et de distribution App Center peut transférer automatiquement des 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é de plantage, vous devez utiliser l’API ou le CLI pour télécharger les symboles Breakpad.
  4. Si votre application a déjà signalé des blocages nécessitant des symboles, cochez l’onglet Nonmbolicé et il doit y avoir un groupe de versions avec des symboles manquants, cliquez dessus pour afficher le menu pour charger le fichier.
  5. Une fois les symboles indexés par App Center, les incidents seront symboliques pour vous.

App Center API

Le processus de chargement de symboles via l’API implique une série de trois appels d’API : un pour allouer de l’espace sur notre serveur principal, un pour charger le fichier et un pour mettre à jour l’état du chargement. Le corps du premier appel d’API doit être défini symbol_type sur Breakpad.

  1. Déclenchez une POST requête à l’API symbol_uploads. Cet appel alloue de l'espace sur notre backend pour votre fichier et retourne une propriété symbol_upload_id et une propriété 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 à partir de la première étape, effectuez une PUT demande avec l’en-tête : "x-ms-blob-type: BlockBlob" et fournissez 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 demande d’objet blob PUT.
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Effectuez une PATCH demande à l’API symbol_uploads à l’aide de la symbol_upload_id propriété retournée à partir de la première étape. Dans le corps de la demande, spécifiez si vous souhaitez définir l’état du chargement committed sur (terminé avec succès) le processus de chargement ou aborted (non terminé).
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" }'

Remarque

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 référentiel 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 n’a pas tous les fichiers de symboles pour symboliquer entièrement les rapports d’incident, les incidents sont répertoriés sous l’onglet Non symboliqués. Les symboles requis peuvent être téléchargés depuis 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 crashs et de les analyser autant que possible avec les symboles disponibles. Une fois leur traitement terminé, ils apparaissent dans l’onglet Blocages partiellement symboliques. De nouveaux plantages qui dépendent également de ces mêmes ID de symboles marqués comme ignorés contourneront l'onglet Non-symbolisé au moment où ils se produisent et transitent par le système.