Débrouiller ou symboliser les suivis de la pile de plantages

Les plantages et les erreurs ANR sur Android produisent un suivi de la pile, qui est un aperçu de la séquence de fonctions imbriquées appelée dans votre programme jusqu'au moment où celui-ci a planté. Ces aperçus vous permettent de déterminer tout problème dans la source et de le corriger.

Si votre application ou votre jeu a été développé à l'aide de Java, et si vous utilisez ProGuard pour optimiser et brouiller votre application, vous pouvez téléverser un fichier de mappage ProGuard pour chaque version de votre application dans Play Console. Si votre application ou votre jeu a été développé à l'aide de code natif, comme C++, vous pouvez téléverser un fichier de symboles de débogage pour chaque version de votre application dans Play Console. Cela facilite l'analyse et la correction des plantages et des erreurs ANR.

Important : Seuls les fichiers de mappage compatibles avec ReTrace sont actuellement pris en charge dans le cadre du débrouillage d'applications compilées dans Java. Il s'agit du même format utilisé par ProGuard ou R8.

Étape 1 : Générer un fichier de débrouillage ou de symbolisation

Pour débrouiller ou symboliser les plantages et les ANR d'une version de votre application, vous devez d'abord générer les fichiers requis pour la même version de votre application. Vous devez générer et téléverser un fichier pour chaque nouvelle version de votre application pour que le débrouillage ou la symbolisation fonctionne.

Java : générer un fichier de mappage ProGuard

Pour débrouiller les suivis de la pile Java, vous devez d'abord générer un fichier de mappage ProGuard. Pour en savoir plus, accédez au site Google Developers.

Natif : générer un fichier de symboles de débogage

Plugiciel Android Gradle version 4.1 et versions ultérieures

Si votre projet conçoit un fichier Android App Bundle, vous pouvez automatiquement y inclure le fichier de symboles de débogage. Pour y inclure ce fichier, ajoutez ce qui suit au fichier build.gradle de votre application :

  • android.defaultConfig.ndk.debugSymbolLevel = 'FULL'

Remarque : La limite du fichier de symboles de débogage est de 800 Mo. Si l'empreinte de vos symboles de débogage est trop importante, utilisez SYMBOL_TABLE au lieu de FULL pour réduire la taille du fichier.

Si votre projet conçoit un fichier APK, utilisez le paramètre de conception build.gradle ci-dessus pour générer le fichier de symboles de débogage séparément. Téléversez manuellement le fichier de symboles de débogage dans Google Play Console, comme décrit ci-dessous à l'Étape 2 : Téléverser un fichier de débrouillage ou de symbolisation. Dans le cadre du processus de conception, le plugiciel Android Gradle génère ce fichier à l'emplacement du projet suivant :

  • app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip

Plugiciel Android Gradle version 4.0 et versions antérieures (et autres systèmes de conception)

Dans le cadre du processus de conception d'une collection d'applications ou d'un fichier APK, le plugiciel Android Gradle conserve une copie des bibliothèques non simplifiées dans un répertoire de projet. Ce répertoire suit une structure semblable à celle-ci :

app/build/intermediates/cmake/universal/release/obj

├── armeabi-v7a/

│   ├── libgamenegine.so

│   ├── libothercode.so

│   └── libvideocodec.so

├── arm64-v8a/

│   ├── libgamenegine.so

│   ├── libothercode.so

│   └── libvideocodec.so

├── x86/

│   ├── libgamenegine.so

│   ├── libothercode.so

│   └── libvideocodec.so

└── x86_64/

    ├── libgameengine.so

    ├── libothercode.so

    └── libvideocodec.so

Remarque : Si vous utilisez un système de conception différent, vous pouvez le modifier pour stocker les bibliothèques non simplifiées dans un répertoire présentant la structure requise ci-dessus.

  1. Compressez le contenu de ce répertoire :
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. Téléversez manuellement le fichier symbols.zip dans Play Console, comme décrit ci-dessous à l'Étape 2 : Téléverser un fichier de débrouillage ou de symbolisation.

La limite du fichier de symboles de débogage est de 800 Mo. Si votre fichier est trop volumineux, il est probable que vos fichiers en format .so contiennent un tableau de symboles (noms de fonctions) ainsi que des données de débogage DWARF (noms de fichiers et lignes de code). Ceux-ci ne sont pas nécessaires pour symboliser votre code et peuvent être supprimés grâce à l'exécution de la commande suivante :

  • $OBJCOPY --strip-debug lib.so lib.so.sym

Remarque : $OBJCOPY pointe vers la version particulière de l'ABI que vous simplifiez, par exemple : ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy

