3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

realmがimportでエラーになるからcarthageを導入してみよう

Last updated at Posted at 2019-11-05

はじめに

最初はcarthageなんて全く導入する気がなかったのですが、今ではこんなに便利なツールがあるんだなととても関心しています。せっかく導入したので手順を記録しておきます。

なぜ導入する必要があったか

きっかけはXcodeを11.2にアップデートしたことでした。
今までビルドできていたRealmを使っているプロジェクトがビルドできなくなりました。
エラーメッセージは「Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 compiler」との表示でした。

xcodeやswiftに詳しくない私は全く意味が理解できませんでしたが、よくよく調べてみるとswiftはimportしているフレームワークをビルドしたコンパイラーとxcodeで使用しているコンパイラのバージョンが少しでも異なると動かないとのことでした。
それなら最新のrealmを使えばいいのだと思い、realm公式サイトから最新のバイナリをダウンロードしてきてframeworkファイルを入れ替えましたが未だバージョンが違うようでエラーは消えませんでした。

どうしたらいいのか色々考えていた結果、githubに上がってるrealmのソースを最新のコンパイラでビルドしてやればいいとやっと気づきました。基本中の基本だと思いますが今までオープンソースの世界で育ってない私には理解するまでかなり時間がかかってしまいました。
そんな理解のまま色々探っているとcarthageにたどり着きました。
carthageはrealmのソースをgithubからダウンロードしてきてビルドまでをコマンド一つでやってくれます。なんて便利なんでしょうか。

導入手順

まずはbrewのパッケージを最新化します。

brew update

carthageをインストール

brew install carthage

realmを使ってるプロジェクトのパスに移動して、Cartfileファイルを作る

cd 〜〜〜〜〜〜〜
touch Cartfile

viで「github "realm/realm-cocoa"」を書き込んで保存

vi Cartfile

updateでgithubからソースを落としてきてビルドまでしてくれます。
platformでビルドする対象を指定できます。

carthage update --platform ios

私の環境ではupdate中に「error: unable to find utility "xcodebuild", not a developer tool or in PATH」のような内容が表示されてエラーになりました。が下記のようなコマンドを流すとうまくいきました。どんな意味なのか詳しく理解していませんが、コマンドライン上でxcodeを使う場合のxcodeのパスを指定しているようです。

sudo xcode-select -switch /Applications/Xcode11.2.app/Contents/Developer

何分か経ってから処理が完了し「/プロジェクトのフォルダ/Carthage/Build/iOS」の下に「Realm.framework」「RealmSwift.framework」がビルドされました。

ビルドされたファイルの使い方は下記の記事の通りで特に変わりなさそうです。
SwiftでRealmを動かしてみる

さいごに

まだまだ知らない便利なものが世の中にあるんだなと感激した内容でした。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?