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 Ihrer App in der Play Console eine ProGuard-Zuordnungsdatei hochladen. Wenn Ihre App oder Ihr Spiel mit nativem Code wie C++ entwickelt wurde, 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 Symbolication-Datei generieren

Zur 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, ist für jede neue Version Ihrer App eine eigene Datei zu generieren und hochzuladen.

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 Symbolication-Datei 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. Die Struktur dieses Verzeichnis sieht ungefähr so aus:

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 Datei „symbols.zip“ manuell in die Play Console hoch, wie in Schritt 2: Offenlegungs- oder Symbolication-Datei 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 zur Fehlerbehebung (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 die ABI, die 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 Symbolication-Datei hochladen

Für die Offenlegung oder Symbolication der Abstürze und ANRs für eine Version Ihrer App müssen Sie zuerst die Offenlegungs- oder Symbolication-Dateien für die einzelnen Versionen 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 Symbolication-Datei hoch:

  1. Öffnen Sie die Play Console.
  2. Wählen Sie eine App aus.
  3. Wählen Sie im Menü auf der linken Seite Release > 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 Hochladen-Pfeil für die Zuordnungsdatei oder die Debugging-Symbole, um die Offenlegungs- oder Symbolication-Datei 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ü auf der linken Seite 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 mit dem entsprechenden Tool offline durchführen. Dieser Vorgang muss jedoch für jeden Absturz-Stack manuell durchgeführt werden, wodurch er langsam und zeitaufwendig wird. Wenn Sie die Offenlegungsdateien hochladen, übernimmt die Play Console diese Aufgabe für Sie.

Ich habe die Offenlegungs-/Symbolication-Datei 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. Es kann einige Zeit dauern, bis die Geräte der Nutzer neue Abstürze und ANRs melden und offengelegte Abstürze und ANRs in der Play Console angezeigt werden.

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

Das wird durch das Hochladen einer unvollständigen Offenlegungs-/Symbolication-Datei verursacht. Sorgen Sie dafür, dass die Symbolication-Dateien für Ihre gesamte App eingeschlossen werden. Das ist besonders dann wichtig, wenn Sie einen komplexen oder mehrstufigen Build-Prozess verwenden. Einer der häufigsten Gründe für die unvollständige Offenlegung ist die Verwendung einer Bibliothek eines Drittanbieters. Wenn dies bei Ihnen der Fall ist, wenden Sie sich an diesen Anbieter und fragen Sie nach dem vollständigen Satz von Offenlegungsdateien.

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

Ohne Offenlegungsdateien wird ein und derselbe Absturz oder ANR auf einem 32-Bit- und einem 64-Bit-Gerät oder einem ARM- und einem Intel-Gerät als separate Ereignisse 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. Es kann einige Zeit dauern, bis die Geräte der Nutzer neue Abstürze und ANRs melden und offengelegte Abstürze und ANRs in der Play Console angezeigt werden.

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ü auf der linken Seite Release > 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 neben der falschen Offenlegungs- oder Symbolication-Datei auf das Symbol zum Löschen.
  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 Sie die korrekte ProGuard-Zuordnungsdatei oder Debugging-Symboldatei für die jeweilige Version Ihrer App hochgeladen haben, werden nur die Abstürze und ANRs offengelegt, die nach dem Hochladen auftreten. Es kann einige Zeit dauern, bis die Geräte der Nutzer neue Abstürze und ANRs melden und offengelegte Abstürze und ANRs in der Play Console angezeigt werden.

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 Symbolication-Datei als auch eine Java-Offenlegungsdatei hochladen?

Ja.

Warum zeigen einige ANRs keinen Stacktrace an?

Manchmal erkennt das System einen ANR-Fehler, kann aber den Stacktrace nicht ermitteln. In diesem Fall wird der ANR angezeigt, damit Sie eine umfassendere Übersicht über die Stabilität Ihrer App erhalten, der Stacktrace jedoch nicht. ANRs ohne Stacktraces werden nach Typ und Aktivität gruppiert. Unter Umständen kann es helfen, sich ähnliche ANRs anzusehen und diese zu beheben, um die Anzahl der ANR-Fehler ohne Stacktraces zu reduzieren.

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

Suche
Suche löschen
Suche schließen
Google-Apps
Hauptmenü
Suchen in der Hilfe
true
92637
false