post Image
【メモ】Xcode9ビルドでCarthage経由で導入したライブラリに関してswift version errorが発生

はじめに

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

解決方法

以下の手順で解決しました。

  1. Xcode build で使用しているXcodeのpath確認

    • xcode-select -p
    • 出力例 /Applications/Xcode.app/Contents/Developer
  2. 使用するXcodeのパス変更

    • sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer
    • root権限が必要とされるので、sudoで実行しています。
  3. 再度、Xcode build で使用しているXcodeのpath確認

    • xcode-select -pで指定したものに変わっていればOK
    • /Applications/Xcode-beta.app/Contents/Developer
  4. ライブラリ再ビルド前の準備

    • projectのderived dataを削除
    • 削除したderived dataをゴミ箱から削除
  5. carthageでライブラリをビルド

    • carthage update --platform iOS --no-use-binaries
  6. projectのビルドを実施

上記手順で、carthageでライブラリをビルドする際のxcodeとしてXcode-betaが使用されますので、Xcode9で対象プロジェクトのビルドができるようになります。
※ Xcode-betaとしているところはご自身で使用されているXcodeの名前と合わせてください。


『 Swift 』Article List