なすびのブログ

iOS・swiftの情報を気ままに書いていきます。

【Xcode】CocoaPodsのインストール

はじめに

こんにちは、なすびです!
最近ライブラリ管理ツールには専らCarthageばかり使っています。
そこでいざCocoaPodsを使おうとインストールしようとしたらハマってしまったのでメモに残します。

開発環境

MacOS 10.14.1(Mojave)
Xcode 10.1

導入手順

インストール手順は色々書かれているので簡単に。
参考サイト:【Swift】CocoaPods導入手順 - Qiita

環境構築

ターミナルからコマンドを順番に実行する。
・CocoaPodsをgemでインストール
El Capitanからrootlessという概念が登場してrootユーザーでも/usrの権限がないみたいです。
そのためインストール先を/usr/local/binをしています。
参考サイト:MacOSX El Capitanでcocoapodsインストールが出来ない時の対処法 - Qiita

$ sudo gem update
$ sudo gem install -n /usr/local/bin cocoapods

・CocoaPodsをセットアップする
これでレポジトリの設定とか諸々してるっぽい

$ pod setup

ライブラリ管理

・Podfileを作成する
実行するとプロジェクトのディレクトリ直下にPodfileが自動で生成されます。

$ cd [プロジェクトのディレクトリ]
$ pod init

・Podfileにライブラリを追記する

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target '[プロジェクト名]' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for [プロジェクト名]
  # ここを追加
  pod 'OpenCV'

  target '[プロジェクト名]Tests' do
    inherit! :search_paths
    # Pods for testing
  end

  target '[プロジェクト名]UITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

・ライブラリをインストールする

$ pod install

※2回目以降の場合

$ pod update


「pod install」実行後xcworkspaceが作成されます。以降のプロジェクトはxcworkspaceから開きます。
あとはそれぞれライブラリを使うコードにimportして使います。

podのコマンドでエラーが発生する

本当なら上記の手順だけでいいはずだったんですが、私の場合エラーが発生してうまくいきませんでした。
podコマンドを入力すると以下のようなエラーが。。。

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- rubygems/core_ext/kernel_warn (LoadError)

kernel_warnが読み込めないと。なるほどよくわからん。
とりあえず再度インストールし直しても変わらず。

しょうがないのでログを見ているとgemをアップデートしているときに一部エラーが発生していることに気づく。

$ sudo gem update
...
ERROR:  Error installing did_you_mean:
    did_you_mean requires Ruby version >= 2.5.0.
...

んーこれが原因かわからんけど少なくともエラーが起きてるからRubyバージョンを上げてみる。
参考サイト:【2018年版】macにrbenvを入れてrubyを管理できるようにしちゃう - Qiita

再びCocoaPodsのインストールをするとできた!

最後に

とりあえずCocoaPodsのインストールは無事に終わりました。
いつもこの辺りは思考停止してコマンドを入力しているだけだったのでエラーの原因がわからないことが多いです。
まあ今回はRubyのバージョン違い程度でしたが、やっぱりきちんと理解した上でやらないとですね。
反省反省。

今後もブログではswiftやiOSに関する内容を書くのでよかったら読者登録お願いします!