#環境
- 2021/01/26時点
- M1チップのMacBook airを使用
- ターミナルは基本的にrosettaを利用しないでarm64を利用
- この記事に乗っ取ってhomebrewをarmとintelを使い分けられるようにして、homebrewを利用してrbenvをインストール
- rbenvで2.7.2をインストールしてglobalに設定
- rbenvで入れたrubyにcocoapodsをインストール
#起きている問題
-
pod installl
が動かない。
→原因としてはこのissueで語られていること -
上記記事にある解決策を試しても解決しない
記事の中では一旦ffiをアンインストールしてターミナルをrosettaを利用してintelに切り替えて、↓をしろと言っている
sudo gem install ffi
日本語の参考記事→[M1チップ(Apple Silicon)搭載のMacでCocoaPodsが動かない時の対応](M1チップ(Apple Silicon)搭載のMacでCocoaPodsが動かない時の対応)
#原因
- cocoapodsのインストール先をrbenvでインストールしたrubyにしていたことが原因。issueの中でも以下のようにコメントがある
For anyone using a non-system ruby with rbenv and facing issues with ffi - switching to the system ruby (atleast locally in the project directory) and following the above steps helped me
#解決策
- xcodeを利用するディレクトリだけsystemのrubyを使用するように設定
- ターミナルはrosettaを利用してintelにする
- systemのrubyに対してcocoapodsをインストール
arch -x86_64 sudo gem install cocoapods
- 同様にffiをインストール
arch -x86_64 sudo gem install ffi
- あとは普通に
pod install
すれば動くはず。ちなみに一度intelで上の工程を行えばpod install
するときはarmでも動く- ※追記(2021/02/05):やはりarmでは動かなかった。
pod install
するときには、この記事と同様に設定している場合はswitch-arch
でintelに切り替えてから行う必要がある。 - ちなみに、今のterminalがarmかintelかを判断をするには
uname -m
と実行するとわかる
- ※追記(2021/02/05):やはりarmでは動かなかった。
感想
- なぜrbenvで入れたcocoapodsが動かないのか?
→ffiというライブラリがarmに対応していないのが原因らしい。rbenvはarmに対応しているため、arm版のrbenvでいれたrubyはopt/homebrew/
配下にインストールされる。そのため、そこにcocoapodsを入れると動かないのか? よくわからない
- systemのrubyにcocoapods入れるのがちょっと気持ち悪い。環境汚したくないとか考えると、できれば全部rbenvの中だけ完結するようにしたい。
→ほとんどの記事でpodの操作の時にはsudo
をつけているから、そもそもcocoapodsはsysytemのrubyに入れるのが常識だったりする?? (rbenvで入れたrubyにインストールするときはsudo
が必要ない)
- iOS開発する時にrubyをsysytemの切り替えるの忘れそう
Twitterもやってるので、よければフォローお願いします。
→https://twitter.com/ObataGenta