使用 pod install 還是 pod update 绍些?

介紹:? 查看版本 pod --version? 2017.2.15


許多人開始使用CocodPods的時(shí)候認(rèn)為pod install只是你第一次用CocoaPods建立工程的時(shí)候使用鹃操,而之后都是使用pod update遗锣,但實(shí)際上并不是那會(huì)事帆阳。

簡(jiǎn)單來說,就是:

1.使用pod install來安裝新的庫(kù)氨距,即使你的工程里面已經(jīng)有了Podfile桑逝,并且已經(jīng)執(zhí)行過pod install命令了;所以即使你是添加或移除庫(kù)俏让,都應(yīng)該使用pod install楞遏。

2.使用pod update [PODNAME] 只有在你需要更新庫(kù)到更新的版本時(shí)候用。

詳細(xì)介紹:

pod install :

這個(gè)是第一次在工程里面使用pods的時(shí)候使用首昔,并且寡喝,也是每次你編輯你的Podfile(添加、移除勒奇、更新)的時(shí)候使用预鬓。

每次運(yùn)行pod install命令的時(shí)候,在下載赊颠、安裝新的庫(kù)的同時(shí)格二,也會(huì)把你安裝的每個(gè)庫(kù)的版本都寫在了Podfile.lock文件里面。這個(gè)文件記錄你每個(gè)安裝庫(kù)的版本號(hào)竣蹦,并且鎖定了這些版本蟋定。

當(dāng)你使用pod

install它只解決了pods里面,但不在Podfile.lock文件里面的那些庫(kù)之間的依賴草添。對(duì)于在Podfile.lock里面所列出的那些庫(kù),會(huì)下載在Podfile.lock里面明確的版本扼仲,并不會(huì)去檢查是否該庫(kù)有新的版本远寸。對(duì)于還不在Podfile.lock里面的庫(kù),會(huì)找到Podfile里面描述對(duì)應(yīng)版本(例如:pod

"MyPod", "~>1.2")屠凶。

pod outdated:

當(dāng)你運(yùn)行pod

outdated命令驰后,CocoaPods會(huì)列出那些所有較Podfile.lock里面有新版本的庫(kù)(那些當(dāng)前被安裝著的庫(kù)的版本)。這個(gè)意思就是矗愧,如果你運(yùn)行pod

update PODNAME灶芝,如果這個(gè)庫(kù)有新的版本,并且新版本仍然符合在Podfile里的限制唉韭,它就會(huì)被更新夜涕。

pod update:

當(dāng)你運(yùn)行 pod update PODNAME 命令時(shí),CocoaPods會(huì)幫你更新到這個(gè)庫(kù)的新版本属愤,而不需要考慮Podfile.lock里面的限制女器,它會(huì)更新到這個(gè)庫(kù)盡可能的新版本,只要符合Podfile里面的版本限制住诸。

如果你運(yùn)行pod update驾胆,后面沒有跟庫(kù)的名字涣澡,CocoaPods就會(huì)更新每一個(gè)Podfile里面的庫(kù)到盡可能的最新版本。

正確用法:

你應(yīng)該使用pod update PODNAME去只更新某個(gè)特定的庫(kù)(檢查是否有新版本丧诺,并盡可能更新到新的版本)入桂。對(duì)應(yīng)的,你應(yīng)該使用pod install驳阎,這個(gè)命令不會(huì)更新那些已經(jīng)安裝了的庫(kù)抗愁。

當(dāng)你在你的Podfile里面添加了一個(gè)庫(kù)的時(shí)候,你應(yīng)該使用pod install搞隐,而不是pod update驹愚,這樣既安裝了這個(gè)庫(kù),也不需要去更新其它的已安裝庫(kù)劣纲。

你應(yīng)該使用pod update去更新某個(gè)特定的庫(kù)逢捺,或者所有的庫(kù)(在Podfile的限制中)。

提交你的Podfile.lock文件:

在此提醒癞季,即使你一向以來劫瞳,不commit你的Pods文件夾到遠(yuǎn)程倉(cāng)庫(kù),你也應(yīng)該commit并push到遠(yuǎn)程倉(cāng)庫(kù)中绷柒。

要不然志于,就會(huì)破壞整個(gè)邏輯,沒有了Podfile.lock限制你的Pods中的庫(kù)的版本废睦。

舉例:

以下會(huì)舉例說明在各個(gè)場(chǎng)景下的使用伺绽。

場(chǎng)景1:User1創(chuàng)建了一個(gè)工程

User1創(chuàng)建了一個(gè)工程,并且想使用A嗜湃、B奈应、C這三個(gè)庫(kù),所以他就創(chuàng)建了一個(gè)含有這個(gè)三個(gè)庫(kù)的Podfile购披,并且運(yùn)行了pod intall杖挣。

這樣就會(huì)安裝了A、B刚陡、C三個(gè)庫(kù)到這個(gè)工程里面惩妇,假設(shè)我們的版本都為1.0.0。

因此Podfile.lock跟蹤并記錄A筐乳、B歌殃、C這三個(gè)庫(kù)以及版本號(hào)1.0.0。

順便說一下:由于這個(gè)工程是第一次運(yùn)行pod install蝙云,并且Pods.xcodeproj工程文件還不存在挺份,所以這個(gè)命令也會(huì)同時(shí)創(chuàng)建Pods.xcodeproj以及.xcworkspace工程文件,這只是這個(gè)命令的一個(gè)副作用贮懈,并不是主要目的匀泊。

場(chǎng)景2:User1添加了一個(gè)庫(kù)

