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',                    # Masonryの最新バージョンをインポート
  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 公式インデックスリポジトリをローカルに引き出すことを意味します。このインデックスリポジトリには、各サードパーティライブラリの説明情報が保存されており、それぞれが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 に指定されたバージョンがあるかを判断します: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》シリーズを書き終えました。ここまで読んでくださったあなたが何かを得られたり、《虾票票》を自分で実装できたりすることを願っています。成果を共有していただければ嬉しいです~

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

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