目次
対応方法
おすすめ順
- 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をわざわざ作ったくらいなので、対応しておいた方が良いかと思います。
どうしてもエラーが解消できない場合のみ考えるといいでしょう