Déobfuscation Android

Important

Visual Studio App Center doit être mis hors service le 31 mars 2025. Bien que vous puissiez continuer à utiliser Visual Studio App Center jusqu’à ce qu’il soit entièrement mis hors service, il existe plusieurs alternatives recommandées vers lesquelles vous pouvez envisager de migrer.

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

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, rendant la base de code plus petite et plus difficile à rétroconcevoir. 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ésobfusées. App Center désobfusque automatiquement les traces de pile pour vos applications Java, Kotlin et React Native Android lorsque vous chargez le mapping.txt fichier créé sur chaque build. Ce fichier mappe les noms de classe, de méthode et de champ d’origine aux noms obfusqués qui rendent 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 Mappages
  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 cette 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 des fichiers de mappage 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 avoir la AndroidProguardvaleur symbol_type et les buildversion propriétés correspondant respectivement au code de version et au nom de la version, ainsi qu’à .file_name

  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 demande 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 sur nos comptes de stockage back-end. En savoir plus sur les en-têtes de requête 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 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 de plus de 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.

Interface CLI d’App Center

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}

Notes

App Center ne peut pas case activée 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 le transmettre à 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, les builds App Center produisent le fichier en tant que téléchargement disponible. La distribution automatique de la build ou sa distribution manuelle ultérieure transfère le mapping.txt fichier vers Diagnostics pour désobfusquer 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 auprès de l’API symbols_list. Cela récupère les ID des fichiers de mappage que vous avez chargés.
  2. Effectuez une DELETE demande auprès de l’API symbols_upload avec l’ID de fichier de mappage. Cela supprime le fichier de mappage spécifié.