原文鏈接:https://guides.cocoapods.org/using/pod-install-vs-update.html

介紹
很多人剛接觸 CocoaPods 時都會覺得 pod install
只在第一次給項目配置 CocoaPods 的時候使用,pod update
只在之后使用。然而 壓根就不是那樣的。(譯者注:原文中還提到這里的install和update的含義和字典中的意思不完全相同,要具體問題具體分析,根據相關文檔來判斷。)
這篇文章的目的就是向你解釋什么時候該用 pod install
和 pod update
。
TL;DR:
- 在你的項目里安裝新pods時使用
pod install
。即使你已經有Podfile
和曾經運行過pod install
指令,所以即使你在已經使用CoacoPods的項目中剛剛增添/移除 pods,你也應當使用該命令。 - 只在你想讓pods升級到新版本時才使用
pod update
。
具體使用場景
pod install
當你第一次你想獲取pods項目時,以及當你每次編輯你的 Podfile
來增加、更新或者移除某個pod的時候。
- 每當你運行
pod install
指令時——下載和安裝pods時——CocoaPods都會把每個安裝的pods的版本,寫在 Podfile.lock 文件里。這個文件跟蹤紀錄了安裝了的pods的版本信息并鎖住版本。 - 當你運行
pod install
時,它只安裝沒有列在 Podfile.lock 里的pods。- 對于已經列在 Podfile.lock 中的pods,它會下載 Podfile.lock 中列的確切的版本,而不會去檢查這些pods是否有新的可用版本。
- 對于那些還沒有列在 Podfile.lock 中的pods,它會尋找滿足
Podfile
中約束條件的pods(例如 pod 'MyPod','~>1.2')
pod outdated
當你運行 pod outdated
,CocoaPods 會列出所有 Podfile.lock 文件中已經過時的pods。也就是說,如果你運行 pod update PODNAME
(PODNAME為列出的pods名稱),它們將會被更新(只要它們滿足 Podfile 中滿足的約束條件。)
pod update
當你運行 pod update PODNAME
,CoacoPods將會試著去找名為 PODNAME 的pod的更新版本,而不考慮 Podfile.lock 文件中的內容。它會將該pod更新至最新版本(同時只要它滿足Podfile中的約束),并且也會相應的更新 Podfile.lock 中的內容。
如果你運行 pod update
,不加任何參數,CocoaPods將會把所有在 Podfile 中列舉的pods更新到最新版本。
推薦用法
使用 pod update PODNAME
,你將只能夠更新一個特定的pod(檢查是否有新版本并且更新)。而不是像 pod install
那樣不去嘗試更新已安裝的pods。
當你把pod加入到 Podfile 后,你應當運行 pod install
而不是 pod update
。
也就是說,只有當你想去升級特定pod(或是全部pods)的時候才用 pod update [PODNAME]
。
把你的 Podfile.lock 加入到版本控制中
作為提醒,即使我們不需要把Pods項目上傳到版本管理的倉庫中,我們也應當始終commit & push 我們的 Podfile.lock 文件。
否則,it would break the whole logic explained above about pod install being able to lock the installed versions of your pods.
譯者注
原文末尾還舉了一個實際中應用 pod install 和 pod update 的例子,并提了一個不要在Podfile中寫死特定版本的建議。鏈接戳此https://guides.cocoapods.org/using/pod-install-vs-update.html。