Étape 2 : Téléverser un fichier de débrouillage ou de symbolisation

Pour débrouiller ou symboliser les plantages et les ANR d'une version de votre application, vous devez téléverser les fichiers de débrouillage et de symbolisation pour chaque version de votre application.

Important : Cette étape n'est requise que pour les concepteurs utilisant des fichiers APK. Si vous utilisez une collection d'applications et un plugiciel Android Gradle version 4.1 ou une version ultérieure, vous n'avez rien à faire. Nous récupérerons automatiquement le fichier de débrouillage de la collection, et vous pouvez passer à l'Étape 3 : Afficher les suivis débrouillés de la pile de plantages. Vous pouvez en savoir plus sur les collections d'applications sur le site des concepteurs Android.

Téléverser des fichiers à l'aide de Play Console

Pour téléverser un fichier de débrouillage ou de symbolisation, procédez comme suit :

  1. Ouvrez Play Console.
  2. Sélectionnez une application.
  3. Dans le menu de gauche, sélectionnez Version > Explorateur de collections d'applications.
  4. À l'aide du sélecteur dans la partie supérieure droite de l'écran, sélectionnez l'artefact approprié.
  5. Sélectionnez l'onglet Téléchargements et faites défiler vers le bas jusqu'à la section « Éléments ».
  6. Cliquez sur la flèche de téléversement du fichier de mappage ou des symboles de débogage, selon le cas, pour téléverser le fichier de débrouillage ou de symbolisation de la version de votre application.
Téléverser des fichiers à l'aide de l'API Google Play Developer

Pour téléverser des fichiers à l'aide de l'API Google Play Developer, accédez au site Google Developers.

Étape 3 : Afficher les suivis débrouillés de la pile de plantages

Après que vous avez téléversé un fichier de mappage ProGuard ou un fichier de symboles de débogage pour une version de votre application, les plantages et les ANR qui se produisent par la suite seront débrouillés. Vous pouvez consulter les suivis débrouillés de la pile relatifs à chaque plantage et ANR sur la page Plantages et ANR de votre application.

  1. Ouvrez Play Console.
  2. Sélectionnez une application.
  3. Dans le menu de gauche, sélectionnez Qualité > Android Vitals > Plantages et ANR.
  4. Sélectionnez un plantage.
  5. Vos suivis débrouillés et symbolisés de la pile s'afficheront dans la section « Suivis de la pile ».

Important : Une fois que vous avez téléversé un fichier de mappage pour une version de votre application, seuls les plantages et les ANR futurs pour cette version de votre application seront débrouillés. Les plantages et les ANR d'une version de votre application qui se produisent avant le téléversement de son fichier de mappage respectif ne seront pas débrouillés.

Foire aux questions

Je ne souhaite pas utiliser le débrouillage ni la symbolisation de Play Console. Puis-je simplement le faire hors ligne?

Play Console utilise ndk-stack pour symboliser les suivis de la pile pour les applications natives et ReTrace pour les plantages Java. Si vous choisissez de ne pas partager vos fichiers de débrouillage, vous pouvez copier les piles de plantages brouillées à partir de Play Console et utiliser l'outil hors ligne approprié pour les symboliser. Cependant, ce processus doit être effectué manuellement pour chaque pile de plantage, ce qui prend du temps et rend l'opération lente. Si vous fournissez vos fichiers de débrouillage, Play Console s'occupera de ce processus à votre place.

J'ai téléversé le fichier de débrouillage ou de symbolisation, alors pourquoi les erreurs ANR et les plantages sont-ils toujours brouillés?

Après que vous avez téléversé un fichier de mappage ProGuard ou un fichier de symboles de débogage pour une version de votre application, seuls les erreurs ANR et les plantages qui se produisent par la suite seront débrouillés. Vous devrez donner le temps aux appareils des utilisateurs de signaler les nouvelles erreurs ANR et les nouveaux plantages avant de voir de nouvelles erreurs ANR et de nouveaux plantages débrouillés dans Play Console.

Après le téléversement du fichier de débrouillage ou de symbolisation, pourquoi les erreurs ANR et les plantages ne sont-ils que partiellement débrouillés?

Cela est dû au téléversement d'un fichier de débrouillage ou de symbolisation incomplet. Assurez-vous d'inclure les fichiers de symbolisation pour l'ensemble de votre application, surtout si vous utilisez un processus de conception complexe ou en plusieurs étapes. L'une des raisons les plus courantes de débrouillage partiel tient au fait que vous utilisez une bibliothèque tierce. Dans ce cas, vous pouvez peut-être obtenir les fichiers de débrouillage auprès du fournisseur de la bibliothèque.

Après que j'ai téléversé le fichier de débrouillage ou de symbolisation, pourquoi ai-je l'impression que le nombre de plantages et d'ANR est moins élevé, mais que ceux-ci sont plus graves?

Sans fichiers de débrouillage, le même plantage ou ANR qui se produit sur un appareil 32 bits et 64 bits, ou sur un appareil ARM et Intel s'affichera séparément. En fournissant des fichiers de débrouillage, nous pouvons regrouper ces plantages. Cela vous permet d'avoir une meilleure vue d'ensemble des plantages et des ANR les plus importants relatifs à votre application.

Que se passe-t-il si j'oublie de téléverser le fichier?

Si vous oubliez de téléverser le fichier pour une nouvelle version de votre application, les plantages et les ANR seront de nouveau brouillés. Suivez les instructions ci-dessus pour le téléverser maintenant. Après que vous avez téléversé un fichier de mappage ProGuard ou un fichier de symboles de débogage pour une version de votre application, seuls les plantages et les ANR qui se produisent par la suite seront débrouillés. Vous devrez donner le temps aux appareils des utilisateurs de signaler les nouveaux plantages et les nouvelles ANR avant de voir les ANR et les plantages débrouillés dans Play Console.

Pour éviter le risque d'oublier de téléverser le fichier, envisagez de modifier votre processus de conception de manière à utiliser les collections d'applications avec le plugiciel Android Gradle version 4.1 ou avec une version ultérieure. Dans ce cas, vous pouvez automatiquement inclure le fichier de symboles de débogage dans la collection d'applications en suivant les instructions sur le site des concepteurs Android.

Que se passe-t-il si je téléverse le mauvais fichier?

Si vous téléversez le mauvais fichier pour une version de votre application, les plantages et les ANR seront de nouveau brouillés. Pour téléverser une version corrigée, procédez comme suit :

  1. Ouvrez Play Console.
  2. Sélectionnez une application.
  3. Dans le menu de gauche, sélectionnez Version > Explorateur de collections d'applications
  4. À l'aide du sélecteur dans la partie supérieure droite de l'écran, sélectionnez l'artefact approprié.
  5. Sélectionnez l'onglet Téléchargements et faites défiler vers le bas jusqu'à la section « Éléments ».
  6. Cliquez sur l'icône de suppression à côté du fichier de débrouillage ou de symbolisation incorrect.
  7. Une fois que vous avez supprimé la version incorrecte, cliquez sur l'icône de téléversement et téléversez le bon fichier pour la version de votre application.

Après que vous avez téléversé le bon fichier de mappage ProGuard ou le bon fichier de symboles de débogage pour une version de votre application, seuls les ANR et les plantages qui se produisent par la suite seront débrouillés. Vous devrez donner le temps aux appareils des utilisateurs de signaler les nouvelles ANR et les nouveaux plantages avant de voir les ANR et les plantages débrouillés dans Play Console.

Astuce : Pour éviter le risque de téléverser une mauvaise version du fichier, envisagez de modifier votre processus de conception de manière à utiliser les collections d'applications avec le plugiciel Android Gradle version 4.1 ou avec une version ultérieure. Dans ce cas, vous pouvez automatiquement inclure le fichier de symboles de débogage dans la collection d'applications en suivant les instructions sur le site des concepteurs Android.

J'utilise actuellement des fichiers APK. Comment passer à l'utilisation de collections d'applications?

Visitez le site des concepteurs Android pour commencer.

Mon application contient du code natif et Java. Puis-je téléverser un fichier de symbolisation natif ainsi qu'un fichier de débrouillage Java?

Oui.

Pourquoi certaines ANR n'affichent-elles pas un suivi de la pile?

Il arrive que le système rencontre une ANR, mais qu'il soit incapable de collecter le suivi de la pile. Dans ce cas, l'ANR s'affiche pour vous donner un aperçu plus complet de la stabilité de votre application, mais le suivi de la pile lui-même ne peut pas s'afficher. Les ANR sans suivi de la pile sont regroupées par type et par activité, de sorte que l'examen et la correction d'ANR similaires peuvent contribuer à réduire le nombre d'ANR sans suivi de la pile.

Cela a-t-il été utile?

Comment pouvons-nous améliorer cette page?

Besoin d'aide supplémentaire?

Essayez les étapes suivantes :

Rechercher
Effacer les termes de recherche
Fermer le champ de recherche
Menu principal
723536316287380959
true
Rechercher dans le Centre d'aide
true
true
true
true
true
92637
false
false