Flutter iOSアプリのアーカイブでFlutter.framework dSYMエラーの解決法
エラーの概要
XcodeでiOSアプリをアーカイブした際、以下のエラーが発生することがあります:
The archive did not include a dSYM for the Flutter.framework with the UUIDs [4C4C**-5555-****-*****45CD327]
この問題は、Flutter.frameworkのデバッグシンボルファイル(.dSYM)がアーカイブに含まれていない場合に発生します。クラッシュレポートを正常に解析するためにはこのファイルが必須です。
主な解決方法
解決法1: Flutterを最新バージョンにアップグレード(推奨)
複数の報告で有効性が確認されている最もシンプルな解決策です。
terminal
# Flutterの安定版をアップグレード
flutter upgrade
効果
- Flutterのバグ修正が適用される
- Hermesエンジン関連の問題が解消される
- 2024~2025年の複数の報告で成功率が高い
解決法2: 手動でdSYMを生成して追加
アップグレードで解決しない場合の手動対応方法:
- フレームワークの場所を特定
bash
find ~/Library/Developer/Xcode/DerivedData -name "Flutter.framework" | grep -v "SourcePackages"
- dSYMを手動生成
bash
xcrun dsymutil -o ~/Desktop/Flutter.framework.dSYM \
/path/to/found/Flutter.framework/Flutter
- アーカイブに追加
- Xcode → Window → Organizer
- 最新のアーカイブを右クリック → "Show in Finder"
- .xcarchive を右クリック → "Show Package Contents"
- dSYMs フォルダに生成したファイルをコピー
解決法3: Xcodeビルドフェーズに自動生成スクリプトを追加
永続的な対策として有効です。
- Xcodeでプロジェクトを開く
- ターゲット → Build Phases
- "+" → New Run Script Phase
- スクリプトを追加:
bash
if [ -d "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework" ]; then
echo "🚧 Flutter.frameworkのdSYMを生成中..."
dsymutil "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework/Flutter" \
-o "${BUILT_PRODUCTS_DIR}/Flutter.framework.dSYM"
fi
Shorebirdユーザーの場合(解決法4)
Shorebirdを使用している場合の特別な手順:
- Shorebirdコンソール → アプリバージョン → Artifacts
- 「Flutter.dSYM」ファイルをダウンロード
- 解決法2の手順でアーカイブのdSYMsフォルダにコピー
予防策とベストプラクティス
ビルド前のクリーンアップ
bashflutter clean
Build Phasesの順序確認
Generate Hermes dSYM
フェーズが存在すること- 順序:
[CP] Embed Pods Frameworks
の直後に配置
Hermesを使用している場合の確認スクリプト
bashset -euo pipefail HERMES_BIN="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework/hermes" HERMES_DSYM="${DWARF_DSYM_FOLDER_PATH}/hermes.framework.dSYM" if [ -e "$HERMES_BIN" ] && [ ! -e "$HERMES_DSYM" ]; then echo "🛠 HermesのdSYMを生成しています..." /usr/bin/dsymutil "$HERMES_BIN" -o "$HERMES_DSYM" fi
注意点
flutter build ios --no-codesign
でビルドした場合、手動でのdSYM生成が必要- Xcodeの「Validate」実行前に対処するのが効果的
- 古いDerivedDataに起因する問題が多いため定期的にクリーンアップを
これらの対策でUUID不一致エラーはほぼ解決されます。シンプルなアップグレードから始め、問題が解消しない場合は段階的に高度な対策を適用してください。