[firebase_crashlytics]: Auto-added "Crashlytics Upload Symbols" build phase fails Debug device builds (no dSYM), including flavored Debug-* configurations
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 78/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 領域
- build-system, mobile
調査の方向性
ios/crashlytics_add_upload_symbols と、issue に記載されている podspec の呼び出しから始めます。物理デバイス上で flutter run --flavor staging を実行して flavor 付きの Flutter iOS アプリで再現し、その後、生成された upload-symbols フェーズが Debug-* 構成とシミュレータをスキップし、Release ビルドではシンボルのアップロードが維持され、ビルドが成功することを確認します。
索引モデルが issue の本文から書いたものです。
説明
Is there an existing issue for this?
- I have searched the existing issues.
Which plugins are affected?
Crashlytics
Which platforms are affected?
iOS
Description
ios/crashlytics_add_upload_symbols (run from the podspec during pod install) adds a [firebase_crashlytics] Crashlytics Upload Symbols build phase to the Runner target with this script:
"$PODS_ROOT/FirebaseCrashlytics/upload-symbols" --flutter-project "$PROJECT_DIR/firebase_app_id_file.json"
It has no Debug skip. With the default Flutter iOS template, Debug uses DEBUG_INFORMATION_FORMAT = dwarf, so no dSYM is produced. When running flutter run against a physical device, upload-symbols logs this about once per second for ~30 seconds:
upload-symbols[...] Unable to get file attributes for dSYM file at path ".../build/ios/Debug-staging-iphoneos/Runner.app.dSYM/Contents/Resources/DWARF"
and then exits non-zero, failing the build:
warning: DEBUG_INFORMATION_FORMAT should be set to dwarf-with-dsym for all configurations. ...
Unable to process Runner.app.dSYM at path .../build/ios/Debug-staging-iphoneos/Runner.app.dSYM
Processing dSYMs...
Command PhaseScriptExecution failed with a nonzero exit code
A common workaround is to hand-add a guard to the phase:
if [ "$CONFIGURATION" = "Debug" ] || [ "$PLATFORM_NAME" = "iphonesimulator" ]; then
exit 0
fi
This doesn't work for flavored apps. Flutter requires flavored build configurations to be named Debug-<flavor>, Release-<flavor>, etc., so $CONFIGURATION is e.g. Debug-staging and the guard never matches.
Proposed fix
Have crashlytics_add_upload_symbols generate a phase that skips all Debug configurations and simulator builds:
case "$CONFIGURATION" in
Debug*) exit 0 ;;
esac
if [ "$PLATFORM_NAME" = "iphonesimulator" ]; then
exit 0
fi
"$PODS_ROOT/FirebaseCrashlytics/upload-symbols" --flutter-project "$PROJECT_DIR/firebase_app_id_file.json"
Alternatively, warn and exit 0 when the dSYM is missing instead of failing the build.
Reproducing the issue
- Create a Flutter app with a flavor, e.g.
staging(build configurationsDebug-staging,Release-staging,Profile-staging). - Add
firebase_coreandfirebase_crashlytics, runflutterfire configure, thenpod installso the upload-symbols phase is added. - Keep
DEBUG_INFORMATION_FORMAT = dwarfforDebug-staging(the template default for Debug). flutter run --flavor staging -t lib/main_staging.dart -d <physical iOS device>- The build fails in the
[firebase_crashlytics] Crashlytics Upload Symbolsphase.
Expected: Debug builds skip symbol upload and the build succeeds.
Firebase Core version
4.9.0
Flutter Version
3.47.2 (stable, d3b14c8769)
Flutter dependencies
- firebase_core 4.9.0
- firebase_crashlytics 5.2.2 (reproduced).
crashlytics_add_upload_symbolsis byte-for-byte identical in 5.4.0 and onmain, and the 5.4.0 podspec still invokes it. - Firebase iOS SDK
upload-symbols3.21 (latest) - Xcode 26.4.1 (17E202), macOS 26.5.1, iOS 26 device (wireless debugging)
Additional context and comments
Same symptom reported in #11934 (fails only on flutter run to device; closed with a pointer to the docs), #11547, #13428 and #12990. None of them addresses flavored Debug-* configurations or changes the generated script, which is unchanged on main (last modified in #17852).
- 主要言語
- Dart
- スター
- 9.3k
- フォーク
- 4.1k
- 平均マージ
- 3日 4時間
- マージ済み PR(30日)
- 56
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
firebase/flutterfire のほかの issue
-
Needs Attention platform: android type: infrastructure umbrella
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
firebase/flutterfire#18832 ·
メンテナーはふだん 1 日以内に返信
-
Needs Attention platform: ios platform: macos plugin: cloud_firestore type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 20/100
firebase/flutterfire#18829 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[firebase_auth]: authStateChanges() never emits null when the user is force-signed-out before the stream is listened to (iOS, macOS, Android)対応中かも @JulianPscheid が 8 日前に担当しました。 オープンNeeds Attention platform: android platform: ios platform: macos plugin: auth reproduced type: bug
難易度 4/5 1〜2日 初心者へのやさしさ 15/100
firebase/flutterfire#18796 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
blocked: customer-response Needs Attention platform: ios plugin: messaging Stale type: bug
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
firebase/flutterfire#18776 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
[firebase_storage] Windows native crash in upload progress callback, sink ownership and thread dispatch再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンblocked: flutter platform: windows plugin: storage reproduced type: bug
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
firebase/flutterfire#18664 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
firebase/flutterfire の issue をすべて見る
似ている issue
-
good first issue spells
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
type:bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 2 日以内に返信
-
Standalone dash flashes as its own RSVP step (e.g. Russian dialogue)対応中かも @bezig01 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
daniel-pimenta-cc/ledor#53 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 2 日以内に返信