iOS開發知識之:pod install與pod update的區別
引言
許多使用cocoapod的人認為pod install
只在第一次使用CocoaPod設定專案的時候使用,pod update
是在設定完專案之後使用的,但事實並非如此。
這篇指南將會說明什麼時候應該使用pod install
,什麼時候應該使用pod update
。
如果你覺得這篇指南太過於冗長看不下去,那麼先給出乾貨:
- 當你需要向向你的專案中安裝新的pod庫時使用
pod install
。即使之前你已經有一個Podfile並且執行了pod install,即使你是在向一個已經使用了CocoaPods的專案中新增或移除pod庫。 - 只有當你想要更新pod庫的版本時才使用pod update。
命令的詳細介紹
pod install
pod install一般是你第一次想要為專案新增pod的時候使用的,它同樣也使用在你為Podfile檔案新增或移除pod庫的時候。
- 每次pod install命令執行的時候,pod install會為每一個它安裝的pod庫在Podfile.lock檔案中寫入其版本號。Podfile.lock檔案追蹤每一個安裝的pod庫的版本號,並鎖定這些版本號。
- 當你執行pod install是,它將只解決不在Podfile.lock中的pod庫依賴關係
- 對於在Podfile.lock檔案中的pod庫,pod install會只下載Podfile.lock檔案中指定的版本,而不會去檢查這個庫是否有更新的版本。
- 對於不在Podfile.lock檔案中的pod庫,pod install會搜尋這個pod庫在Podfile檔案中指定的版本
pod outdated
每當你執行pod outdated
命令時,CocoaPods會列出所有在Podfile.lock中的有新版本的pod庫。這意味著當你對這些pod使用pod update PODNAME
時,他們會更新(只要新版本仍然遵守你在Podfile
中做的類似於pod 'MyPod', '~>x.y'
這樣的限制)
pod update
當你運行了pod update PODNAME
命令,CocoaPods會在不考慮Podfile.lock
PODNAME
的最新版本。pod update PODNAME
命令會將相應的pod更新到最新的版本(新版本仍然遵守你在Podfile
中做的限制)
用法
通過pod update PODNAME
,你可以只更新某個特定的pod庫(檢查是否存在新版本並更新相應的pod庫)。相反,pod install
則不會去更新已安裝的pod庫。
當你向Podfile
中添加了pod,你應該使用pod install
而不是pod update
去在不更新已安裝的pod庫的版本基礎上安裝新新增的pod庫。
當你想過更新某個特定pod庫(或所有的庫)的版本時你只需要使用pod update
提交你的Podfile檔案
提醒一下,即使你沒有把Pods資料夾提交到你的共享倉庫,你都應該總是commit並push你的Podfile.lock檔案。
否則的話,將會破壞pod install
能夠鎖定pod庫的已安裝版本的整個邏輯(如上面所說的那樣)
在Podfile中使用確定的版本是不夠的
有人認為通過在Podfile
中為pod指定確定的版本就足夠保證所有的使用者都會擁有相同的版本。
隨後他們可能會只使用pod update
(即使是在新增一個新pod時),並且認為這將不會更新其他pod庫版本,因為已經在Podfile
中指定了確定的版本。
但是事實上,這樣做不能夠保證使用者1和使用者2總是取得完全相同的pod庫版本。
一個典型的例子是,如果pod A
依賴於podA2
(通過在A.podspec
中的dependency 'A2', '~> 3.0
宣告的)。在這種情況下,在你的Podfile中使用pod 'A', '1.0.0'
的確會強制使用者1和使用者2總是使用podA
的1.0.0
版本,但是:
- 使用者1可能會使用
A2
的3.4
版本 - 同時當隨後加入專案的使用者2運行了
pod install
命令,他可能會得到podA2
的3.5
版本(因為A2
的維護者可能釋出了一個新的版本)
這就是為什麼唯一能夠保證團隊中所有的成員都用使用pod庫的相同版本的方法就是使用Podfile.lock
並且正確的使用pod install
和pod update
轉載自:https://blog.csdn.net/ShorewB/article/details/52207569