image of 'red gemstone'.

cocoapodsのインストールで「ERROR: Failed to build gem native extension.」が出た場合の対処法メモ

Flutter の環境構築時に cocoapods のインストールで引っかかったので備忘録として残しておきます。

事象

以下を叩いたところエラーが表示された。

Terminal window
$ sudo gem install cocoapods

動作環境

Macbook Pro M1 2020 / macOS 13.6

まず Ruby のバージョンをチェックする

cocoapods は Ruby 製のライブラリであり gem コマンドを通してインストールすることになる。 そのため、Ruby のインストールが必須になる。

Ruby のバージョンは以下で確認できる。

Terminal window
$ ruby -v

また which コマンドでどこのパスの Ruby を見られているかもチェックしておく。

Terminal window
$ which ruby
/usr/bin/ruby

バージョンが 2.x であり、このパスが表示されると Mac に最初から入っているバージョンが使われている。この最初から入っているバージョンは古いことが多いため、今回のようなトラブルを防ぐためにも最新バージョンの Ruby を使うことが推奨される。

rbenv を使って Ruby のバージョンを上げて再度トライ

今回はrbenvを使って対応した。これを入れると Ruby のバージョン切り替えが手軽に出来るようになるので業務で使う場合は入れておいたほうがいい。

まず Homebrew 経由で以下を叩いてインストールします。(最新のバージョンが取得できるようにbrew updateは事前に済ませること!)

Terminal window
$ brew install rbenv ruby-build

インストールが終わったら以下コマンドで次どうするべきか教えてくれるので叩きます。

Terminal window
$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:
eval "$(rbenv init - zsh)"

~/.zshrcファイルに以下の行を追記してねと出てくるので、vi コマンドなどで案内された文をファイルの最後に追記します。

Terminal window
$ vi ~/.zshrc
$ source ~/.zshrc

そしてこれで保存。

Terminal window
$ source ~/.zshrc

ターミナルを開け直すと Ruby のバージョンが rbenv で入れたものに変わっているはずです。

Terminal window
$ ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]

もう一度 cocoapods をインストールすると成功!

Terminal window
$ sudo gem install cocoapods

(余談) Flutter 関係のトラブル

cocoapods のインストール後、こちらの環境だと今度は Flutter のパスが通らなくなったのでこちらも残しておきます。

Terminal window
$ flutter doctor
zsh: command not found: flutter

rbenv と同じ形で公式でダウンロードした Flutter フォルダの配置場所からパスを通してあげれば OK。 例えばドキュメントフォルダ配下のDevelopmentに設置した場合はこんな感じになる。

Terminal window
$ export PATH=/Users/XXX/Documents/Development/flutter/bin:$PATH

これが出れば Flutter の環境構築は終わり。

Terminal window
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.16.1, on macOS 13.6 22G120 darwin-arm64, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.84.2)
[✓] Connected device (2 available)
[✓] Network resources
No issues found!

参考サイト