1. 程式人生 > >iOS開發知識之:pod install與pod update的區別

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總是使用podA1.0.0版本,但是:

  • 使用者1可能會使用A23.4版本
  • 同時當隨後加入專案的使用者2運行了pod install命令,他可能會得到podA23.5版本(因為A2的維護者可能釋出了一個新的版本)

這就是為什麼唯一能夠保證團隊中所有的成員都用使用pod庫的相同版本的方法就是使用Podfile.lock並且正確的使用pod installpod update


轉載自:https://blog.csdn.net/ShorewB/article/details/52207569