Help us understand the problem. What is going on with this article?

cocoapodsの仕組みとバージョン固定

More than 3 years have passed since last update.

はじめに

iOS開発でのライブラリ管理といえばcocoapodsだと思います。
超有名なcocoapodsですが、一歩間違えば開発環境が変わってしまうことも。

開発者のローカルにあるcocoapodsのバージョンがまちまちだと
開発環境が変わってしまいますよね。
最悪の場合ビルドが出来ない可能性もあります。

そんな人のためにbundlerというものがありますが、
その前にcocoapodsについて簡単に仕組みを理解しておくと
ハマった時に何かと役に立つと思うので説明します。

1.cocoapodsとは

CocoaPodsLogo.gif
言わずと知れたiOS関係のライブラリ管理ツールですね。
cocoapodsはRubygemsに入っているgemです。
Rubygems?gem?

2.Rubygemsとは、gemとは

favicon.png
Rubygemsとはrubyに標準で搭載されているパッケージ管理ツールのことです。
そのパッケージはgemと呼ばれています。
Ruby on Railsはよく聞くと思いますが、
Railsもgemの一つでRubygemsを使ってインストールできます。

3.cocoapodsはgem

cocoapodsを最初にインストールした時に
$ sudo gem install cocoapods
を実行したのは覚えていますか?

Macにはrubyが標準でインストールされていて、
rubyの中にはRubygemsが標準で搭載されています。
そのRubygemsを使ってcocoapodsをインストールしているのです。

4.cocoapodsのバージョン固定の概要

Rubygemsのgemのバージョンなどを管理できるツールがあります。
それがbundlerというものです。
このbundlerを使うことでcocoapodsのバージョンを指定することができます。

5.バージョン指定をやってみる

bundlerのインストール

$ sudo gem install bundlerでbundlerがインストールされます。
お分かりの通りbundlerもgemです。
スクリーンショット_2015-09-15_0_12_51.png

bundlerの初期化

cocoapodsを使っているディレクトリに移動して、
$ bundle initをすると初期設定をしてくれます。
スクリーンショット_2015-09-15_0_21_26.png

初期化で作成されたGemfileの編集

$ vi Gemfileをするとデフォルトではこのようになっていると思います。
スクリーンショット 2015-09-15 0.24.38.png

このように編集していきます。 (バージョンは適宜変更してください)
スクリーンショット 2015-09-15 0.26.45.png

cocoapodsのインストール

$ bundle install --path vendor/bundle
Gemfileに書かれているライブラリをインストールします。
(ここではcocoapodsしか書いていないのでcocoapodsだけです)

指定バージョンでpod install

$ bundle exec pod install
今回の例だとcocoapodsの0.35.0でPodfileに書かれたライブラリを
インストールしてくれます。

podのバージョンは$ bundle exec pod --versionで確認ができます。

説明は終わりです!簡単だったでしょう?

ちなみに

bundlerを使わずにcocoapodsのバージョンを合わせる方法もあります。
cocoapodsをバージョン指定して再インストールするというものです。
これは開発者みんなにやってもらう必要があります。

※ただし複数のプロジェクトを扱っている場合は、
いちいち切り替えるのが面倒なのでおすすめしません。

今使用しているバージョンを確認

$ pod --version
0.38.2

指定したバージョンのcocoapodsをアンインストール

$ sudo gem uninstall cocoapods --version '=0.38.2'

バージョンを指定してインストール

$ sudo gem install -v 0.35.0 cocoapods

インストールしたバージョンを確認

$ pod --version
0.35.0

おわり

これで複数人での開発でも環境に相違なく開発ができると思います。
特にjenkinsなどのCIでリリースするときはやっておくと良いでしょう。

指摘や質問があればコメントください。

trsxxii
iOS/Android Developer. Swift, Objective-C, Java... Follow me!!!
recruitlifestyle
飲食・美容・旅行領域の情報サイトや『Airレジ』などの業務支援サービスなど、日常消費領域に関わるサービスの提供するリクルートグループの中核企業
http://www.recruit-lifestyle.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした