今日、重い腰を上げて、メインのXcodeを7.3にして、Xcode7.2.1はリネームして保存し、
個人的に制作しているアプリやライブラリを少しずつSwift2.2対応させています。
といっても、大した対応はしなくて良さそうなのでホッとしています。
Carthage経由で入れたライブラリをビルドし直す
さて、Swift2.1.1→Swift2.2にしたということで、Carthage
経由で入れているライブラリは一度ビルドし直さないといけないので、
build
コマンドか、アップデートの確認も兼ねてbootstrapかupdate
コマンドを叩いてあげる必要があります。
(ライブラリの作者さんがSwift2.2対応をしている最新版をあげている可能性があるので、updateをおすすめします。)
$ carthage bootstrap
# or
$ carthage update --platform iOS
これで少し時間がかかりますが、順調にライブラリがビルドし直され、.framework
が生成されていきます。
無事終わったら、プロジェクトを開いてビルドをします。すると…
場合によってはエラーが出る
もし、carthage経由で入れるライブラリのうち、ビルドしてframeworkを生成するのではなくて、
GithubのReleasesにあげているバイナリデータ(framework.zip
)をダウンロードして展開するタイプのものがあった場合かつ、
そのバイナリがSwift2.2以下(Xcode7.3以前)でビルドして作成されたものだと、以下のようなエラーがでます。
エラーは、APIKitのv1.2.1のケースです。
Module file was created by an older version of the compiler; rebuild 'APIKit' and try again: /Users/user/src/project/Carthage/Build/iOS/APIKit.framework/Modules/APIKit.swiftmodule/x86_64.swiftmodule
–no-use-binariesをつける
デフォルトで、carthageでbootstrapやupdateコマンドを使う時は、バイナリデータがあればそっちを引っ張って来て展開するようになっているので、
--no-use-binaries
を付けてあげます。
$ carthage update --platform iOS --no-use-binaries
バイナリデータ展開ができるものならその方がビルド時間が短縮できるので嬉しいのですが、
バイナリデータをGithubにあげている全てのライブラリがSwift2.2に対応したバイナリデータをあげているとは限らないので、
当分は--no-use-binaries
を付けたほうが良さそうです。
carthage待ちの時間を有効活用する方法を考えよう。