元件化開發之私有庫製作以及常見問題

pod repo
,會看到有個索引列表如下:

master
一個,我這裡已經有了一個私有的,那麼如何建立呢?請看下面:
2. 建立遠端私有庫索引(這裡以在github上為例)

由於 github
私有庫收費,我這裡以 public
為例,實則是一樣的。 一般命名為xxxSpec

點選 create repository
即可建立倉庫成功 這裡我們可以得到一個遠端索引庫的地址,下面要用

3. 新增本地私有庫索引

終端執行命令 : pod repo add 本地索引庫名稱 遠端索引庫地址
,後面的地址就是遠端索引庫地址, LWPrivateSpec
即為本地索引庫的名稱,這個可以自定義,一般和遠端庫名稱保持一致即可

執行 pod repo
後檢視,本地私有索引庫檔案已經好了,到這裡關於索引庫的建立就完成了,下面開始進入私有庫建立的環節
二:私有庫建立
1. 建立遠端倉庫
方法和索引庫建立一樣,這裡不在贅述
2. 將遠端庫拉取到本地

選擇一個路徑,將遠端庫clone到本地 git clone 遠端庫地址
為了測試需要,需要建立測試工程,方便對元件功能的測試
3. 建立工程

4. 引入pod
進入工程目錄,執行如下命令,建立空的pod檔案 pod init
pod install
5. 建立podspec檔案
進入本地倉庫路徑,執行如下命令

pod spec create 庫名稱
這裡庫名稱最好和倉庫名稱一致,也可以隨便起,也就是日後 pod 'xx庫'
這裡要填寫的名稱
另外在.podspec同等路徑下,建立Pod/Classess檔案,最後的結構如下:

之後的功能模組就放在classes檔案下
三:podspec的編寫及其相關依賴設定
1. podspec檔案的編寫
開啟.podspec檔案如下(擷取部分):

這裡主要注意一下幾個點:
- s.name: 庫的名稱
- s.version:版本號
- s.summary:摘要
- s.description:描述部分,要比摘要長
- s.homepage:源地址,也就是私有庫對應的遠端地址
- s.license:執照,一般選擇預設
- s.author:作者名稱
- s.platform:支援平臺
- s.source:來源
- s.source_files:檔案路徑
- s.framework/s.frameworks:依賴的系統的framework
- s.dependency:依賴的庫

這樣提交後,引用時會發現,所有的.h,.m檔案都在Classes檔案下,我們看到有的第三方檔案管理會出現分層

像這樣有幾個子庫,比如我們想要用WXPay,那麼在podfile中只需要引入 pod 'YGFunctionComponent/WXPay'
即可,那麼這種是如何設定的呢?下面講述:
2. 分層檔案的編寫

這裡有三個子庫,每個子庫中都可以只編寫自己的功能,當然子庫之間也可以依賴,這個後面再講

子庫建立主要依賴於subpec 要注意的是 do 和 and要成對出現,不然驗證的時候會報錯 也許你已經注意到,子庫中也可以設定各自的依賴,還有一點要注意,父庫的source_files設定要麼去掉,要麼就變化,不能再是 Pod/Classess/**/*.{h,m}
的格式,否則分層是沒用的,比如我們想要在父庫中有一個頭檔案xxx.h,需要這樣設定: Pod/Classes/xxx.h

匯入後的結構如下:

3. 子庫間的依賴
比如:我在 LWFunctionComponent
中有一個 Utils
的子庫,在 LocationTool
中用到了 Utils
這個子庫,那麼該如何設定呢?

xx.dependency "庫名稱/子庫名稱"
4. 私有庫之間的依賴
和依賴第三方庫一樣 s.dependency
"私有庫名稱
5. 驗證過程
首先是要提交到遠端並打tag值 git add .
git commit -m "xxx"
git push
git tag xxx
這裡的tag要和podspec中的保持一致,否則會報錯
git push --tags
5.1 本地驗證 pod lib lint
5.2 遠端驗證 pod spec lint
6. 新增到私有庫索引
pod repo push 本地私有索引檔名 庫名稱.podspec
當然如果只是上面的寫法你會發現會遇到很多問題,在第三點中我會列出一些常見的問題以及解決方案
三:驗證過程的問題及其解決方案
- tag值導致的問題,這裡再次強調,一定要注意git所打的tag值一定要和podspec中的保持一致
- 警告導致的問題,提交的時候你會發現很多-WARN開頭的,如果你按照的是
pod spec lint
或者pod lib lint
,那麼一定會報錯,這個時候只需要加上--allow-warnings
即可解決 - 依賴第三方庫導致的報錯問題,只需加上
--use-libraries
即可解決 - 私有庫依賴私有庫找不到的報錯問題,一般情況下會預設從master或者官方的spec源地址
https://github.com/CocoaPods/Specs
中去查詢依賴庫檔案,而私有庫是查詢不到的,所以解決方法如下:--source=私有庫源地址,官方庫源地址
即可
注意:上面的2,3兩點錯誤在新增私有索引的時候,也要加上--use-libraries --allow-warnings這樣的標識,否則也會報錯哦
結束語:寫了兩個多小時,最後的問題以及解決方案模組實在不想再截圖了,如果有需要後續會慢慢補上,敬請諒解 如果有其他問題,可以留言或評論區討論
此外如果提交公共倉庫開源出來,當然需要註冊一個trunk嘍,註冊方式如下:
1. pod trunk register 郵箱 '作者名稱’ --verbose
這裡的作者名和podspec中設定的s.author保持一致 2.去郵箱驗證即可