Partager via


Déobfuscation Android

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.

ProGuard, DexGuard et R8 sont des outils permettant d’optimiser et d’obfusquer le code des applications Android. Il supprime le code inutilisé, renomme les classes, les champs et les méthodes avec des noms sémantiquement obscurs, réduisant ainsi la taille de la base de code et la rendant plus difficile à désassembler. Pour activer l’obfuscation avec ProGuard ou R8 dans votre application Android, suivez la documentation officielle du développeur Android.

Avec ProGuard, DexGuard ou R8 activé dans votre application Android, vos traces de pile doivent être déobfuscatées. App Center déobfusque automatiquement les traces de pile pour vos applications Android Java, Kotlin et React Native lorsque vous chargez le fichier mapping.txt créé à chaque build. Ce fichier associe les noms de classes, de méthodes et de champs d’origine aux noms obfusqués afin de rendre les traces de pile lisibles.

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

Chargement du fichier mapping.txt

Portail App Center

  1. Télécharger le mapping.txt fichier à partir du répertoire de build de votre module d’application
  2. Connectez-vous à App Center et sélectionnez votre application
  3. Dans le menu de gauche, accédez à la section Diagnostics
  4. Sélectionner Mappe
  5. Cliquez sur le bouton Charger les mappages en haut à droite
  6. Renseignez le nom de version et le code de version (ceux-ci doivent correspondre à la configuration Gradle de la build pour que le mappage fonctionne pour une build particulière)
  7. Chargez le mapping.txt fichier à partir du répertoire de build de votre module d’application.
  8. Cliquez sur le bouton Enregistrer .

App Center API

Le processus de chargement de fichiers de mappage 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 définir symbol_type sur AndroidProguard, ainsi que les propriétés build et version, qui correspondent respectivement au code de version et au nom de version, ainsi qu'à un file_name.

  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 mappage :

appcenter crashes upload-mappings --mapping {mapping file} --version-name {version name} --version-code {version code}

Remarque

App Center ne peut pas vérifier si vous avez chargé le fichier approprié mapping.txt . Nous vous recommandons de charger le fichier directement après avoir créé le fichier .apk, ou de l’envoyer (push) à votre référentiel de code si vous souhaitez le charger ultérieurement.

Transfert du mappage à partir d’une build dans App Center

Si une build est configurée pour produire un mapping.txt fichier, App Center produit le fichier comme un téléchargement disponible. Distribuer automatiquement la build ou la distribuer manuellement ultérieurement transférera le mapping.txt fichier vers Diagnostics pour déobfusquer les rapports d’incident entrants. Il n’est pas nécessaire de charger manuellement le mapping.txt fichier après avoir distribué une build.

Suppression d’un fichier de mappage

  1. Effectuez une GET demande à l’API symbols_list. Cela récupère les ID des fichiers de mappage que vous avez chargés.
  2. Effectuez une DELETE demande à l'API symbols_upload avec l'ID du fichier de mappage. Cela supprime le fichier de mappage spécifié.