
ついに私たちの《虾票票》入門 iOS シリーズの最後のセクション——CocoaPods の紹介と使用がやってきました。

多くを語らず、上記のアウトラインに従って 4 つのステップで説明を始めます。
何か、なぜ、どう使う?#
CocoaPods とは❓
公式の説明によれば、iOS アプリケーションを開発するためのサードパーティライブラリ依存管理ツールです。
なぜそれを使用するのか❓
それは、サードパーティのオープンソースライブラリを自動化、集中、直感的に管理できるからです。これは gradle や npm などに類似しています。
PS:iOS でよく使われるフレームワークの統合方法の比較は以下の通りです。《極客時間》を参考にしてください。

どう使うのか❓
- まずインストールします~
- 前提 --Ruby をインストール:
brew install ruby、CocoaPods は Ruby を基に構築されています; - CocoaPods をインストール:
sudo gem install -n /usr/local/bin cocoapods、gemは Ruby モジュールのパッケージ管理ツールです; - spec リポジトリ❗️をローカルにインストール:
pod setup、spec リポジトリはサイズが大きいので、☕️を飲みながら待ちましょう~
- 前提 --Ruby をインストール:
- 使用手順は以下の通りです:
cd [プロジェクトルートディレクトリ]- pod を初期化:
pod init、これで Podfile ファイルが生成されます; - Podfile を編集❗️
- プロジェクトに対応するコードライブラリ❗️を統合:
pod install - 使用時は、
#import <ヘッダーファイル>で OK です。
注意深いあなたは上記の 3 つの❗️に気づくかもしれません。これは今日の重点🎺🎺🎺です。以下の 2 つの質問を持って続けて見ていきましょう:
- Podfile をどう編集するのか?
- spec リポジトリとコードライブラリとは何か、それらの違いは?一時的に説明書と実物として理解できます。
まず最初の質問を見てみましょう:Podfile をどう編集するのか?
Podfile の編集#
Podfile の基本テンプレートは以下の通りです:
platform :ios, '9.0' # デバイスプラットフォーム「iOS」と最低サポートバージョン「9.0」を指定
inhibit_all_warnings! # すべての警告を禁止
use_frameworks! # 動的ライブラリを使用、そうでなければ静的ライブラリを使用
target 'MyApp' do # targetは対象のtarget名を指定
pod 'Masonry', # Mansonryの最新バージョンをインポート
pod 'YYModel', '1.0.4' # YYModelの1.0.4バージョンをインポート
pod 'ObjectiveSugar', '>= 0.5.2' # ObjectiveSugar>=0.5.2の最新バージョンをインポート
target 'MyAppTests' do # テスト用のtargetをネスト
inherit! :search_paths # 上記の検索パスを継承(少なくとも上記のサードパーティライブラリを含む)
pod 'OCMock', '~> 2.0.4' # OCMock>=2.0.4かつ<2.1の最新バージョンをインポート
end
end
- バージョン番号のマッチングルール、ネストして target を書くことで pod の重複を減らすテクニックに注意してください。詳細はコメントを参照してください。
簡単な Podfile の書き方を学んだので、次に《虾票票》が使用しているサードパーティライブラリを見てみましょう👇
- Masonry:UI レイアウト制約
- AFNetworking:ネットワークリクエスト
- SDWebImage:画像ダウンロード / キャッシュ / デコード
- YYModel:モデル変換(json と model)
- MJRefresh:プルダウンリフレッシュ、プルアップロード
- MBProgressHUD:loading インタラクション
あなたは Podfile の形を想像できますか?👇
source 'https://github.com/CocoaPods/Specs.git' # specリポジトリのアドレスを手動で指定できます
platform :ios, '9.0'
use_frameworks!
target 'ShoPiaoPiao_Example' do
pod 'ShoPiaoPiao', :path => '../' # :path=>を設定してローカルライブラリを引き出します
pod 'Masonry' # 上記の6つのサードパーティライブラリ
pod 'AFNetworking'
pod 'SDWebImage'
pod 'YYModel'
pod 'MJRefresh'
pod 'MBProgressHUD'
end
- 手動で指定した spec リポジトリは、会社や個人のプライベート Git リポジトリである可能性があります。⚠️:他のライブラリを手動で指定した場合、使用するすべての spec リポジトリを指定する必要があります。つまり、デフォルトの spec リポジトリ(最初のインストール時のもの)も指定する必要があります。
=> を設定してローカルライブラリを引き出すことができ、主にそのライブラリの開発に使用されます。 - ここでのサードパーティライブラリはすべて最新バージョンを使用することがデフォルトです。
温かい補足🎺:ここであなたは ShoPiaoPiao がどのようなサードパーティライブラリであるかを考えるかもしれません。それは《虾票票》のサードパーティライブラリに属しています。なぜそれがローカルインポートの方法で pod されているのか?実際には、私はサードパーティライブラリの開発方法を用いて《虾票票》このプロジェクトを開発しています。会社ではこの方法で開発することが多く、SDK 開発に似ています。以下の一般的なコマンドのセクションでもCocoaPods に基づくサードパーティライブラリの作成方法について言及します。
図解原理#
インターネットからの 3 つの図を借りて CocoaPods の基本原理を説明します。
前述の 2 つ目の質問に答えましょう:spec リポジトリとコードライブラリとは何か、それらの違いは?
図を見てください:

