Xcode Error:Multiple commands produce 〜の対応方法

対応方法

おすすめ順

  • CocoapodsのPodfileに記述しているuse_frameworks!を削除する
  • 重複しているFrameworkを削除
  • CocoaPodsを使わないようにする
  • Build SystemをLegacy Build Systemに戻す

Multiple commands produceは何故起きるのか?

Xcode10からビルドシステムは今までのLegacy Build Systemと新しいNew Build Systemがあります。
今までLegacy Build SystemからNew Build Systemに変わったので起きている問題です。

なら今までのLegacy Build Systemに戻せば問題は起きないのですが、
AppleがNew Build Systemをわざわざ作ったので適応しておく方がいいでしょう

New Build Systemで何が問題なのか

Legacy Build SystemではFrameworkが重複していてもシステムは問題にしていなかったのですが、
新しいシステムでは重複しているとエラーになるようになりました。

Cocoapodsを使いSwift用のライブラリーを使うにはPodfileにuse_frameworks!記述する必要がありました。
Swiftが導入されたとき、静的ライブラリはサポートされていなかったため、すべてuse_frameworksでFramework化して利用していました。
すべてFramework化している分重複してくるFrameworkもでてきて、
今回それが問題となっています。

対応方法

重複させない方法

というわけでPodfileに記述しているuse_frameworks!を削除し再構築してください、

重複しているFrameworkを削除する

Build Phasese > Embed Frameworks から[CP] Embed Pods Frameworksでエラーの出たFrameworkを削除する

CocoaPodsを使わないようにする

Carthageに変更できるなら問題は起きないようです。

Build SystemをLegacy Build Systemに戻す

問題の起こる前に戻せば問題は起こらないですね!

ただ、AppleがNew Build Systemをわざわざ作ったくらいなので、対応しておいた方が良いかと思います。

どうしてもエラーが解消できない場合のみ考えるといいでしょう

タイトルとURLをコピーしました