重要
Visual Studio App Center は、2026 年 6 月 30 日まで引き続きサポートされる分析機能と診断機能を除き、2025 年 3 月 31 日に廃止されました。 詳細を参照してください。
Android NDK を使用すると、C と C++ を使用して Android アプリの一部を実装できます。 Android アプリの Google Breakpad クライアント ライブラリを使用して、ネイティブ コードで有効なスタック トレースを受信できます。 スタック トレースにはメモリ アドレスのみが含まれる場合があります。 クラッシュの読み取りと理解に必要なクラス名、メソッド、ファイル名、行番号は表示されません。 Android NDK アプリ用に変換されたメモリ アドレスを取得するには、ビルドごとにアプリケーション シンボルをアップロードする必要があります。
NDK クラッシュを報告する方法については、Android アプリの Android SDK ドキュメント 、または Unity アプリの Unity SDK ドキュメント を参照してください。
他のプラットフォームから App Center に Breakpad のクラッシュを送信する場合は、 カスタム クラッシュのアップロードに関するドキュメントを参照してください。
未シンボリック化クラッシュ
App Center Diagnostics セクションには、シンボルをアップロードする前でも幾つかの詳細を確認できるように、シンボル化されていないクラッシュが表示されます。 これらのクラッシュに含まれていないシンボルは、[unsymbolicated] タブに表示されます。不足しているシンボルがアップロードされた場合、シンボル化されていないクラッシュ グループは、シンボル化されたクラッシュ グループに置き換えられます。
注
App Center では、システム ライブラリからのフレームのシンボル化はサポートされていません。 Android やその他のプラットフォーム用のシステム バイナリの断片化が高いため、特定のデバイス/OS バージョンの組み合わせでは異なる可能性があります。App Center では、システム バイナリのシンボル自体が提供されておらず、シンボル化でシステム バイナリからフレームが自動的にスキップされます。
アップロードする .zip ファイルを生成する
App Center でシンボル化に必要なシンボルを取得するには、2 つの方法があります。 App Center では、プロジェクトで使用されているネイティブ バイナリから生成することも、Breakpad シンボルを直接アップロードすることもできます。
オプション 1: ネイティブ バイナリをアップロードする
プロジェクトの obj/local/$ABI/
ディレクトリからすべての .so ファイルを .zip ファイルに配置します。
オプション 2: ブレークパッドシンボルをアップロードする
- 「デバッグ シンボルの取得」セクションの Breakpad ドキュメント で説明されているように、Breakpad ツールチェーンを使用してシンボルをダンプします。
- 次の構造の symbols.zip ファイルを作成します。
注
macOS からシンボルをアップロードする場合は、余分なフォルダーのシンボルをクリーンアップする必要があります。たとえば、__MACOS生成され、これを削除するには、 zip -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
シンボルのアップロード
注
App Center ビルドおよび配布サービスは、シンボルを診断サービスに自動的に転送できます。 App Center を使用してアプリをビルドし、エンド ユーザーに自動配布する場合、以下の手順で詳しく説明するように、シンボル ファイルを手動で取得してアップロードする必要はありません。
App Center ポータル
- App Center にログインし、アプリを選択します。
- 左側のメニューで、[ 診断 ] セクションに移動し、[ 問題] に移動します。
- アプリケーションでクラッシュがまだ報告されていない場合は、API または CLI を使用して Breakpad シンボルをアップロードする必要があります。
- アプリケーションでシンボルが必要なクラッシュが既に報告されている場合は、[ Unsymbolicated ] タブを確認し、シンボルが見つからないバージョン グループが存在する必要があります。これをクリックすると、ファイルをアップロードするメニューが表示されます。
- シンボルのインデックスが App Center によって作成されると、クラッシュがシンボル化されます。
App Center API
API を介してシンボルをアップロードするプロセスには、一連の 3 つの API 呼び出しが含まれます。1 つはバックエンドに領域を割り当て、1 つはファイルをアップロードし、1 つはアップロードの状態を更新します。 最初の API 呼び出しの本文では、 symbol_type
を Breakpad
に設定する必要があります。
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}'
- 最初の手順から返された
upload_url
プロパティを使用して、ヘッダーを使用してPUT
要求を行います:"x-ms-blob-type: BlockBlob"
し、ディスク上のファイルの場所を指定します。 この呼び出しにより、ファイルがバックエンド ストレージ アカウントにアップロードされます。 PUT BLOB 要求ヘッダーの詳細を確認します。
curl -X PUT '{upload_url}' \
-H 'x-ms-blob-type: BlockBlob' \
--upload-file '{path to file}'
- 最初の手順から返された
PATCH
プロパティを使用して、symbol_uploads API にsymbol_upload_id
要求を行います。 要求の本文で、アップロードの状態をアップロード プロセスのcommitted
(正常に完了) に設定するか、aborted
(正常に完了しなかった) かを指定します。
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" }'
注
シンボルのアップロード API は、256 MB を超えるファイルでは機能しません。 これらのファイルをアップロードするには、App Center CLI を使用します。 App Center CLI リポジトリの手順に従って、 App Center CLI をインストールできます。
App Center CLI
CLI を使用してシンボル ファイルをアップロードすることもできます。
appcenter crashes upload-symbols --breakpad {symbols file}
シンボルの無視
クラッシュ レポートを完全にシンボル化するためのシンボル ファイルがすべて App Center に含まれていない場合、クラッシュは [ Unsymbolicated ] タブに一覧表示されます。必要なシンボルにアクセスできる場合は、このページからアップロードされます。
シンボルをアップロードできない場合は、テーブル内の行を選択して [バージョンを無視] ボタンをクリックすることで、シンボルを無視としてマークできます。 このボタンは、クラッシュを処理し、ファイル上のシンボルを使用して可能な限り完全にシンボル化するように App Center に指示します。 処理が完了すると、部分的にシンボル化された [ クラッシュ ] タブに表示されます。 無視済みとしてマークされた同じシンボル ID に依存する新しいクラッシュは、Unsymbolicated タブを通過し、システム内で処理されます。