Swift Package Manager使用プロジェクトで、Crashlyticsのデバッグシンボルをアップロードする方法

2026/01/13 23:08公開
2026/01/13 23:08最終更新
Table of Contents
  1. 問題
  2. 対処法
  3. 参考

問題

私のiOSアプリでは、以下のようなスクリプトを作成して、CI上でCrashlyticsのデバッグシンボルが自動的にアップロードされるように構成してあった。このスクリプトでは、$PODS_ROOT環境変数を使って、CrashlyticsのSDKのソースに含まれるコマンドを叩いているため、Swift Package Managerに乗り換えると当然動作しなくなる。

if [ "$CONFIGURATION" = "Release" ]; then
    gsinfo_plist_path="$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/GoogleService-Info.plist"
    firebase_app_id=$(/usr/libexec/PlistBuddy -c "Print :GOOGLE_APP_ID" "$gsinfo_plist_path")
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai $firebase_app_id -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai $firebase_app_id -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
fi

Xcodeは26.2。

対処法

upload-symbolsコマンドのパスが変わっただけなので、パスを書き換えてあげればOK。新しいパスは以下。

${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols

これを用いてスクリプトを修正する。

if [ "$CONFIGURATION" = "Release" ]; then
    gsinfo_plist_path="$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/GoogleService-Info.plist"
    firebase_app_id=$(/usr/libexec/PlistBuddy -c "Print :GOOGLE_APP_ID" "$gsinfo_plist_path")
    upload_symbols="${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols"
    $upload_symbols --build-phase --validate -ai $firebase_app_id -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $upload_symbols --build-phase -ai $firebase_app_id -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
fi

※なぜかaliasは動作しなかった。

参考

https://stackoverflow.com/questions/76926943/firebase-automate-uploading-dsyms-swift-package-manager