pod install 和 pod update 的區(qū)別

許多人都有誤解,以為 pod install 只是首次使用,之后都使用 pod update 來更新。

其實不然。

pod install 除了首次安裝時使用,之后增刪也可以用。

pod update 只有在需要更新pod時使用。

詳細區(qū)別

要理解他們的區(qū)別,就不能不提Podfile.lock這個文件了。

從后綴lock可以看出來,這是一個鎖。鎖什么呢?鎖住pods的版本。

在首次執(zhí)行 pod install 時,CocoaPods 根據(jù)Podfile文件來導(dǎo)入合適版本的pods。

然后,Podfile.lock文件文件被創(chuàng)建,此次所有pod的版本信息會被記錄在該文件中。

之后在執(zhí)行 pod install 時,會先從Podfile.lock文件讀取信息。

已有記錄的pod,會維持原版本。

無記錄的pod則根據(jù)Podfile導(dǎo)入合適版本的pod。然后新導(dǎo)入的pod信息也會被記錄在Podfile.lock文件中。

這就是鎖住版本的意思。

如果想要升級版本,那就需要使用pod update了。pod update 會忽略Podfile.lock文件,直接升級pod到Podfile允許的最新版本。

pod update 執(zhí)行后最新的版本信息也會記錄到Podfile.lock文件。

如果只想更新其中一個庫,使用 pod update podname。

舉例說明

第一步:

首先,張三新建了一個工程,創(chuàng)建了Podfile,在Podfile中引入了A、B、C 三個 pod。

然后執(zhí)行 pod install,A、B、C 被導(dǎo)入,假設(shè)版本都是1.0.0。

Podfile.lock 會被創(chuàng)建, 記錄下A、B、C 的版本為1.0.0。

第二步:

過了一段事件,張三在Podfile中新增了pod D。

假設(shè)D的版本也是1.0.0,而B已經(jīng)發(fā)布了新版本1.1.0。

張三僅想導(dǎo)入D,而保持B的版本不變,避免更新B帶來的風(fēng)險。

于是張三執(zhí)行了 pod install。

執(zhí)行中,CocoaPods 發(fā)現(xiàn) Podfile.lock 中B的版本是1.0.0,于是B維持不變。發(fā)現(xiàn)新增了D,于是導(dǎo)入了1.0.0的D,并將D的信息記錄到 Podfile.lock。

第三步:

又過了一段時間,李四加入了項目。

假設(shè)C的已經(jīng)發(fā)布了新版本1.2.0。

李四clone項目后,他使用 pod install。

命令執(zhí)行時,發(fā)現(xiàn)A、B、C、D在Podfile.lock中都有記錄,因此他獲取的A、B、C、D也會都是記錄的1.0.0。

這樣就保證了張三和李四使用的第三方是一致的。

第四步:

半個月后,張三覺得B的1.1.0足夠成熟,可以集成了,但是C的1.2.0還需要再等等。

于是,他執(zhí)行了 pod update B 來升級B,但維持C的版本為1.0.0。

CocoaPods 會忽略 Podfile.lock 中記錄的B的信息,強行更新B到1.1.0。

然后張三本地的Podfile.lock中B的版本信息也會更新到1.1.0。

張三提交,李四拉取后,執(zhí)行 pod install,于是李四的B也更新到1.1.0。又跟張三保持一致了。

總結(jié)

需要更新pod版本時使用 pod update,其他情況下使用 pod install。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容