Native Symbole in den Release-Build einbinden

Standardmäßig werden in Release-Builds Ihrer App native Codebibliotheken entfernt. Dabei werden die Symboltabelle und die Informationen zur Fehlerbehebung entfernt, die in allen von Ihrer App verwendeten nativen Bibliotheken enthalten sind. Das Entfernen von nativen Codebibliotheken führt zu einer erheblichen Größeneinsparung. Aufgrund der fehlenden Informationen (z. B. Klassen- und Funktionsnamen) ist es jedoch nicht möglich, Abstürze in der Google Play Console zu diagnostizieren. Wenn Sie Abstürze beheben möchten, müssen Sie in der Play Console eine Datei mit Debugsymbolen für Ihre App angeben.

Symboldatei hochladen

In der Google Play Console werden native Abstürze unter Android-Vitals erfasst. Mit wenigen Schritten können Sie eine Datei mit nativen Debugsymbolen für Ihre App generieren und hochladen. Diese Datei ermöglicht symbolische native Absturz-Stack-Traces (mit Klassen- und Funktionsnamen) in Android Vitals, um Ihnen beim Debuggen Ihrer App in der Produktion zu helfen. Diese Schritte variieren je nach Version des Android Gradle-Plug-ins, das in Ihrem Projekt verwendet wird, und je nachdem, ob Sie ein Android App Bundle (empfohlen) oder ein APK verwenden.

Android-Gradle-Plug-in ab Version 4.1

Wenn Sie Ihr Projekt als Android App Bundle (AAB) erstellen, können Sie Ihren Build so konfigurieren, dass die native Debugging-Symboldatei automatisch in das AAB aufgenommen wird, damit sie beim Veröffentlichen Ihrer App in die Play Console hochgeladen wird. Wenn Sie diese Datei in Release-Builds einbeziehen möchten, fügen Sie der build.gradle.kts-Datei Ihrer App Folgendes hinzu:

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

Wählen Sie die Debugsymbolebene aus:

  • Mit SYMBOL_TABLE können Sie Funktionsnamen in den symbolischen Stack-Traces der Play Console abrufen. Diese Ebene unterstützt Tombstones.
  • Mit FULL können Sie Funktionsnamen, Dateien und Zeilennummern in den symbolischen Stacktraces der Play Console abrufen.

Wenn Sie Ihr Projekt als Android App Bundle erstellen, verwenden Sie die oben gezeigte Einstellung android.buildTypes.release.ndk.debugSymbolLevel, um die native Debugging-Symboldatei separat zu generieren. Laden Sie die Datei mit Symbolen zum Debuggen von nativem Code manuell in die Google Play Console hoch. Das Verfahren ähnelt dem Hochladen einer Zuordnungsdatei zum Entfernen von Obfuscation aus Stacktraces. Im Rahmen des Build-Prozesses gibt das Android-Gradle-Plug-in diese Datei am folgenden Projektspeicherort aus:

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

Android-Gradle-Plug-in in der Version 4.0 oder niedriger (und andere Build-Systeme)

Im Rahmen des Build-Prozesses speichert das Android-Gradle-Plug-in eine Kopie der Bibliotheken mit Debugging-Symbolen in einem Projektverzeichnis. Diese Verzeichnisstruktur sieht in etwa so aus:

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. Komprimieren Sie den Inhalt dieses Verzeichnisses:

    cd app/build/intermediates/cmake/universal/release/obj
    zip -r symbols.zip .
    
  2. Laden Sie die symbols.zip-Datei manuell in die Google Play Console hoch.