許多以cocoapods開頭的人似乎認為pod install
只在第一次使用cocoapods設定專案時使用,pod update
之後才會使用。但事實並非如此。
本指南的目的是解釋何時使用pod install
以及何時使用pod update
。
tl; dr:
注意:這是在您第一次要檢索專案的pod時使用,也是每次編輯podfile以新增,更新或刪除pod時使用。install
vs 的詞彙update
實際上並不特定於cocoapods。它的靈感來自許多其他依賴管理器,如bundler,rubygems或composer,它們具有類似的命令,具有與本文件中描述的完全相同的行為和意圖。
當您執行pod install
,它只是解決了那些莢依賴不是已經上市podfile.lock
。
對於尚未列出的podpodfile.lock
,它會搜尋與podfile
(如中所述pod 'mypod', '~>1.2'
)匹配的版本相匹配的版本
當您執行時pod outdated
,cocoapods將列出所有具有比podfile.lock
(當前為每個pod安裝的版本)中列出的版本更新的版本的pod。這意味著如果您pod update podname
在這些pod上執行,它們將會更新 - 只要新版本仍然符合pod 'mypod', '~>x.y'
您的設定中的設定限制podfile
。
當您執行時pod update podname
,cocoapods將嘗試查詢pod的更新版本podname
,而不考慮其中列出的版本podfile.lock
。它會將pod更新為最新版本(只要它符合您的版本限制podfile
)。
如果您在pod update
沒有pod名稱的情況下執行,cocoapods會將您列出的每個pod更新podfile
為最新版本。
使用時pod update podname
,您將只能更新特定的pod(檢查是否存在新版本並相應地更新pod)。相反,pod install
它不會嘗試更新已安裝的pod的版本。
當您向自己新增乙個pod時podfile
,應該執行pod install
,而不是pod update
- 安裝這個新pod,而不必擔心在同一程序中更新現有pod。
只有pod update
在您想要更新特定窗格(或所有窗格)的版本時才能使用。
提醒一下pods
,即使您的策略不是將資料夾提交到共享儲存庫,也應始終提交並推送podfile.lock
檔案。
否則,它將破壞上面解釋的關於pod install
能夠鎖定已安裝的pod版本的整個邏輯。
下面是乙個場景示例,用於說明在專案生命週期中可能遇到的各種用例。
user1建立乙個專案,想用莢a
,b
,c
。他們podfile
用這些pod 建立乙個並執行pod install
。
這將安裝吊艙a
,b
,c
,我們會說都在版本1.0.0
。
該podfile.lock
會持續跟蹤並注意a
,b
並c
在每個已安裝的版本1.0.0
。
順便說一句,因為這是他們第一次執行之後,user1想要將pod新增pod install
並且pods.xcodeproj
專案尚不存在,命令也會建立pods.xcodeproj
和.xcworkspace
,但這是命令的***,而不是它的主要作用。
d
到其中podfile
。
因此它們應該在pod install
之後執行,因此即使pod的維護者在第一次執行後b
發布了1.1.0
其pod 的版本pod install
,該專案將繼續使用版本1.0.0
- 因為user1只想新增podd
,而不會冒出意外更新pod的風險b
。
這就是有些人弄錯了,因為他們然後,之前從未參與過該項目的user2加入了團隊。他們轉殖儲存庫然後使用pod update
在這裡使用- 可能認為這是「我想用新的pod 更新我的專案 」?- 而不是使用pod install
- 在專案中安裝新的pod。
pod install
。
的內容podfile.lock
(應提交到git倉庫)將保證他們將獲得完全相同的豆莢,與完全相同的版本user1使用。
即使現在有乙個版本1.2.0
的podc
,user2也會獲得c
版本的pod1.0.0
。因為這是註冊的podfile.lock
。吊艙c
被鎖定到版本1.0.0
由podfile.lock
(該檔案因此得名)。
稍後,user1想要檢查是否有可用於pod的更新。它們會執行pod outdated
,告訴他們podb
有乙個新1.1.0
版本,podc
已經1.2.0
發布了新版本。
user1決定他們想要更新podb
,但不是podc
; 所以他們將執行pod update b
哪個b
將從版本更新1.0.0
到版本1.1.0
(並相應地更新podfile.lock
)但將保持podc
版本1.0.0
(並且不會將其更新為1.2.0
)。
有些人可能會認為,通過在其指定的豆莢確切的版本podfile
,像pod 'a', '1.0.0'
,就足以保證每乙個使用者都會有相同的版本與其他人的團隊。
然後他們甚至可以使用pod update
,即使只是新增乙個新的pod,認為它永遠不會冒更新其他pod的風險,因為它們被固定到了乙個特定的版本podfile
。
但事實上,這還不足以保證我們上面場景中的user1和user2將始終獲得所有pod的完全相同的版本。
乙個典型的例子是pod如果對poda
有依賴a2
- 在a.podspec
as中宣告dependency 'a2', '~> 3.0'
。在這種情況下,pod 'a', '1.0.0'
在你的podfile
遺囑中使用確實迫使user1和user2都使用1.0.0
pod的版本a
,但是:
這就是為什麼確保每個團隊成員使用每台計算機上所有pod的相同版本的唯一方法是使用podfile.lock
和正確使用pod install
vspod update
.。
pythonpip安裝與使用 pip安裝與使用
簡介 檢驗pip是否安裝 python3.x版本命令 pip3 version python2.x版本命令 pip version 若尚未安裝,安裝方法 curl o get pip.py 執行安裝指令碼 sudo python get pip.py pip常用命令 顯示版本和路徑 pip vers...
Python Pyinstaller安裝與使用
使用python自帶的pip命令安裝,在命令列輸入以下命令 pip install pyinstaller也可使用命令列 trusted host mirrors.aliyun.com成功之後將看到以下的輸出結果 successfully installed pyinstaller 版本號pyins...
概念與安裝
映象 image 建立docker容器的基礎 容器 container 執行和隔離應用 note 映象本身是唯讀的。容器從映象啟動的時候,會在映象的最上層建立乙個可寫層。倉庫 repository 集中存放映象檔案的場所。每個倉庫存放一類映象,通過標籤 tag 區分 note 倉庫註冊伺服器 存放 ...