Offenlegung oder Symbolication von Absturz-Stacktraces

Abstürze und ANRs unter Android generieren einen Stacktrace. Das ist ein Snapshot der Reihenfolge der verschachtelten Funktionen, die in Ihrem Programm bis zum Absturz aufgerufen wurden. Mit diesen Snapshots können Sie Probleme in der Quelle identifizieren und beheben.

Wenn Ihre App oder Ihr Spiel mit Java entwickelt wurde und Sie Ihre APK-Dateien mit ProGuard optimieren und verschleiern, können Sie für jede Version der App in der Play Console eine ProGuard-Zuordnungsdatei hochladen. Enthält Ihre App oder Ihr Spiel nativen Code wie C++, können Sie in der Play Console für jede App-Version eine Debugging-Symboldatei hochladen. Dadurch lassen sich Abstürze und ANRs leichter analysieren und beheben.

Wichtig: Zur Offenlegung von in Java kompilierten Apps werden nur mit ReTrace kompatible Zuordnungsdateien unterstützt. Das ist dasselbe Format, das auch von ProGuard oder R8 verwendet wird.

Schritt 1: Offenlegungs- oder Symboldatei generieren

Für die Offenlegung oder Symbolication der Abstürze und ANRs für eine Version Ihrer App müssen Sie zuerst die erforderlichen Dateien für diese Version der App generieren. Damit die Offenlegung oder Symbolication funktioniert, müssen Sie für jede neue Version Ihrer App eine Datei generieren und hochladen.

Java: ProGuard-Zuordnungsdatei generieren

Zur Offenlegung von Java-Stacktraces müssen Sie zuerst eine ProGuard-Zuordnungsdatei generieren. Weitere Informationen finden Sie auf der Google Developers-Website.

Nativ: Debugging-Symboldatei generieren

Android-Gradle-Plug-in ab Version 4.1

Wenn Sie Ihr Projekt als Android App Bundle erstellen, können Sie die Debugging-Symboldatei automatisch darin aufnehmen lassen. Dazu fügen Sie der Datei build.gradle Ihrer App Folgendes hinzu:

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

Hinweis: Die Debugging-Symboldatei darf nicht größer als 300 MB sein. Wenn die Symbole zum Debuggen zu groß sind, verwenden Sie SYMBOL_TABLE anstelle von FULL, um die Dateigröße zu verringern.

Wenn Sie Ihr Projekt als Android App Bundle erstellen, verwenden Sie die obige Build-Einstellung "build.gradle", um die Debugging-Symboldatei separat zu generieren. Laden Sie die Debugging-Symboldatei manuell in die Google Play Console hoch, wie in Schritt 2: Offenlegungs- oder Symboldatei hochladen beschrieben. Im Rahmen des Build-Prozesses gibt das Android-Gradle-Plug-in diese Datei am folgenden Projektspeicherort aus:

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

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

Im Rahmen des Build-Prozesses für ein APK oder Android App Bundle speichert das Android-Gradle-Plug-in eine Kopie der Bibliotheken mit Debugging-Symbolen in einem Projektverzeichnis. Dieses Verzeichnis hat eine ähnliche Struktur wie diese:

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

Hinweis: Wenn Sie ein anderes Build-System verwenden, können Sie es so ändern, dass Bibliotheken mit Debugging-Symbolen zwingend in einem Verzeichnis mit der oben genannten Struktur gespeichert werden.

  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 Play Console hoch, wie in Schritt 2: Offenlegungs- oder Symboldatei hochladen beschrieben.

Die Debugging-Symboldatei darf nicht größer als 300 MB sein. Wenn Ihre Datei zu groß ist, liegt das wahrscheinlich daran, dass Ihre .so-Dateien eine Symboltabelle (Funktionsnamen) und zusätzlich DWARF-Informationen zum Debuggen (Dateinamen und Codezeilen) enthalten. Diese sind für die Symbolication des Codes nicht erforderlich und können mit dem folgenden Befehl entfernt werden:

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

Hinweis: $OBJCOPY verweist auf die spezifische Version für das ABI, das Sie entfernen, z. B. ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy

Schritt 2: Offenlegungs- oder Symboldatei hochladen

Für die Offenlegung oder Symbolication der Abstürze und ANRs für eine Version Ihrer App müssen Sie zuerst die erforderlichen Dateien für jede Version der App hochladen.

