[Xcode/Error] Cycle inside xxx; building could produce unreliable resultsみたいなエラーが出た

Contents 非表示

背景

CocoaPodsで管理してるFirebaseをSPM (Swift Package Manager)に移行するための作業をしている時に発生。

SPMでFirebase依存関係を整えた後に、ビルド実行したらこのエラーが出ました。


原因

Build Phaseの実行順序が問題らしい、PodなりCarthageの時の順序だと弾かれるぽい。

なぜSPMにしてからエラーになったのか?

CocoaPodsやCarthageだけの時は、Xcodeにとって外部ライブラリは「すでにそこにある完成品」に近い扱いでした。しかし、SPMはXcodeのビルドプロセスの中に深く組み込まれます。

  1. 依存関係の複雑化: SPMはビルド時にソースからコンパイルされるため、Xcode全体の「依存関係のグラフ」が巨大になります。
  2. 実行順序の矛盾: ログを見ると、MinChalleNotificationService(通知拡張)と本体のフレームワークコピー処理が、お互いの完了を待ってしまう「デッドロック」のような状態になっています。

by Gemini思考モード


解決

Build Phaseの整理する、以上。

  • CrashlyticsとかはCompile Sourcesの後にする
  • Carthage, Podとかのセットアップは上の方に置いて実行しておく