Inclure des symboles natifs dans votre build de version

Par défaut, les bibliothèques de code natif sont supprimées dans les builds de votre application. Cette suppression consiste à supprimer la table des symboles et les informations de débogage contenues dans les bibliothèques natives utilisées par votre application. La suppression des bibliothèques de code natif permet de réduire considérablement la taille. Toutefois, il est impossible de diagnostiquer les plantages dans la Google Play Console en raison des informations manquantes (telles que les noms de classe et de fonction). Pour déboguer les plantages, vous devez inclure un fichier de symboles de débogage avec votre application dans la Play Console.

Importer un fichier de symboles

La Google Play Console signale les plantages natifs sous Android Vitals. Il suffit de quelques étapes pour générer et importer un fichier de symboles de débogage natif pour votre application. Ce fichier active des traces de pile de plantage natif décodées (contenant les noms des classes et des fonctions) dans Android Vitals pour vous aider à déboguer votre application en production. Ces étapes varient en fonction de la version du plug-in Android Gradle utilisé dans votre projet et si vous utilisez un Android App Bundle (recommandé) ou un APK.

Plug-in Android Gradle 4.1 ou version ultérieure

Si votre projet compile un Android App Bundle (AAB), vous pouvez configurer votre compilation pour qu'elle inclue automatiquement le fichier de symboles de débogage natif dans l'AAB afin qu'il soit importé dans la Play Console lorsque vous publiez votre application. Pour inclure ce fichier dans les builds de version, ajoutez ce qui suit au fichier build.gradle.kts de votre application:

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }

Sélectionnez l'un des niveaux de décodage suivants :

  • Utilisez SYMBOL_TABLE pour obtenir les noms des fonctions dans les traces de pile décodées de la Play Console. Ce niveau prend en charge les Tombstones.
  • Utilisez FULL pour obtenir les noms des fonctions, les fichiers et les numéros de ligne dans les traces de pile décodées de la Play Console.

Si votre projet compile un APK, utilisez le paramètre android.buildTypes.release.ndk.debugSymbolLevel présenté précédemment pour générer séparément le fichier de symboles de débogage natif. Importez manuellement le fichier de symboles de débogage natif dans la Google Play Console (le processus est semblable à l'importation d'un fichier de mappage pour désobscurcir les traces de la pile). Dans le cadre du processus de compilation, le plug-in Android Gradle génère ce fichier à l'emplacement de projet suivant:

app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip

Plug-in Android Gradle 4.0 ou version antérieure (et autres systèmes de compilation)

Dans le cadre du processus de compilation, le plug-in Android Gradle conserve une copie des bibliothèques intactes dans un répertoire de projet. Cette structure de répertoire est semblable à ceci:

app/build/intermediates/cmake/universal/release/obj/
├── armeabi-v7a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── arm64-v8a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── x86/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
└── x86_64/
    ├── libgameengine.so
    ├── libothercode.so
    └── libvideocodec.so
  1. Compressez le contenu de ce répertoire :

    cd app/build/intermediates/cmake/universal/release/obj
    zip -r symbols.zip .
    
  2. Importez manuellement le fichier symbols.zip dans la Google Play Console.