Wichtig: Dieser Schritt ist nur erforderlich, wenn Sie APKs verwenden. Wenn Sie ein Android App Bundle und ein Android-Gradle-Plug-in in der Version 4.1 oder höher verwenden, müssen Sie nichts weiter tun. Die Offenlegungsdatei wird automatisch aus dem Bundle abgerufen und Sie können mit Schritt 3: Offengelegte Absturz-Stacktraces anzeigen fortfahren. Weitere Informationen zu App Bundles finden Sie auf der Website für Android-Entwickler.

Dateien über die Play Console hochladen

So laden Sie eine Offenlegungs- oder Symboldatei hoch:

  1. Öffnen Sie die Play Console.
  2. Wählen Sie eine App aus.
  3. Wählen Sie im Menü links Release > Geräte und Versionen > App Bundle Explorer aus.
  4. Wählen Sie oben rechts das entsprechende Artefakt aus.
  5. Gehen Sie zum Tab Downloads und scrollen Sie nach unten zum Abschnitt "Inhalte".
  6. Klicken Sie auf den Pfeil zum Hochladen, um die Zuordnungsdatei oder die Debugging-Symboldatei für die Version Ihrer App hochzuladen.
Dateien mithilfe der Google Play Developer API hochladen

Wenn Sie Dateien mithilfe der Google Play Developer API hochladen möchten, rufen Sie die Google Developers-Website auf.

Schritt 3: Offengelegte Absturz-Stacktraces ansehen

Nachdem Sie für eine Version Ihrer App eine ProGuard-Zuordnungsdatei oder eine Debugging-Symboldatei hochgeladen haben, werden alle künftigen Abstürze und ANRs offengelegt. Sie können offengelegte Stacktraces für einzelne Abstürze und ANRs auf der Seite Abstürze und ANRs Ihrer App einsehen.

  1. Öffnen Sie die Play Console.
  2. Wählen Sie eine App aus.
  3. Wählen Sie im Menü links Qualität > Android Vitals > Abstürze und ANRs aus.
  4. Wählen Sie einen Absturz aus.
  5. Im Abschnitt "Stacktraces" sehen Sie Ihre offengelegten und ersetzten Stacktraces.

Wichtig: Nachdem Sie eine Zuordnungsdatei für eine Version Ihrer App hochgeladen haben, werden nur künftige Abstürze und ANRs für diese Version Ihrer App offengelegt. Abstürze und ANRs für eine Version Ihrer App, die vor dem Hochladen der entsprechenden Zuordnungsdatei aufgetreten sind, werden nicht offengelegt.

Häufig gestellte Fragen

Ich möchte die Offenlegung/Symbolication der Play Console nicht verwenden. Kann ich das auch offline tun?

Die Play Console verwendet zur Symbolication von Stacktraces für native Apps ndk-stack und für Java-Abstürze ReTrace. Wenn Sie Ihre Offenlegungsdateien nicht freigeben möchten, können Sie die verschleierten Absturz-Stacks aus der Play Console kopieren und die Symbolication offline mit dem entsprechenden Tool durchführen. Dieser Vorgang muss jedoch für jeden Absturz-Stack manuell durchgeführt werden, wodurch er langsam und zeitaufwändig wird. Wenn Sie die Offenlegungsdateien hochladen, übernimmt die Play Console diese Aufgabe für Sie.

Ich habe die Offenlegungs-/Symboldatei hochgeladen. Warum sind meine Abstürze und ANRs immer noch verschleiert?

Nachdem Sie für eine Version Ihrer App eine ProGuard-Zuordnungsdatei oder eine Debugging-Symboldatei hochgeladen haben, werden nur Abstürze und ANRs offengelegt, die danach auftreten. Sie müssen einige Zeit warten, bis neue Abstürze und ANRs von den Geräten der Nutzer gemeldet werden, bevor Sie offengelegte Abstürze und ANRs in der Play Console sehen.

Warum werden meine Abstürze und ANRs nach dem Hochladen der Offenlegungs-/Symboldatei nur teilweise offengelegt?

