##はじめに
xcode9でビルドを行おうとしたところ、carthageで導入しているライブラリに関して以下のエラーがでました。
Module compiled with Swift 3.0.1 cannot be imported in Swift 3.2
解消までに少々ハマったので、備忘録がてら原因と解決方法を記載いたします。
##検証環境
以下の環境を使用しています。
- macOS Sierra Version 10.12.5
- Xcode Version 9.0.0 β3
- Xcode Version 8.3.2 (異なるversionのxcodeを入れています)
- iPhone7 iOS11.0.0 β3
##原因
carthageでライブラリを導入する際に使用する以下のコマンドでxcode buildが内部的に行われますが、ここで使用されているXcodeがXcode8.3.2であることが原因でした。
carthage update --platform iOS
##解決方法
以下の手順で解決しました。
-
Xcode build で使用しているXcodeのpath確認
xcode-select -p
- 出力例
/Applications/Xcode.app/Contents/Developer
-
使用するXcodeのパス変更
sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer
- root権限が必要とされるので、sudoで実行しています。
-
再度、Xcode build で使用しているXcodeのpath確認
- xcode-select -pで指定したものに変わっていればOK
/Applications/Xcode-beta.app/Contents/Developer
-
ライブラリ再ビルド前の準備
- projectのderived dataを削除
- 削除したderived dataをゴミ箱から削除
-
carthageでライブラリをビルド
carthage update --platform iOS --no-use-binaries
-
projectのビルドを実施
上記手順で、carthageでライブラリをビルドする際のxcodeとしてXcode-betaが使用されますので、Xcode9で対象プロジェクトのビルドができるようになります。
※ Xcode-betaとしているところはご自身で使用されているXcodeの名前と合わせてください。