Android NDK

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis es vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie eine Migration in Betracht ziehen können.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

Mit Android NDK können Sie Teile Ihrer Android-Apps mithilfe von C und C++ implementieren. Sie können die Google Breakpad-Clientbibliothek für Ihre Android-Apps verwenden, um gültige Stapelüberwachungen im nativen Code zu erhalten. Die Stapelüberwachungen dürfen nur Speicheradressen enthalten. Sie zeigen keine Klassennamen, Methoden, Dateinamen und Zeilennummern an, die zum Lesen und Verstehen der Abstürze benötigt werden. Um die Speicheradressen für Ihre Android NDK-App zu übersetzen, müssen Sie Anwendungssymbole für jeden Build hochladen.

Informationen zum Melden von NDK-Abstürze finden Sie in der Android SDK-Dokumentation für Android-Apps oder in der Unity SDK-Dokumentation für Unity-Apps.

Wenn Sie Breakpadabstürze von anderen Plattformen an App Center senden möchten, lesen Sie die Dokumentation zum Hochladen benutzerdefinierter Abstürze.

Nicht symbolische Abstürze

Nichtsymbolische Abstürze werden im Abschnitt App Center-Diagnose angezeigt, sodass Sie einige Details anzeigen können, bevor Sie Symbole hochladen. Die fehlenden Symbole aus diesen Abstürze werden auf der Registerkarte "unsymbolicated" angezeigt. Wenn die fehlenden Symbole hochgeladen werden, wird die nichtsymbolische Absturzgruppe durch eine symbolische Absturzgruppe ersetzt.

Hinweis

App Center unterstützt keine Symbolische Darstellung von Frames, die aus Systembibliotheken stammen. Angesichts der hohen Fragmentierung der Systembinärdateien für Android und andere Plattformen – die sich bei jeder Kombination aus Geräte-/Betriebssystemversion unterscheiden können – stellt App Center selbst keine Symbole für Systembinärdateien bereit und überspringt automatisch Frames aus Systembinärdateien in symbolischer Weise.

Generieren einer hochzuladenden .zip-Datei

Es gibt zwei Möglichkeiten für App Center, die für die Symbolik erforderlichen Symbole abzurufen. App Center kann sie aus den nativen Binärdateien generieren, die in Ihrem Projekt verwendet werden, oder Sie können die Breakpadsymbole direkt hochladen.

Option 1: Hochladen nativer Binärdateien

Fügen Sie alle SO-Dateien aus dem Projektverzeichnis obj/local/$ABI/ in eine .zip-Datei ab.

Option 2: Hochladen von Breakpadsymbolen

  1. Speichern Sie die Symbole mithilfe der Breakpad-Toolkette, wie in der Breakpad-Dokumentation im Abschnitt "Abrufen der Debugsymbole" beschrieben.
  2. Erstellen Sie eine symbols.zip-Datei mit der folgenden Struktur:

Hinweis

Wenn Sie Ihre Symbole von macOS hochladen, müssen Sie Ihre Symbole aus allen überflüssigen Ordnern sauber, z. B. __MACOS generiert wird, und um dies zu löschen, können Sie verwendenzip -d <symbols.zip> __MACOSX/\*.

$ unzip -l symbols.zip
Archive:  symbols.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  07-22-13 15:07   symbols/
        0  07-22-13 15:07   symbols/libnative.so/
        0  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/
    12468  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/libnative.so.sym
        0  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/
    12467  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/libnative.so.sym
 --------                   -------
    24935                   6 files

Hochladen von Symbolen

Hinweis

Der App Center-Build- und Verteilungsdienst kann Symbole automatisch an den Diagnosedienst weiterleiten. Wenn Sie App Center verwenden, um Ihre App zu erstellen und automatisch an Ihre Endbenutzer zu verteilen, müssen Sie die Symboldateien nicht manuell abrufen und hochladen, wie in den folgenden Schritten beschrieben.

