使用規(guī)則:
1,當(dāng)你需要向向你的項(xiàng)目中安裝新的pod庫(kù)時(shí)使用pod install。即使之前你已經(jīng)有一個(gè)Podfile并且執(zhí)行了pod install,即使你是在向一個(gè)已經(jīng)使用了CocoaPods的項(xiàng)目中添加或移除pod庫(kù)
2,只有當(dāng)你想要更新pod庫(kù)的版本時(shí)才使用pod update。
pod install
pod install一般是你第一次想要為項(xiàng)目添加pod的時(shí)候使用的,它同樣也使用在你為Podfile文件添加或移除pod庫(kù)的時(shí)候。
原理:
1,每次pod install命令運(yùn)行的時(shí)候,pod install會(huì)為每一個(gè)它安裝的pod庫(kù)在Podfile.lock文件中寫(xiě)入其版本號(hào)。Podfile.lock文件追蹤每一個(gè)安裝的pod庫(kù)的版本號(hào),并鎖定這些版本號(hào)。
2,當(dāng)你運(yùn)行pod install是,它將只解決不在Podfile.lock中的pod庫(kù)依賴(lài)關(guān)系
2.1,對(duì)于在Podfile.lock文件中的pod庫(kù),pod install會(huì)只下載 Podfile.lock文件中指定的版本,而不會(huì)去檢查這個(gè)庫(kù)是否有更新的版本
2.2.對(duì)于不在Podfile.lock文件中的pod庫(kù),pod install會(huì)搜索這個(gè)pod庫(kù)在Podfile文件中指定的版本
pod update
當(dāng)你運(yùn)行了pod update PODNAME命令,CocoaPods會(huì)在不考慮Podfile.lock中版本的情況下試著去查找PODNAME的最新版本。pod update PODNAME命令會(huì)將相應(yīng)的pod更新到最新的版本(新版本仍然遵守你在Podfile中做的限制)
在Podfile中使用確定的版本是不夠的
有人認(rèn)為通過(guò)在Podfile中為pod指定確定的版本就足夠保證所有的用戶(hù)都會(huì)擁有相同的版本。
隨后他們可能會(huì)只使用pod update(即使是在添加一個(gè)新pod時(shí)),并且認(rèn)為這將不會(huì)更新其他pod庫(kù)版本,因?yàn)橐呀?jīng)在Podfile中指定了確定的版本。
但是事實(shí)上,這樣做不能夠保證用戶(hù)1和用戶(hù)2總是取得完全相同的pod庫(kù)版本。
一個(gè)典型的例子是,如果pod A依賴(lài)于podA2(通過(guò)在A.podspec中的dependency 'A2', '~> 3.0聲明的)。在這種情況下,在你的Podfile中使用pod 'A', '1.0.0'的確會(huì)強(qiáng)制用戶(hù)1和用戶(hù)2總是使用podA的1.0.0版本,但是:
用戶(hù)1可能會(huì)使用A2的3.4版本
同時(shí)當(dāng)隨后加入項(xiàng)目的用戶(hù)2運(yùn)行了pod install命令,他可能會(huì)得到podA2的3.5版本(因?yàn)锳2的維護(hù)者可能發(fā)布了一個(gè)新的版本)
這就是為什么唯一能夠保證團(tuán)隊(duì)中所有的成員都用使用pod庫(kù)的相同版本的方法就是使用Podfile.lock并且正確的使用pod install和pod update