Crashlytics ダッシュボードで読み取り可能なクラッシュ レポートを取得する


デフォルトでは、Firebase Crashlytics はデバッグ シンボル(dSYM)ファイルを自動的に処理して、難読化解除された(人が読める形式の)クラッシュ レポートを生成します。通常、この動作はアプリの Crashlytics の初期設定時に構成します。具体的には、アプリのビルドフェーズで dSYM ファイルを自動的にアップロードする実行スクリプトを追加して構成します。

わずかながらも、dSYM ファイルの自動アップロードが失敗する状況がいくつかあります。このガイドでは、Crashlytics がアプリの dSYM ファイルを見つけられない場合のトラブルシューティング方法をいくつか説明します。

Xcode が dSYM を自動的に処理してファイルをアップロードできるようにする

アプリで Crashlytics を設定する際に、dSYM を自動的に処理してファイルをアップロードするように実行スクリプトを構成しました。

Crashlytics 実行スクリプトの構成が Xcode 15 以降の新しい要件に対応していることを確認します。構成が最新でない場合は、次のエラーが発生する可能性があります。
error: Info.plist Error Unable to process Info.plist at path ...

特に、Xcode 15 以降では、より完全なファイルの場所のセットを指定する必要があります。Crashlytics 実行スクリプト(firebase-ios-sdk/Crashlytics/run)が次のように設定されていることを確認します。

  1. [Build Phases] タブをクリックし、[Run Script] セクションを開きます。

  2. [Input Files] セクションで、次のファイルの場所のパスが設定されていることを確認します。

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

Xcode が dSYM を生成しているかどうかを確認する

多くの場合、dSYM ファイルが欠落する理由は Xcode がファイルを生成していないことにあります。アップロードが失敗すると、CrashlyticsFirebase コンソールに「不足している dSYM」というアラートを表示します。このアラートが表示された場合は、まず、Xcode がすべてのビルドに対して正しい dSYM を生成していることを確認します。

  1. Xcode でプロジェクトを開いて、ナビゲータでプロジェクト ファイルを選択します。

  2. メインのビルド ターゲットを選択します。

  3. ターゲットの [Build Settings] タブを開いて、[All] をクリックします。

  4. debug information format を検索します。

  5. すべてのビルドタイプについて、[Debug Information Format] を [DWARF with dSYM File] に設定します。

  6. アプリを再ビルドします。

これで、Crashlytics ダッシュボードにクラッシュ レポートが表示されます。問題が解決しない場合や他のエラーが発生した場合は、dSYM を見つけて手動で Crashlytics にアップロードしてみてください。

ローカルマシン上で dSYM を見つける

次のコマンドを実行して、マシン上の dSYM の UUID をすべて表示し、不足している dSYM を検索します。

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

dSYM が見つかったら、Crashlytics に手動でアップロードします。mdfind コマンドから結果が返されない場合は、.app が存在する Products ディレクトリ内を調べてください(デフォルトでは、Products ディレクトリは Derived Data 内にあります)。アプリが本番環境にリリースされている場合は、ディスク上の .xcarchive ディレクトリ内でも対応する dSYM を探すことができます。

  1. Xcode で [Organizer] ウィンドウを開いて、リストからアプリを選択します。Xcode に、プロジェクトのアーカイブのリストが表示されます。

  2. Ctrl キーを押しながらアーカイブをクリックして、Finder に表示します。もう一度 Ctrl キーを押しながらクリックし、[Show Package Contents] をクリックします。

  3. .xcarchive 内にある dSYMs ディレクトリには、Xcode のアーカイブ プロセスの一環として生成された dSYM が格納されています。

dSYM をアップロードする

Crashlytics では、dSYM ファイルをアップロードする方法が複数サポートされています(自動または手動)。

(推奨)dSYM を自動的に処理してファイルをアップロードする

Crashlytics を最初に設定したとき、通常はこの自動アップロードの動作をアプリに設定しています。ただし、自動アップロードが失敗した場合は、構成が正しいことを確認してください。

dSYM ファイルを手動でアップロードする

自動アップロードが失敗する場合は、次のいずれかのオプションを使用して dSYM ファイルを手動でアップロードできます。

  • オプション 1: コンソール ベースの [ドラッグ&ドロップ] オプションを使用して、dSYM ファイルが含まれている zip ファイルをアップロードします(Firebase コンソール > Crashlytics > [dSYMs] タブに移動)。

  • オプション 2: ビルドプロセスの任意の時点で呼び出すことができる upload-symbols スクリプトを使用して、dSYM ファイルを手動でアップロードします。upload-symbols スクリプトを実行するには、次のいずれかのオプションを使用します。

    • オプション A: ビルドプロセスに次の行を含めます。

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • オプション B: ターミナルからスクリプトを直接実行します。

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    このスクリプトの使用上の注意と追加手順を確認するには、--help パラメータを指定して upload-symbols を実行してください。