如有錯誤請查看第五部分的錯誤集法瑟,記錄了本人封裝過程中遇到的問題剩彬。
以下代碼命令中的單引號或者雙引號是不需要的,為了讀取便利加上的。
一否淤、托管平臺支持
GitHub悄但、gitLab已試,都可支持石抡;
需要兩個倉庫來支持cocoapods封裝檐嚣;
二、索引庫:spec
pod repo add '你的庫名' '托管平臺上的倉庫地址'
其中'你的庫名'可以跟托管平臺上的名字不一致啰扛,但是后續(xù)在推送時候是必須使用'你的庫名'這一名稱進行push的
三嚎京、源碼庫
1、創(chuàng)建模板工程
pod lib create '你以后執(zhí)行pods install的名稱'
當(dāng)然隐解,如果創(chuàng)建成功后這個install名字覺得不喜歡的話挖藏,是否可以通過修改“.podspec”中的name中修改,這個未嘗試過厢漩,不確定。
2岩臣、配置“.podspec”文件
(1)簡單pod描述類
(2)封裝后與遠(yuǎn)程代碼庫關(guān)聯(lián)的配置
詳注:s.homepage即是遠(yuǎn)程模板工程的網(wǎng)址溜嗜,如在GitHub上創(chuàng)建的代碼庫的網(wǎng)址
s.source 對應(yīng)的即是下載代碼的git地址,如在GitHub上下載庫中代碼的git地址架谎。
(3)拉取下來后的代碼的目錄結(jié)構(gòu)
詳注:s.source_files標(biāo)示該文件下的具體源文件的目錄
s.subspec代表的是該目錄下的子目錄
addressBook.dependency表示該封裝插件所需依賴的庫炸宵,可以是第三方庫,可以是你自己封裝的庫谷扣,甚至可以是在該次封裝中的庫
(4)全局依賴的庫及系統(tǒng)庫
多個庫或者frameWorks的設(shè)置如圖所示土全;
3、本地校驗“.podspec”是否有問題会涎。
pod lib lint‘你的pod庫名.podspec’ --use-libraries --allow-warnings
--use-libraries:忽略封裝的代碼中沒有導(dǎo)入所需依賴的第三方庫的報錯
--allow-warnings:忽略警告
如果沒有問題即可提交到模板工程庫中裹匙,如GitHub上的模板庫,有問題可根據(jù)error進行檢查
4末秃、提交到模板工程庫中概页,如GitHub中。
(cd 當(dāng)前文件夾的路徑)
git add .
添加到本地倉庫
git commit --m ''
查看遠(yuǎn)程是否有分支
git remote
如果沒有的話练慕,鏈接到遠(yuǎn)程倉庫
git remote add origin https://github.com/XXX/XXX.git(這是遠(yuǎn)程代碼倉庫地址)
提交到遠(yuǎn)程倉庫
git push origin master
打tag
git tag 查看當(dāng)前tag惰匙,切記這里的tag一定是和spec索引文件的tag是一樣的,要不驗證通不過
推送tag
git push --tag
5铃将、遠(yuǎn)程校驗“.podspec”
pod spec lint --use-libraries --allow-warnings (遠(yuǎn)程spec驗證)
同步驟3
四项鬼、關(guān)聯(lián)索引庫以及模板工程庫。
pod repo push "你的spec庫名" "模板工程庫中的.podspec" --use-libraries --allow-warnings
注:命令中 引號是不需要的劲阎。
五:pod 安裝
source 'https://github.com/xxx/xxx'(自己的spec索引文件)
source 'https://github.com/CocoaPods/Specs.git'
第一個為你遠(yuǎn)程spec配置的地址绘盟,也即步驟二中的托管平臺上的倉庫地址
第二個為GitHub的spec地址,寫死為這個即可
然后后面的跟其他的pod引入一樣,比AFnetWorking多了source奥此,猜想是私有庫跟共有庫的區(qū)別弧哎。
六、封裝中碰到的問題
1稚虎、pod 運行 pod lib create創(chuàng)建成功后沒有Example工程是因為當(dāng)前的pod的xcodeProj為版本不對(好像是5.8的版本的問題撤嫩,升級你的xcodeProj)。
2蠢终、去除警告以及依賴的庫的問題
添加 :--use-libraries --allow-warnings
3序攘、tag與版本保持一致
必須保證模板工程庫中的tag與.podspec中的version保持一致。
4寻拂、其他
頭文件找不到程奠,導(dǎo)致自己封裝的庫中的文件夾或者庫,每個s.subspec 都已經(jīng)是一個庫了祭钉∶樯常可以直接使用dependency依賴了,如"pod庫名/二級文件夾名/三級文件夾名"慌核,二級文件夾名以及三級文件夾名都已經(jīng)算是庫了距境。
導(dǎo)入framework及第三方的庫等。
參考 :
http://www.reibang.com/p/f2e710d7aec6
https://blog.csdn.net/jia12216/article/details/84858602