如果按照上篇文章的步驟走下來榄笙,完全沒有問題邪狞。那恭喜你!
我自己網(wǎng)上學習茅撞,搞了三天帆卓。。米丘。把該踩的坑踩個差不多了剑令。。先上圖看看各種各樣的問題吧拄查。吁津。。
我遇到的問題總的概況就三個方面:
- source_files\public_header_files 這兩個路徑填寫錯誤堕扶,這兩個寫的是
物理路徑
- ios.deployment_target 這個字段要打開 指定版本
- 添加依賴的時候碍脏,s.dependency 這個填的是
層級路徑
梭依,不是物理路徑
物理路徑:
文件中的真實路徑,比如NewToo.m的路徑:ProductKit/ProductKit/NewTool
層級路徑:
層級路徑可以參考安裝到pod里面的文件的路徑填寫典尾,比如NewToo.m的路徑:ProductKit/NewTool
NewTool層級是屬于ProductKit層級下的一個子subspec
如果我們需要更新自己的類庫, 只需要將最新的代碼提交到Github, 然后創(chuàng)建新的release版本, 注意: 這里的版本要和podspec文件內(nèi)的s.version一致, 然后再執(zhí)行一遍下面的指令即可:
pod trunk push LZTool.podspec --allow-warnings
本文結(jié)合自己踩過的坑役拴,參考網(wǎng)上的資料做了以下幾點總結(jié):
-
如何編寫podspec文件
-
如何校驗podspec文件
-
如何實現(xiàn)目錄分層
1、如何編寫podspec文件
一些常用的信息介紹:
上面列舉的信息大部分來自pod默認生成的podspec文件中的給的急黎,其中需要重點注意標識黑體的這幾個信息扎狱。
你在三方庫中看到的那些文件都是通過這些配置來確定的。當pod install引入三方庫時勃教,只會引入你在podspec中配置的那些文件淤击。所以在添加依賴的時候,要用層級路徑
故源,而不是物理路徑N厶А!I印机!
其中有幾項配置要注意:
關于資源文件更詳細的寫法,可以看這篇文章:給 Pod 添加資源文件
2门驾、如何校驗podspec文件
在podspec寫好之后我們需要驗證一下編寫的內(nèi)容是否有誤射赛。可以在命令行的三方庫當前路徑下使用下面的命令:
pod lib lint (從本地驗證你的pod能否通過驗證)
pod spec lint (從本地和遠程驗證你的pod能否通過驗證)
pod lib lint --verbose (加--verbose可以顯示詳細的檢測過程奶是,出錯時會顯示詳細的錯誤信息)
pod lib lint --allow-warnings (允許警告楣责,用來解決由于代碼中存在警告導致不能通過校驗的問題)
pod lib lint --help (查看所有可選參數(shù),可選參數(shù)可以加多個)
我們目前只是在本地寫的三方庫聂沙,所以只需要使用pod lib lint驗證即可(這個過程會較為費時秆麸,需要稍微等待)。
3及汉、如何實現(xiàn)目錄分層
使用subspec來實現(xiàn)目錄分層沮趣。
例如AFNetworking:
下面舉例說明,如圖所示的目錄結(jié)構(gòu):
這個截圖的最外層目錄是 ZCPKit
文件夾坷随,這些都是物理路徑7棵!
具體展開如下:
ZCPKit
┗━━━━Classes
┗━━━━ZCPKit.h
┗━━━━ZCPRouter
┗━━━━ZCPRouter.h
┗━━━━ZCPRouter.m
┗━━━━ZCPUtil
┗━━━━ZCPUtil.h
┗━━━━ZCPUtil.m
那我們在podspec文件里面應該這樣寫:
tips
:這里有個要注意的地方:
添加依賴的時候温眉,不能按照上述文件的路徑S!而應該按照pod里面的
層級路徑
:pod 里面的層級路徑:
如果想有多層的目錄結(jié)構(gòu)還可以繼續(xù)嵌套下去芍殖。
有幾個需要注意的地方:
- 層級不能出現(xiàn)循環(huán)依賴。
比如類ZCPUtil.h中 #import "ZCPRouter.h"谴蔑,同時ZCPRouter.h中 #import "ZCPUtil.h"豌骏。這樣當寫podspec時就需要在Util層級中寫dependency 'ZCPKit/Router'龟梦,在Router層級中寫dependency 'ZCPKit/Util'。如此便存在Router與Util層級之間的循環(huán)依賴窃躲。出現(xiàn)循環(huán)依賴時计贰,三方庫是無法成功提交到repo上的,會報依賴錯誤蒂窒。解決辦法是躁倒,層級間要盡量解耦。
- 分層的層級不要太多洒琢,層級不要太深秧秉。
為了避免出現(xiàn)上述的循環(huán)依賴錯誤。
- source_files使用的是真實的物理路徑衰抑,而dependency依賴其他層級時使用的是層級路徑象迎,不是真實的物理路徑
例如:ZCPUtil.h文件的真實路徑是:ZCPKit/Framework/Util,而Util層級是屬于ZCPKit層級下的一個子subspec呛踊,所以當寫Router層級依賴Util層級時要寫:dependency 'ZCPKit/Util'而不是dependency 'ZCPKit/Framework/Util'
需要注意的:
在檢測的時候會很經(jīng)常會出現(xiàn)各種亂七八糟的錯誤砾淌,在文件多的情況下不太容易一次通過,并且即使你的代碼在Xcode中編譯通過了谭网,但是也還是會出現(xiàn)很多錯誤汪厨。所以你需要盡量去注意下面的幾個問題:
1.當代碼中存在警告時要記得使用--allow-warnings參數(shù)。
2.如果引入的文件或分好的層級需要依賴系統(tǒng)庫或三方庫愉择,要記得使用上面介紹的libararies劫乱,frameworks等屬性。
3.如果你的三方庫是在一個xcode項目中編寫調(diào)試薄辅,那么盡量不要用pch要拂。
因為很多類之間的小依賴會被pch給遮掩過去,這會導致在校驗時出現(xiàn)大量錯誤站楚。
4.如果想要分層脱惰,那么盡量解耦使模塊能夠單獨存在。
原因是當分層較多層級較深時窿春,很可能產(chǎn)生循環(huán)依賴的問題拉一。