1) pod setup を通じて spec リポジトリをローカルにインストールすることは、実際にはリモートの CocoaPods 公式インデックスリポジトリをローカルに引き出すことを意味します。このインデックスリポジトリには、各サードパーティライブラリの説明情報が格納されており、それぞれがspec ファイルで保存されており、サードパーティライブラリのこれらの情報が含まれています:
- ライブラリ名
- バージョン番号
- 説明情報
- ソースコードのアドレス❗️
- ...
2)私たちが Podfile を作成し、 pod install を実行すると、CocoaPods は各ライブラリのソースコードのアドレスに基づいてソースコードを引き出してプロジェクトに統合します。(もちろん、このソースコードはキャッシュされます)
これで spec リポジトリとコードライブラリの違いを理解できたでしょうか?
次に、 pod install プロセスに関する 2 つの図解を見てみましょう:


番号と矢印に従って pod install のプロセスを理解してみてください。上記の説明を理解できれば、これらの 2 つの図を理解するのは問題ないでしょう~🤔
よく使うコマンド#
よく使うコマンドの図を整理しました。ツール図として保存できます。

🥩追加の食事: pod install VS. pod update
この 2 つの違いは何でしょうか?これは CocoaPods を初めて使用する際に最も一般的な疑問の一つです。
共通点:
- 目的はプロジェクトの依存コードライブラリを引き出すことです
- Podfile.lock を更新します
違い:
- 前者は Podfile.lock に制約され、後者は制約されません
- 後者はローカルの spec リポジトリを更新します
プロセスの詳細:
pod install
Podfile.lockに Podfile のライブラリがすでに含まれているかを確認します;
(一)もし含まれていれば、Podfile に指定されたバージョンがあるかを判断します:1)もし指定されたバージョンがあれば、Podfile.lock に保存されたバージョンが Podfile に指定されたものと同じかを確認します。同じであればスキップし、異なれば Podfile に指定されたものに更新します;2)もし指定されたバージョンがなければ、更新を確認せずにスキップします;
(二)もしそのライブラリが含まれていなければ、そのライブラリをダウンロードし、バージョンを Podfile.lock ファイルに保存します。
PS:Podfile.lock は一般的に Podfile でバージョンが指定されていないプロジェクトに適用されます。
pod update
Podfile.lock の記録を無視し、まず spec リポジトリを更新し、その後、Podfile ファイル内の依存ライブラリの指定バージョンを直接探します。指定がなければ最新バージョンを探します。
PS:pod update [PODNAME] で特定の Pod ライブラリを更新できます。
参考#
何か、なぜ、どう使う?
How do I install CocoaPods?——stackOverflow
CocoaPods Guides—— 公式
文書から CocoaPods の Podspec を理解する—— 簡書
Podfile の編集
本当に Podfile を書けますか—— 掘金
inherit!—— 公式
よく使うコマンド
pod install と pod update の違い—— 簡書
結び#
約 1 ヶ月の時間をかけて《虾票票入門 iOS》シリーズを書き終えました。ここまで読んでくれたあなたに何か得るものがあれば嬉しいです。あるいは自分で《虾票票》を実現できるかもしれません。成果を共有することを歓迎します~
今後、私は《虾票票》のソースコードを掲載するためのポータルを整理し、まとめを作成します✅。