iOS シンボリック化

重要

Visual Studio App Center は、2025 年 3 月 31 日に廃止される予定です。 完全に廃止されるまで Visual Studio App Center を引き続き使用できますが、移行を検討できる推奨される代替手段がいくつかあります。

詳細については、サポートタイムラインと代替手段に関するページを参照してください。

macOS、tvOS、iOS のクラッシュ レポートには、クラッシュが発生した時点でアプリのすべての実行中のスレッドのスタック トレースが表示されます。 スタック トレースにはメモリ アドレスのみが含まれます。クラッシュを理解するために必要なクラス名、メソッド、ファイル名、行番号ではありません。

変換されたメモリ アドレスを取得するには、シンボリック化に必要なすべての情報を含む dSYM パッケージを App Center にアップロードする必要があります。 シンボリック化の詳細については、Apple の 公式開発者向けドキュメントを参照してください

App Center Build and Distribution サービスは、有効な dSYM ファイルとソース マップ .zip ファイルを自動的に生成し、そのファイルを診断サービスにアップロードできます。 App Center を使用してアプリをビルドし、エンド ユーザーに自動配布する場合は、シンボル ファイルを手動で取得してアップロードする必要はありません。

Unsymbolicated クラッシュ

[App Center Diagnostics]\(App Center 診断\) セクションには、シンボルをアップロードする前でもいくつかの詳細を表示できるように、重複していないクラッシュが表示されます。 これらのクラッシュで見つからないシンボルは、[unsymbolicated] タブに表示されます。不足しているシンボルがアップロードされた場合、シンボル化されていないクラッシュ グループは、シンボリック化されたクラッシュ グループに置き換えられます。

バンドルの .dSYM 検索

  1. Xcode で [ ウィンドウ ] メニューを開き、[ 開催者] を選択します。
  2. [ アーカイブ ] タブを選択します。
  3. 左側のサイドバーでアプリを選択します。
  4. 最新のアーカイブを右クリックし、[ Finder に表示] を選択します。
  5. Finder でファイルを .xcarchive 右クリックし、[ パッケージ コンテンツの表示] を選択します。
  6. dSYM バンドルを含む という名前 dSYMs のフォルダーが表示されます。
  7. dSYM バンドルの zip ファイルを作成します。

Xcode の代わりに Visual Studio を使用している場合は、「 dSYM ファイルを見つけて iOS クラッシュ ログをシンボリック化する場所 」を参照して、dSYM ファイルを見つけます。

シンボルのアップロード

App Center ポータル

  1. App Center にログインしてアプリを選択します。
  2. 左側のメニューで、[ 診断 ] セクションに移動し、[シンボル] を選択 します
  3. 右上隅にある [ シンボルのアップロード ] をクリックし、ファイルをアップロードします。
  4. シンボルが App Center によってインデックス付けされると、クラッシュがシンボル化されます。

iOS アプリをReact Nativeする

React Native iOS ファイルのシンボル ファイルを取得するには、Mac の dSYM パッケージとアプリの JavaScript ソース マップを含む ZIP ファイルを作成します。 ソース マップには という名前を付ける index.ios.map必要があります。 次のコマンドでは、リリース ビルドのソース マップが生成されます。

react-native bundle --entry-file index.ios.js --platform ios --dev false --reset-cache --bundle-output unused.jsbundle --sourcemap-output index.ios.map

App Center API

API を介してシンボルをアップロードするプロセスには、一連の 3 つの API 呼び出しが含まれます。1 つはバックエンドに領域を割り当てる呼び出し、もう 1 つはファイルをアップロードし、もう 1 つはアップロードの状態を更新する呼び出しです。 最初の API 呼び出しの本文は に設定 symbol_type する Apple必要があります。

  1. POSTsymbol_uploads API への要求をトリガーします。 この呼び出しは、バックエンドにファイルの領域を割り当て、 プロパティと プロパティをupload_urlsymbol_upload_idします。
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. 最初のupload_url手順から返された プロパティを使用して、 ヘッダー"x-ms-blob-type: BlockBlob"を使用して要求を行いPUT、ディスク上のファイルの場所を指定します。 この呼び出しにより、バックエンド ストレージ アカウントにファイルがアップロードされます。 PUT BLOB 要求ヘッダーの詳細を確認してください。
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. 最初のPATCH手順から返された プロパティを使用してsymbol_upload_id、symbol_uploads API に要求を行います。 要求の本文で、アップロードの状態をアップロード プロセスに 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" }'

注意

シンボル uploads API は、256 MB を超えるファイルでは機能しません。 これらのファイルをアップロードするには、App Center CLI を使用します。 App Center CLI リポジトリの手順に従って 、App Center CLI をインストールできます。

App Center CLI

CLI を使用してシンボル ファイルをアップロードすることもできます。

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

ビットコード

ビットコードは、Apple によって導入され、App Storeに送信されたアプリが Apple 自体によって再コンパイルされ、最新の最適化が適用されるようにしました。 Bitcode が有効になっている場合、ストア内のアプリに対して生成されるシンボルは、独自のビルド システムのシンボルとは異なります。

App Center のクラッシュ レポートでは、ビットコード対応アプリからのクラッシュのシンボル化はまだ完全にはサポートされていません。 それまでは、 ビットコードを無効にすることをお勧めします。 ビットコードを無効にすると、シンボル管理が大幅に簡素化され、現在、iOS アプリの既知の欠点はありません。

アプリのビットコードを無効にする

  1. Xcode で、プロジェクト ナビゲーターの最上位要素をクリックしてプロジェクト設定を開きます
  2. [ビルド設定] ページに移動します
  3. bitcode を検索します
  4. 結果で、値を [はい] から [いいえ] に変更します。
  5. アプリをリビルドする

これらの簡単な手順では、App Center のクラッシュ レポートは通常どおりに動作します。

ビットコード対応アプリのシンボルを取得する

ビットコードを有効にしておく場合は、次の手順に従って適切な dSYM ファイルをダウンロードできます。

  1. Xcode のオーガナイザーを開く
  2. iTunes Connect にアップロードしたアプリの特定のアーカイブを選択する
  3. [download dSYMs]\(dSYMs のダウンロード\) ボタンをクリックします。 この手順では、Bitcode でコンパイルされた dSYM ファイルを元のアーカイブに挿入します。
  4. App Center で対応するアプリとバージョンにシンボルをアップロードする

Xcode オーガナイザーが新しいシンボルを提供しない場合は、次の手順に従って iTunes Connect ポータルから dSYM ファイルをダウンロードする必要があります。

  1. iTunes Connect ポータルでアプリを選択する
  2. 上部の [アクティビティ] タブを選択します
  3. シンボルが見つからないアプリのビルド バージョンを選択します
  4. [Download dSYM]\(dSYM のダウンロード\) リンクをクリックします
  5. ダウンロードしたファイルを App Center にアップロードします。 このファイルには、App Center がクラッシュをシンボル化するために必要なシンボルが含まれています。

シンボルの問題のトラブルシューティング

シンボルをアップロードしてビットコードを無効にした後もクラッシュが引き続き表示される場合は、アップロードされた dSYM ファイルが App Center に必要なものと一致しない可能性があります。 dSYM ファイルをアップロードすると、App Center によって、その UUID に基づいて適切なアプリ バージョンに一致します。

dSYM ファイルに適切な UUID があるかどうかをダブルチェックするには、dwarfdump という CLI ツールを使用します。

  1. dSYM ファイルで UUID を見つけます。
dwarfdump --u CrashProbeiOS.app.dSYM
  1. 結果は次のようになります。
UUID:ADF53C85-4638-3EFF-A33C-42C13A18E915 (armv7)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
UUID:D449E33D-7E74-379D-8B79-15EE104ED1DF (arm64)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
  1. 返される UUID がデバッグ シンボル ダイアログに表示される UUID と一致する場合は、二重チェックします。

App Center に必要なシンボルの UUID が表示されます

シンボルを無視する

クラッシュ レポートを完全にシンボル化するためのシンボル ファイルがすべて App Center に存在しない場合、クラッシュは [ Unsymbolicated ] タブに一覧表示されます。必要なシンボルにアクセスできる場合は、このページからシンボルがアップロードされます。

シンボルをアップロードできない場合は、テーブル内の行を選択し、[バージョンを無視する] ボタンをクリックして、シンボルを [無視] としてマークできます。 このボタンは、クラッシュを処理し、ファイル上のシンボルを使用して可能な限り完全にシンボル化するように App Center に指示します。 処理が完了すると、部分的にシンボル化された [ クラッシュ ] タブに表示されます。 無視済みとしてマークされた同じシンボル ID にも依存する新しいクラッシュは、システムに入ってシステム内を流れるにつれて [ Unsymbolicated ] タブをバイパスします。