浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【XCode 13】CocoaPodsのアップデートが「Failed to build gem native extension.」エラーで失敗する

iOS プロジェクトで pod init コマンドを実行したところ、何らかのバージョンエラーで処理が失敗する現象に遭遇しました。
なんでも、XCode のバージョンを 13 に上げると発生するみたいです。
で、こちらのエラーは CocoaPods のバージョンを上げれば解消されるとのことだったので、下記の記事を参考に CocoaPods を更新しようとしたところ、今度はまた別のエラーが発生しました…。

[備忘録] Xcode13でpod initにエラーが出たのをどう解消したかメモ – Qiita
https://qiita.com/kudpig/items/62d71b46c6e0e5de2d31

タイトルにもある通り、「Failed to build gem native extension.」というエラーです。
こちらは Ruby 関係のエラーらしいです。

 

こちらの対応にあたり、参考にさせていただいた記事はこちらから。

CocoaPodsのインストールで手間取ったこと – Qiita
https://qiita.com/spring_i/items/181bc3c05142d1f80d93

実行したコマンドはこちら。

sudo gem install -v1.11.2 cocoapods -n /usr/local/bin

しかし、今度は Permissions エラーが発生しました。

gem install が permissions エラーでインストールできない場合の対処手順 – .NET ゆる〜りワーク
https://www.yururiwork.net/archives/1563

上記を参考に、gem 及び ruby のパスの変更と、Ruby のバージョンをアップデートしてみました。
実行したコマンドは下記の通りです。

// 現在の gem と ruby のパスを確認
which gem
which ruby

// brew のアップデート
brew update

// rbenv と ruby-build をインストール
brew install rbenv ruby-build

// 現在の Ruby のバージョンが、システムの Ruby を指しているか確認
rbenv versions

// 最新の Ruby のバージョンをインストール(現時点では 3.0.1)
rbenv install 3.0.1

// Ruby のバージョンを変更
rbenv global 3.0.1

// gem コマンド及び ruby コマンドのパスを変更
vim ~/.bash_profile

.bash_profile には下記を記述して保存してください。

[[ -d ~/.rbenv  ]] && \
  export PATH=${HOME}/.rbenv/bin:${PATH} && \
  eval "$(rbenv init -)"

.bash_profile を保存して閉じたら、下記のコマンドを実行します。

// .bash_profile の変更を反映
source ~/.bash_profile

作業は以上で完了です!

あとは、再度下記のコマンドを実行して、CocoaPods を更新します。

// CocoaPods をインストール
sudo gem install -v1.11.2 cocoapods -n /usr/local/bin

// CocoaPods のバージョンを確認
pod --version

// CocoaPods のセットアップ
pod setup

pod --version コマンドを実行して、1.11.2 と表示されれば更新は成功です。
なお、アップデート後には pod setup コマンドを実行してセットアップを行なっておいた方がいいとのことでした。

上記まで行ったあと、iOS プロジェクトで pod init コマンドを実行したところ、今度は正常に実行され、Podfile が無事に作成されていました!
最初は次々にエラーが発生するのでどうなることかと思いましたが…なんとか解決できて良かったです。

 

以上、XCode 13 で pod init コマンドを実行時にエラーが発生する時の対処方法についてでした。
ご参考になれば幸いです

  • この記事いいね! (0)