Bo2SS

Bo2SS

(5)iOS入門完結:CocoaPodsの紹介と使用

美しい海は美しい空から来る

美しい海は美しい空から来る

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

image

多くを語らず、上記のアウトラインの 4 つのステップに従って説明を始めます。

何か、なぜ、どう使う?#

CocoaPods とは❓

公式の説明によると、それは iOS アプリケーションを開発するためのサードパーティライブラリ依存管理ツールです。


なぜそれを使うのか❓

それは、サードパーティのオープンソースライブラリを自動的に、集中して、直感的に管理できるからです。ここでは gradle や npm などに例えることができます。

PS:iOS でよく使われるフレームワークの統合方法の比較は以下の通りです。《極客時間》を参考にしてください。

《極客時間》からの引用


どう使うのか❓

  1. まずインストールする~
    1. 前提 --Ruby をインストール: brew install ruby 、CocoaPods は Ruby を基に構築されています;
    2. CocoaPods をインストール: sudo gem install -n /usr/local/bin cocoapodsgem は Ruby モジュールのパッケージ管理ツールです;
    3. spec リポジトリ❗️をローカルにインストール: pod setup 、spec リポジトリはサイズが大きいので、☕️を飲みながら待ちましょう~
  2. 使用手順は以下の通りです:
    1. cd [プロジェクトルートディレクトリ]
    2. pod を初期化: pod init 、これで Podfile ファイルが生成されます;
    3. Podfile を編集❗️
    4. プロジェクトに対応するコードライブラリ❗️を統合: pod install
    5. 使用時は、 #import <ヘッダーファイル> で OK です。

注意深いあなたは上記の 3 つの❗️に気づくかもしれません。これは今日のポイント🎺🎺🎺です。以下の 2 つの質問を持って続きを見ていきましょう:

  1. Podfile をどう編集するのか?
  2. 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 リポジトリとコードライブラリとは何か、それらの違いは?

図を見てください:

spec リポジトリとコードライブラリを探す

1) pod setupを使用して spec リポジトリをローカルにインストールすることは、実際にはリモートの CocoaPods 公式インデックスリポジトリをローカルに引き込むことです。このインデックスリポジトリには、各サードパーティライブラリの説明情報が保存されており、それぞれが 1 つのspec ファイルに保存されています。その中にはサードパーティライブラリの以下の情報が含まれています:

  • ライブラリ名
  • バージョン番号
  • 説明情報
  • ソースコードのアドレス❗️
  • ...

2)私たちが Podfile を作成し、 pod installを実行すると、CocoaPods は各ライブラリのソースコードのアドレスに基づいてソースコードを引き込んでプロジェクトに統合します。(もちろん、このソースコードはキャッシュされます)

これで spec リポジトリとコードライブラリの違いを理解できるのではないでしょうか?


次に、 pod installプロセスに関する 2 つの図を見てみましょう:

pod install プロセス - 1

pod install プロセス - 2

番号と矢印に従って pod installのプロセスを理解してみてください。上記の説明を理解できれば、これらの 2 つの図を理解するのは問題ないでしょう~🤔

よく使うコマンド#

よく使うコマンドの図を整理しました。ツール図として保存できます。

CocoaPods のよく使うコマンド


🥩追加の情報pod install VS. pod update

この 2 つの違いは何でしょうか?これは CocoaPods を初めて使用する際に最も一般的な疑問の 1 つです。

共通点

  • 目的はプロジェクト依存のコードライブラリを引き込むことです
  • Podfile.lock を更新します

違い

  • 前者は Podfile.lock に制約され、後者は制約されません
  • 後者はローカルの spec リポジトリを更新します

プロセスの詳細

pod install

Podfile.lockに Podfile のライブラリがすでに含まれているかを確認します;

(一)もし含まれていれば、Podfile に指定されたバージョンが Podfile.lock に保存されたバージョンと同じかどうかを確認します:1)指定されたバージョンが同じであればスキップし、異なれば 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》シリーズを書き終えました。ここまで読んでくれたあなたが何かを得られたり、《虾票票》を自分で実現できたりすることを願っています。成果を共有することを歓迎します~

今後、私は《虾票票》のソースコードをまとめたポータルを整理し、まとめを作成する予定です✅。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。