Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[firebase_crashlytics]: Auto-added "Crashlytics Upload Symbols" build phase fails Debug device builds (no dSYM), including flavored Debug-* configurations

クローズ 初心者向け
#18,722 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
78/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
dart, firebase, ios, shell

調査の方向性

ios/crashlytics_add_upload_symbols と、issue に記載されている podspec の呼び出しから始めます。物理デバイス上で flutter run --flavor staging を実行して flavor 付きの Flutter iOS アプリで再現し、その後、生成された upload-symbols フェーズが Debug-* 構成とシミュレータをスキップし、Release ビルドではシンボルのアップロードが維持され、ビルドが成功することを確認します。

索引モデルが issue の本文から書いたものです。

説明

Needs Attention platform: ios plugin: crashlytics type: bug
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
  1. Create a Flutter app with a flavor, e.g. staging (build configurations Debug-staging, Release-staging, Profile-staging).
  2. Add firebase_core and firebase_crashlytics, run flutterfire configure, then pod install so the upload-symbols phase is added.
  3. Keep DEBUG_INFORMATION_FORMAT = dwarf for Debug-staging (the template default for Debug).
  4. flutter run --flavor staging -t lib/main_staging.dart -d <physical iOS device>
  5. The build fails in the [firebase_crashlytics] Crashlytics Upload Symbols phase.

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_symbols is byte-for-byte identical in 5.4.0 and on main, and the 5.4.0 podspec still invokes it.
  • Firebase iOS SDK upload-symbols 3.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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

firebase/flutterfire のほかの issue

firebase/flutterfire の issue をすべて見る

似ている issue

Dart の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。