介紹
許多剛開始使用CocoaPods的人似乎認(rèn)為pod intall 只是用于你第一次用CocoaPods來創(chuàng)建項(xiàng)目, pod update是隨后一直應(yīng)用的。但是這并不是全部。
這個guide的宗旨是解釋你什么時候用pod intall 你什么時候用 pod update.
TL:DR:
1.用pod install 為你的項(xiàng)目安裝新的pod. 即使你已經(jīng)有了一個Podfile 并且之前已經(jīng)pod install了。所以即使你僅僅只是在一個已經(jīng)應(yīng)用CocoaPods的項(xiàng)目中添加、移除pod.
2.用pod update是在你想要把pods更新到一個新的版本。
命令的詳細(xì)描述
Note:單獨(dú)的intall vs. update的單詞對于CocoaPods并沒有實(shí)際上的明確意義。它是受其他的依賴管理像是bundler, RubyGems 或者comporser ,這些有相似的命令,有準(zhǔn)確相同的行為和意圖在這個文檔下描述的這些才有意義的。
pod install?
這個將會被第一次使用于在你的項(xiàng)目中檢索pod,也應(yīng)用于你每一次劍姬你的Podfile去添加、更新 、刪除一個pod.
1.每一次pod intall 命令運(yùn)行 ——下載 或者 更新新的pods ——在Podfile.lock為每一個pods寫入已經(jīng)安裝了的版本號。這個文件追蹤每一個已經(jīng)安裝的pod的版本,并且鎖定這些版本。
2.當(dāng)你運(yùn)行pod install,他僅僅解決并不在Podfile.lock中列入的pods的依賴。
? ? a.對于已經(jīng)在Podfile.lock中列入的pods,他不通過檢查是否新的版本是可用的,只下載在Podfile.lock中已經(jīng)明確的版本。
? ? b.對于那些還沒有在Podfile.lock中列入的pods, 他搜索匹配在Podfile中已經(jīng)寫入的版本(如 pod 'MyPod','~>1.2')
pod outdated
當(dāng)你運(yùn)行pod outdated, CocoaPods將列入比已經(jīng)在Podfile.lock上列表的所有版本的更新的版本(這些版本是已經(jīng)安裝的pod)。這就意味著你在這些pods上運(yùn)行pod update PODNAME,他們將會update —— 只要這些版本認(rèn)知匹配在你的Podfile中設(shè)置的 pod 'MyPod', '~>x.y'的限制條件。
pod update
當(dāng)你運(yùn)行pod upate PODNAME, CocoaPod將會試圖找到一個pod PODNAME已經(jīng)更新了的版本,不考慮已經(jīng)在Podfile.lock中列入的版本。它將會更新最新的版本(直到和你的Podfile中的版本一致)。
如果你只運(yùn)行pod update,沒有PODName, CocoaPods將會更新每一個你Podfile中列入的pod的最新版本。
使用
使用pod update PODNAME, 你將會更新一個特定的pod(檢查新版本是否存在并且相應(yīng)的更新)。相對的是pod install 不會更新你已經(jīng)安裝的pods.
當(dāng)你添加pod 到你的Podfile,你應(yīng)該運(yùn)行pod install, 而不是pod update —— 安裝這個新的pod 并且并不用冒險(xiǎn)在同一個進(jìn)程中來更新已經(jīng)存在的pod。
你僅僅可以使用pod update當(dāng)你想要更新特定pod(或者所有pod)的版本
提交你的Podfile.lock
作為提示,即使你們項(xiàng)目規(guī)則中并不需要提交Pods文件夾到你的倉庫中,你也應(yīng)該提交并push你的Podfile.lock文件。
否則,它將會打破整個關(guān)于pod install 將會鎖定你已經(jīng)的安裝的pods的邏輯。
舉例 ,并且原文 http://guides.cocoapods.org/using/pod-install-vs-update.html#intended-usage