デフォルトでは、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
)が次のように設定されていることを確認します。
[Build Phases] タブをクリックし、[Run Script] セクションを開きます。
[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 がファイルを生成していないことにあります。アップロードが失敗すると、Crashlytics は Firebase コンソールに「不足している dSYM」というアラートを表示します。このアラートが表示された場合は、まず、Xcode がすべてのビルドに対して正しい dSYM を生成していることを確認します。
Xcode でプロジェクトを開いて、ナビゲータでプロジェクト ファイルを選択します。
メインのビルド ターゲットを選択します。
ターゲットの [Build Settings] タブを開いて、[All] をクリックします。
debug information format
を検索します。すべてのビルドタイプについて、[Debug Information Format] を [DWARF with dSYM File] に設定します。
アプリを再ビルドします。
これで、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 を探すことができます。
Xcode で [Organizer] ウィンドウを開いて、リストからアプリを選択します。Xcode に、プロジェクトのアーカイブのリストが表示されます。
Ctrl キーを押しながらアーカイブをクリックして、Finder に表示します。もう一度 Ctrl キーを押しながらクリックし、[Show Package Contents] をクリックします。
.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
を実行してください。