Podfile,Podfile.lock

一、Podfile.lock 文件的作用

Podfile.lock 用于記錄最后一次更新Pods時(shí),記錄所有的第三方框架的版本號(hào)。

Podfile.lock 文件主要包括:

PODS: 記錄所有Pod庫(kù)的具體安裝的版本號(hào)

DEPENDENCIES: 記錄各Pod庫(kù)之間的相互依賴關(guān)系

SPEC REPOS: 倉(cāng)庫(kù)信息,即安裝了哪些三方庫(kù),他們來(lái)自哪個(gè)倉(cāng)庫(kù)

EXTERNAL SOURCES: 在Podfile引用的版本使用的git的引用,沒有上傳到源的這種引用

SPEC CHECKSUMS: 記錄當(dāng)前各Pod庫(kù)的Podspc文件Hash值,其實(shí)就是文件的md5

POPODFILE CHECKSUM: 記錄Podfile文件的hash值,同樣是md5,確認(rèn)是否有變更

COCOAPODS: 記錄上次所用的CocoaPods版本

Podfile.lock文件最大的用處在于多人開發(fā)。當(dāng)團(tuán)隊(duì)中的某個(gè)人執(zhí)行完pod install命令后,生成的Podfile.lock文件就記錄下了當(dāng)時(shí)最新Pods依賴庫(kù)的版本,這時(shí)團(tuán)隊(duì)中的其它人check下來(lái)這份包含Podfile.lock文件的工程以后,再去執(zhí)行pod install命令時(shí),獲取下來(lái)的Pods依賴庫(kù)的版本就和最開始用戶獲取到的版本一致。如果沒有Podfile.lock文件,后續(xù)所有用戶執(zhí)行pod install命令都會(huì)獲取最新版本的依賴庫(kù),這就有可能造成同一個(gè)團(tuán)隊(duì)使用的依賴庫(kù)版本不一致,這對(duì)團(tuán)隊(duì)協(xié)作來(lái)說(shuō)絕對(duì)是個(gè)災(zāi)難!

團(tuán)隊(duì)開發(fā)時(shí),一定要保證Podfile.lock的一致


二、Podfile常用指令的區(qū)別

install
update

當(dāng)執(zhí)行pod install 命令時(shí),首先會(huì)根據(jù)Podfile文件指定的內(nèi)容,安裝依賴庫(kù),如果有Podfile.lock文件而且對(duì)應(yīng)的Podfile文件未被修改,則會(huì)根據(jù)Podfile.lock文件指定的版本安裝

當(dāng)執(zhí)行pod update命令時(shí),如果Podfile中指定的依賴庫(kù)版本不是寫死的,當(dāng)對(duì)應(yīng)的依賴庫(kù)有了更新,無(wú)論有沒有Podfile.lock文件,都會(huì)去獲取Podfile文件描述的允許獲取到的最新依賴庫(kù)版本,并且創(chuàng)建一個(gè)Podfile.lock文件覆蓋掉原來(lái)的Podfile.lock文件

pod install/ pod update 過程:

1、在通過pod install或pod update指令安裝框架前,都會(huì)先執(zhí)行pod repo update指令,將服務(wù)器最新的框架下載到本地,項(xiàng)目中是否安裝最新版本的框架,取決于安裝方式:pod install(指定版本)和pod update(最新版本);

2、在第一次執(zhí)行pod install指令時(shí),podfile.lock還不存在,會(huì)根據(jù)podfile中的說(shuō)明來(lái)集成框架。如果指定了框架版本號(hào),則安裝指定版本,如果未指定,則安裝最新的,并自動(dòng)生成podfile.lock文件;

3、當(dāng)以后再次執(zhí)行pod install指令時(shí),會(huì)根據(jù)podfile.lock中記錄的框架版本號(hào)來(lái)安裝框架;

4、即便服務(wù)器中有最新的版本,通過pod install指令也不會(huì)安裝最新的第三方框架,只會(huì)根據(jù)podfile.lock中記錄的版本來(lái)安裝。

備注:

--no-repo-update 常用命令

安裝前不會(huì)執(zhí)行pod repo update,意味著不去檢查服務(wù)器版本,直接使用本地cache的框架版本

三、.podspec 文件

podspec 文件是 CocoaPods 中用于描述和配置一個(gè)庫(kù)(或者稱為 Pod)的文件。當(dāng)創(chuàng)建并封裝一個(gè)基于CocoaPods的屬于自己的三方庫(kù)時(shí),會(huì)伴隨創(chuàng)建一個(gè)podspec 文件來(lái)定義這個(gè)庫(kù)的元數(shù)據(jù),其包括但不限于以下內(nèi)容:

podspec文件

https://guides.cocoapods.org/syntax/podspec.html#specification

在項(xiàng)目中使用 CocoaPods 時(shí),podspec 文件是在項(xiàng)目的根目錄下的描述文件。通過 pod install 命令,CocoaPods 將會(huì)讀取這個(gè)文件并下載、安裝相應(yīng)的依賴庫(kù)

使用細(xì)節(jié):

目錄分層:

subspec

使用:

使用

目錄分層的好處:

1、目錄分層,結(jié)構(gòu)清晰;

2、使用pod引入一個(gè)三方庫(kù)時(shí),可以只引入一個(gè)subspec而不用將整個(gè)三方庫(kù)引入


Podspec的校驗(yàn):

pod lib lint (從本地驗(yàn)證pod能否通過驗(yàn)證)

pod spec lint (從本地和遠(yuǎn)程驗(yàn)證pod能否通過驗(yàn)證)

pod lib lint --verbose (加--verbose可以顯示詳細(xì)的檢測(cè)過程,出錯(cuò)時(shí)會(huì)顯示詳細(xì)的錯(cuò)誤信息)

pod lib lint --allow-warnings (允許警告,用來(lái)解決由于代碼中存在警告導(dǎo)致不能通過校驗(yàn)的問題)

pod lib lint --help (查看所有可選參數(shù),可選參數(shù)可以加多個(gè))

pod驗(yàn)證相關(guān)參數(shù)說(shuō)明:

--allow-warnings : 忽略警告,即可以允許有警告也可以通過驗(yàn)證

--use-libraries: 使用靜態(tài)庫(kù)安裝規(guī)范,當(dāng)包含依賴的第三方或自定義的靜態(tài)庫(kù)需要添加此規(guī)范

--use-modular-headers:如果是OC和swift 的混編需要加上

--sources=https://cdn.cocoapods.org/:指定索引庫(kù)的源,多個(gè)源必須用逗號(hào)分隔

--local-only:不執(zhí)行將回購(gòu)?fù)频狡溥h(yuǎn)程服務(wù)器的步驟

--no-private:包括僅適用于公共回購(gòu)的檢查

--skip-import-validation:跳過驗(yàn)證pod是否可以導(dǎo)入

--skip-tests:在驗(yàn)證期間跳過構(gòu)建和運(yùn)行測(cè)試

--commit-message="Fix bug in pod":添加自定義提交消息。如果沒有指定提交消息,則打開默認(rèn)編輯器

--use-json:在將其推送到repo之前,將podspec轉(zhuǎn)換為JSON

--swift-version=VERSION:在標(biāo)記規(guī)范時(shí)應(yīng)該使用的SWIFT_VERSION。這優(yōu)先于規(guī)范中指定的Swift版本或.Swift版本文件

--no-overwrite:不允許將覆蓋現(xiàn)有規(guī)范的推送

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

相關(guān)閱讀更多精彩內(nèi)容

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