The definitive guide to install and updating pods
pod install
とpod update
の違いは微妙で、どちらを使うべきかは必ずしも明確ではありません。 しかし、これらのコマンドが何をするかをよく理解することで、プロジェクトで依存関係をどのように管理するかをより細かく制御できるようになるので、この違いを知ることは価値があります。
この記事の最初の部分では、いくつかのよくある状況で pod install
または pod update
を実行すべきか示すレシピのリストを提供します。
これらのレシピが動作するためには、Podfile
と Podfile.lock
がソース・コントロールにコミットされていることを確認してください。
あなたは初めてプロジェクトで CocoaPods をセットアップし、Podfile
pod install
これにより、新しい Podfile で指定した各 Pod の最新バージョン* がインストールされます。 5008>
You added a new pod to your Podfile
pod install
これは、他のポッドを変更せずに、Podfile に追加された新しいポッドの最新バージョン* をインストールします。
代わりに pod update
を実行すると、新しい Pod をインストールし、既存の各 Pod を最新バージョン* に更新します。
Podfile にあるすべての Pod の最新バージョンを取得したい場合
pod update
これにより、すべての Pod を調べて、プロジェクトにそれぞれの最新バージョン* がインストールされているかどうか確認します。
Podfile
pod update SomePod
これにより、他の Pod を変更しないまま、指定した Pod の最新バージョン* がインストールされることが確認されます。
開発ポッドで作業していて、最新の変更を取得したい場合
pod update MyDevelopmentPod
これは、他のポッドを変更せずに、指定したポッドの最新バージョンがインストールされることを確認します。
CocoaPods
pod install
を使用する既存のプロジェクトのソースをダウンロードした場合、ソース コードのこのカットで以前にインストールされたのと同じバージョンで Podfile のすべての Pod がインストールされます。 これは、最新バージョンがプロジェクト内の他のコードと互換性がない場合、プロジェクトをビルドできないようにする可能性があります。 5008>
Build Server
でプロジェクトをビルドするスクリプトを書いている場合
pod install
これにより、ビルドされるバージョンでインストールされたのと同じバージョンで Podfile のすべての pod がインストールされます。 これは安定したビルドにとって重要です。なぜなら、これらはコードが開発されたバージョンであり、コードのカットのすべてのビルドが同じポッドバージョンを使用することを意味するからです。 5008>
Xcode は、Pod に関連する奇妙なビルド エラーを報告する
これは、Pod を更新した後、または異なるバージョンで同じ Pod を含むプロジェクトの分岐間を切り替えた後に時々発生する現象です。
/Pods
ディレクトリを削除し、pod install
を実行する。
これにより、Podfile のすべての Pod が、以前にインストールされていたのと同じバージョンで再インストールされ、通常、Xcode が発見する問題を正すのに十分です。 これは Xcode でのすべての問題を解決しますが、Podfile の各 Pod を最新バージョンにアップグレードします*。
Part 2: How it works
pod install
と pod update
の違いは、それらが Podfile.lock
ファイルとどう作用するかにあります。 このファイルは、プロジェクトに現在インストールされている各 Pod の正確なバージョンを保存するために使用されます。
これがどのように機能するかを理解する最も簡単な方法は、次の図を見ることです (免責事項:これは正確な技術図ではなく、簡単な回路図です)。
pod update
pod update
はバージョンを確認する際に Podfile.lock
は無視されます。 5008>
pod install
pod install
は、バージョンをチェックする際に、まず Podfile.lock
を調べます。 もし Pod のバージョンが Podfile.lock
にリストされていれば、その正確なバージョンをインストールします。 Podfile.lock
にリストされていない場合 (または Podfile.lock
がまだ存在しない場合) は、pod update
と同様に動作し、つまり、最新の利用可能なバージョン* を見つけてそれをインストールします。
まとめ
この記事では、多くの一般的な状況において pod install
と pod update
のどちらを実行するかを示すレシピを提供しました。 そして、この 2 つのコマンドが異なる方法で動作する方法と理由を説明しました。 もし、この記事が役に立ったなら、拍手と/または、シェアをお願いします。