App Center-Portal

  1. Melden Sie sich App Center an, und wählen Sie Ihre App aus.
  2. Navigieren Sie im linken Menü zum Abschnitt Diagnose und dann zu Problemen.
  3. Wenn Ihre Anwendung noch keinen Absturz gemeldet hat, müssen Sie die API oder CLI verwenden, um Breakpadsymbole hochzuladen.
  4. Wenn Ihre Anwendung bereits Abstürze gemeldet hat, die Symbole benötigen, überprüfen Sie die Registerkarte Nichtsymbolikiert , und es sollte eine Versionsgruppe mit fehlenden Symbolen geben, klicken Sie darauf, um das Menü zum Hochladen der Datei anzuzeigen.
  5. Nachdem die Symbole von App Center indiziert wurden, werden Abstürze für Sie symbolisch dargestellt.

App Center-API

Der Prozess zum Hochladen von Symbolen über die API umfasst eine Reihe von drei API-Aufrufen: einer zum Zuweisen von Speicherplatz auf unserem Back-End, einer zum Hochladen der Datei und einer zum Aktualisieren der status des Uploads. Der Text des ersten API-Aufrufs sollte auf festgelegt symbol_type werden Breakpad.

  1. Lösen Sie eine POST Anforderung an die symbol_uploads-API aus. Dieser Aufruf ordnet Speicherplatz auf unserem Back-End für Ihre Datei zu und gibt eine symbol_upload_id - und eine -Eigenschaft zurück upload_url .
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. Erstellen Sie mithilfe der upload_url eigenschaft, die aus dem ersten Schritt zurückgegeben wurde, eine PUT Anforderung mit dem Header: "x-ms-blob-type: BlockBlob" und geben Sie den Speicherort Ihrer Datei auf dem Datenträger an. Dieser Aufruf lädt die Datei in unsere Back-End-Speicherkonten hoch. Erfahren Sie mehr über PUT-Blob-Anforderungsheader .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Senden Sie eine PATCH Anforderung an die symbol_uploads-API , indem Sie die symbol_upload_id Eigenschaft verwenden, die aus dem ersten Schritt zurückgegeben wurde. Geben Sie im Text der Anforderung an, ob Sie die status des Uploads auf committed den Uploadvorgang (erfolgreich abgeschlossen) oder aborted (nicht erfolgreich abgeschlossen) festlegen möchten.
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

Hinweis

Die Symbolupload-API funktioniert nicht für Dateien, die größer als 256 MB sind. Verwenden Sie die App Center-Befehlszeilenschnittstelle, um diese Dateien hochzuladen. Sie können die App Center-CLI installieren, indem Sie die Anweisungen in unserem App Center-CLI-Repository befolgen.

App Center-CLI

Sie können auch die CLI verwenden, um Symboldateien hochzuladen:

appcenter crashes upload-symbols --breakpad {symbols file}

Ignorieren von Symbolen

Wenn App Center nicht über alle Symboldateien verfügt, um Absturzberichte vollständig zu symbolieren, werden die Abstürze auf der Registerkarte Unsymbolicated aufgeführt. Die erforderlichen Symbole werden von dieser Seite hochgeladen, wenn Sie Zugriff darauf haben.

Wenn Sie die Symbole nicht hochladen können, können Sie sie als Ignoriert markieren, indem Sie Zeilen in der Tabelle auswählen und auf die Schaltfläche Versionen ignorieren klicken. Diese Schaltfläche weist App Center an, die Abstürze zu verarbeiten und sie so vollständig wie möglich mit den in der Datei gespeicherten Symbolen zu symbolisieren. Nachdem sie die Verarbeitung abgeschlossen haben, werden sie auf der Registerkarte Abstürze teilweise symbolisch dargestellt angezeigt. Neue Abstürze, die auch von den gleichen Symbol-IDs abhängen, die als ignoriert markiert sind, umgehen die Registerkarte Unsymbolicated , wenn sie eintreffen und durch das System fließen.