Das wird durch das Hochladen einer unvollständigen Offenlegungs-/Symboldatei verursacht. Schließen Sie unbedingt Symboldateien für Ihre gesamte App ein, insbesondere wenn Sie einen komplexen oder mehrstufigen Build-Prozess verwenden. Einer der häufigsten Gründe für die teilweise Offenlegung ist die Verwendung einer Bibliothek eines Drittanbieters. In diesem Fall können Sie die Offenlegungsdateien möglicherweise von diesem Anbieter erhalten.

Warum erhalte ich nach dem Hochladen der Offenlegungs-/Symboldatei weniger, dafür aber schwerwiegendere Abstürze und ANRs?

Ohne Offenlegungsdateien wird der gleiche Absturz oder ANR auf einem 32-Bit- und 64-Bit-Gerät bzw. einem ARM und einem Intel-Gerät separat angezeigt. Wenn Sie die Offenlegungsdateien hochgeladen haben, können wir diese Abstürze zusammenfassen und Ihnen so einen besseren Überblick über die wichtigsten Abstürze und ANRs für Ihre App geben.

Was passiert, wenn ich vergesse, die Datei hochzuladen?

Wenn Sie vergessen, die Datei für eine neue Version Ihrer App hochzuladen, werden Abstürze und ANRs wieder verschleiert. Folgen Sie der Anleitung oben, um die Datei jetzt hochzuladen. Nachdem Sie für eine Version Ihrer App eine ProGuard-Zuordnungsdatei oder eine Debugging-Symboldatei hochgeladen haben, werden nur Abstürze und ANRs offengelegt, die danach auftreten. Sie müssen einige Zeit warten, bis neue Abstürze und ANRs von den Geräten der Nutzer gemeldet werden, bevor Sie offengelegte Abstürze und ANRs in der Play Console sehen.

Damit Sie nicht vergessen, die Datei hochzuladen, sollten Sie in Ihrem Build-Prozess App Bundles mit dem Android-Gradle-Plug-in in der Version 4.1 oder höher verwenden. Sie können die Debugging-Symboldatei dann automatisch in das App Bundle aufnehmen lassen. Eine Anleitung dazu finden Sie auf der Website für Android-Entwickler.

Was passiert, wenn ich die falsche Datei hochlade?

Wenn Sie die falsche Datei für eine bestimmte Version Ihrer App hochladen, werden Abstürze und ANRs wieder verschleiert. So laden Sie eine korrigierte Version hoch:

  1. Öffnen Sie die Play Console.
  2. Wählen Sie eine App aus.
  3. Wählen Sie im Menü links Release > Geräte und Versionen > App Bundle Explorer aus.
  4. Wählen Sie oben rechts das entsprechende Artefakt aus.
  5. Gehen Sie zum Tab Downloads und scrollen Sie nach unten zum Abschnitt "Inhalte".
  6. Klicken Sie auf das Löschsymbol neben der falschen Offenlegungs- oder Symboldatei.
  7. Sobald die falsche Version gelöscht wurde, klicken Sie auf das Upload-Symbol und laden die richtige Datei für die Version Ihrer App hoch.

Nachdem die korrekten ProGuard-Zuordnungsdatei oder Debugging-Symboldatei für eine Version Ihrer App hochgeladen wurde, werden nur Abstürze und ANRs offengelegt, die danach auftreten. Sie müssen einige Zeit warten, bis neue Abstürze und ANRs von den Geräten der Nutzer gemeldet werden, bevor Sie offengelegte Abstürze und ANRs in der Play Console sehen.

Tipp: Damit keine falsche Version der Datei hochgeladen wird, sollten Sie in Ihrem Build-Prozess App Bundles mit dem Android-Gradle-Plug-in in der Version 4.1 oder höher verwenden. Sie können die Debugging-Symboldatei dann automatisch in das App Bundle aufnehmen lassen. Eine Anleitung dazu finden Sie auf der Website für Android-Entwickler.

Ich verwende derzeit APKs. Wie steige ich auf die Nutzung von App Bundles um?

Grundlegende Informationen dazu finden Sie auf der Website für Android-Entwickler.

Meine App enthält sowohl nativen Code als auch Java-Code. Kann ich sowohl eine native Symboldatei als auch eine Java-Offenlegungsdatei hochladen?

Ja.

War das hilfreich?
Wie können wir die Seite verbessern?

Benötigen Sie weitere Hilfe?

Anmelden, um weitere Supportoptionen zu erhalten und das Problem schnell zu beheben