之后优训,User1添加了一個(gè)庫(kù)D到Podfile文件中。

然后他就應(yīng)該運(yùn)行pod install命令了各聘。所以即使庫(kù)B的開發(fā)者發(fā)布了B的一個(gè)新版本1.1.0揣非。但只要是在第一次執(zhí)行pod install之后發(fā)布的,那么B的版本仍然是1.0.0躲因。因?yàn)閁ser1只是希望添加一個(gè)新庫(kù)D早敬,不希望更新庫(kù)B。

這就是很多人容易出錯(cuò)的地方大脉,因?yàn)樗麄冊(cè)谶@里使用了pod update搞监,因?yàn)橄胫案挛业墓こ桃粋€(gè)新的庫(kù)而已”。這里要注意镰矿!

場(chǎng)景3:User2加入到這個(gè)工程中

然后琐驴,User2,一個(gè)之前沒有參與到這個(gè)工程的人秤标,加入了绝淡。他clone了一份倉(cāng)庫(kù),然后使用pod install命令苍姜。

Podfile.lock的內(nèi)容就會(huì)保證User1和User2會(huì)得到完全一樣的pods牢酵,前提是Podfile.lock被提交到git倉(cāng)庫(kù)中。

即使庫(kù)C的版本已經(jīng)更新到了1.2.0衙猪,User2仍然會(huì)使用C的1.0.0版本馍乙,因?yàn)镃已經(jīng)在Podfile.lock里面注冊(cè)過了,C的1.0.0版本已經(jīng)被Podfile.lock鎖住了垫释。

場(chǎng)景4:檢查某個(gè)庫(kù)的新版本

之后丝格,User1想檢查pods里面是否有可用的更新時(shí),他執(zhí)行了pod outdated饶号,這個(gè)命令執(zhí)行后,會(huì)列出來:B有了1.1.0版本季蚂,C有了1.2.0版本茫船。

這時(shí)候,User1打算更新庫(kù)B扭屁,但不更新庫(kù)C算谈,所以執(zhí)行pod update B,這樣就把B從1.0.0更新到1.1.0(同時(shí)更新Podfile.lock里面對(duì)B的版本記錄)料滥,此時(shí)然眼,C仍然是1.0.0版本,不會(huì)更新葵腹。

在Podfile中使用明確版本還不夠

有些人認(rèn)為在Podfile中明確某個(gè)庫(kù)的版本高每,例如:pod 'A', '1.0.0' ,足以保證所有項(xiàng)目里面的人都會(huì)使用完全一樣的版本屿岂。

這個(gè)時(shí)候,他們可能會(huì)覺得鲸匿,此時(shí)如果添加一個(gè)新庫(kù)的時(shí)候爷怀,我使用pod update并不會(huì)去更新其它的庫(kù),因?yàn)槠渌膸?kù)已經(jīng)被限定了固定的版本號(hào)带欢。

但事實(shí)上运授,這不足以保證User1和User2的pods中庫(kù)的版本會(huì)完全一樣。

一個(gè)典型的例子是乔煞,如果庫(kù)A有一個(gè)對(duì)庫(kù)A2的依賴(聲明在A.podspec中:dependency

'A2', '~> 3.0')吁朦,如果這樣的話,使用 pod 'A', '1.0.0'

在你的Podfile中渡贾,的確會(huì)讓User1和User2都使用同樣版本的庫(kù)A(1.0.0)逗宜,然而:

最后User1可能使用A的依賴庫(kù)A2的版本為3.4(因?yàn)?.4是當(dāng)時(shí)User1使用的最新版本),但User2使用的庫(kù)A2版本是3.5(假設(shè)A2的開發(fā)者剛剛發(fā)布了A2的新版本3.5)剥啤。

所以只有一個(gè)方法來保證某項(xiàng)目的每個(gè)開發(fā)者都使用相同版本的庫(kù)锦溪,就是每個(gè)電腦中都使用同樣的Podfile.lock,并且合理使用pod install 和 pod update府怯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刻诊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子牺丙,更是在濱河造成了極大的恐慌则涯,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冲簿,死亡現(xiàn)場(chǎng)離奇詭異粟判,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)峦剔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門档礁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吝沫,你說我怎么就攤上這事呻澜。” “怎么了惨险?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵羹幸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我辫愉,道長(zhǎng)栅受,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮屏镊,結(jié)果婚禮上依疼,老公的妹妹穿的比我還像新娘。我一直安慰自己闸衫,他們只是感情好涛贯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蔚出,像睡著了一般弟翘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骄酗,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天稀余,我揣著相機(jī)與錄音,去河邊找鬼趋翻。 笑死睛琳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的踏烙。 我是一名探鬼主播师骗,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼讨惩!你這毒婦竟也來了辟癌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤荐捻,失蹤者是張志新(化名)和其女友劉穎黍少,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體处面,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厂置,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了魂角。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昵济。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖野揪,靈堂內(nèi)的尸體忽然破棺而出访忿,到底是詐尸還是另有隱情,我是刑警寧澤囱挑,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布醉顽,位于F島的核電站沼溜,受9級(jí)特大地震影響平挑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一通熄、第九天 我趴在偏房一處隱蔽的房頂上張望唆涝。 院中可真熱鬧,春花似錦唇辨、人聲如沸廊酣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亡驰。三九已至,卻和暖如春饿幅,著一層夾襖步出監(jiān)牢的瞬間凡辱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工栗恩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留透乾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓磕秤,卻偏偏與公主長(zhǎng)得像乳乌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子市咆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容