もうかれこれRealmを使い出して、はや2年半くらいになります。
Realmは大きなライブラリなのでビルドする度にとても時間がかかっていました。ビルド1回終わるのに7〜8分かかってしまいます*1。
その都度ブーブー言ってたわけなんですけれど、ようやく重い腰を上げてCarthageを使ってみることにしました。
Carthageはライブラリをあらかじめビルドしてframeworkを作っておいてリンクするだけなので、ビルド時間を短縮することができます。この話を聞いてRealmをCartageで管理させることを決意しました。
今回、ikatomoを例にしてRealm,RealmSwiftのインストールをCartage経由でおこなうようにしたいと思います。
CocoaPodsからRealmを削除する
Carthageで管理するのであれば、CocoaPodsで管理する必要はないので、PodfileからRealmを削除します。
pod 'RealmSwift'
を削除しました。
Podfile
# Uncomment the next line to define a global platform for your project # platform :ios, '9.0' def shared_pods # pod 'RealmSwift' pod 'SDWebImage' end
pod installを実行してRealmを削除します。
$ pod install Analyzing dependencies Removing Realm Removing RealmSwift
これでRealmとRealmSwiftの削除が完了しました。
CarthageでRealmを追加する
次にRealmをCarthageで管理するためにCartfileを作成します。
$ touch Cartfile
Cartfileを生成しました。
Cartfile
github "realm/realm-cocoa"
インストールします。
$ carthage update *** Fetching realm-cocoa *** Downloading realm-cocoa.framework binary at "v2.9.0" *** xcodebuild output can be found in /var/folders/vb/5rg....log
XcodeのプロジェクトからビルドしたRealm.frameworkを参照します。
ビルドフェーズにRub Scriptを追加します。
/usr/local/bin/carthage copy-frameworks
Input Filesに以下のframeworkを追加します。
- $(SRCROOT)/Carthage/Build/iOS/Realm.framework *$(SRCROOT)/Carthage/Build/iOS/RealmSwift.framework
*1:Realmのビルドだけではないけれど、ビルド時間の大半をRealmが占めているのでやっぱり目立っちゃいます