前言
隨著項目的發(fā)展柠贤,版本迭代进倍,代碼的重構(gòu),我們項目中一般會有很多有業(yè)務(wù)功能行性公共的組件慈参,
app中可能多處都會使用到揍堕,甚至別的項目中也需要使用今阳。比如我們 A 項目中有一個語音評測的功能堪唐,
前期只是在 A 項目里面需要用到缕探,后面在另一不同項目繪本閱讀需要用到相同語音評測的功能愉棱。
此時我們一般有兩種做法唆铐,
一是直接將這部分代碼copy到繪本閱讀這個項目中;
二是將語音評測這部分邏輯給抽取出來奔滑,然后在分別在兩處使用艾岂。
很明顯在項目初期,或者時間緊迫的情況下朋其,第一種方式很好的能夠勝任工作王浴,我們前期也是這么做的脆炎,
但是我發(fā)現(xiàn)到了隨著項目的推移和發(fā)展,這樣做的時間成本太大了氓辣,效率也很低下秒裕,有很多隱患(評測邏輯一旦有變動,你需要改動兩次钞啸,而且你沒法保證兩次的改動一致)几蜻。
所以把公司的公共組件抽離出來,使用 Cocoapods 集成管理是一種非常好的解決方案爽撒,這樣的話入蛆,后續(xù)只要維護更新好這個公共組件,所有使用到的工程 pod install/pod update 下即可使用到最新的版本硕勿,達到一處更改多處使用的效果而且工程管理更加高效哨毁。
一、注冊CocoaPods賬戶信息
想要創(chuàng)建一個開源pod庫, 首先我們需要注冊CocoaPods, 這里使用trunk方式, 作為一個iOS開發(fā)人員你一定安裝了CocoaPods, 那么只需要在終端執(zhí)行:
pod trunk register 郵箱地址 '用戶名' --verbose
這里我們一般使用github郵箱和用戶名, 然后在你的郵箱中會收到確認(rèn)郵件, 在瀏覽器中點擊鏈接確認(rèn)即注冊成功, 成功之后可以終端執(zhí)行:
查看自己的注冊信息, 以后當(dāng)你有了自己的開源Pod庫, 也可以用此方式隨時查看自己發(fā)布過的Pods;
# pod注冊信息源武,開源pod庫
pod trunk me
二扼褪、創(chuàng)建共享庫的文件倉庫
這里從頭創(chuàng)建一個共享庫,以便對整個創(chuàng)建過程更加清楚粱栖。在terminal中創(chuàng)建一個全新的工程话浇。這個文件倉庫是你公共類庫的維護倉庫,新版本和修改可以通過這個倉庫發(fā)布闹究。
共享庫需要三個必不可少的部分:
A. 共享文件夾(文件夾存放著你要共享的內(nèi)容, 也就是其他人pod得到的文件,
.podspec文件中的source_files需要指定此文件路徑及文件類型);
B. LICENSE文件(默認(rèn)一般選擇MIT);
C. 庫描述文件.podspec(本庫的各項信息描述, 需要提交給CocoaPods,
pod通過這個文件查找到你共享的庫,).
在terminal 中輸入
$ pod lib create 新的庫名
在創(chuàng)建庫的時候幔崖,會詢問你關(guān)于對新建庫的一些要求,根據(jù)自己的要求配置好就OK渣淤,可以參考Using Pod Lib Create
三赏寇、 配置好文件倉庫后上傳到公用倉庫github | gitlab
把自己共享庫需要的文件放置到工程中的指定位置
之后,將新建的項目push到遠程服務(wù)端github | gitlab价认。具體的操作需要先在github上創(chuàng)建一個空的repo嗅定,然后使用命令行提交。
git add -A
git commit -m "first commit"
//這里替換成自己的 github上的項目地址
git remote add origin https://github.com/fangmeigithub/JWJOpenServe.git
git push -u origin master
提交成功后用踩,github上面的新建工程變?yōu)轭愃葡聢D這樣的樣子渠退。
四、編輯并驗證 .podspec文件
這里也有倆值得注意的地方脐彩;
s.version = '1.0.0' //這里的版本和之后提交到github上的release 版的tag必須一致
s.summary = '進無盡的公開庫' //這里必須修改碎乃,不修改的話下面的驗證時會報錯
編寫完成后, 我們需要驗證.podspec文件的合法性, 這里需要終端cd到.podspec文件所在文件夾, 執(zhí)行:
pod lib lint JM_ActionSheet.podspec
如有警告或者錯誤請重新檢查你的編寫正確性, 如果沒有問題會出現(xiàn)
五、給文件倉庫打tag, 發(fā)布一個release版本
一切準(zhǔn)備就緒后, 我們需要在你的git倉庫里面存在一個與.podspec文件中一致的version, 這里你可以在你的git倉庫中的releases一項去手動發(fā)布, 也可以在當(dāng)前文件夾下使用終端命令【發(fā)布之前可以把git上新的變更先提交發(fā)布出去】:
git tag -m 'first release' '1.0.1'
//推送tag到遠端倉庫
git push --tag
成功之后即可在你的releases里面看到這個tag的版本.
六惠奸、發(fā)布自己的庫描述文件podspec給cocoapods
同樣在這個文件夾下, 終端執(zhí)行:
pod trunk push JWJOPenKit.podspec
這一步需要等很久荠锭,如果最后沒有報錯的話:
將你的庫文件.podspec文件提交到公有的specs上面, 這一步做的操作是驗證你的podspec文件是否合法+提交到specs中(等同于fork;commit;push)+將上傳的podspec文件轉(zhuǎn)成json格式文件),成功后會出現(xiàn)Congrats信息噢~
至此晨川,你的共享庫就可以被其他人通過 Cocoapods 所使用了证九。
七删豺、更新維護podspec
如果有錯誤或者需要迭代版本,修改工程文件后推送到遠端倉庫后, 需要修改podspec中的版本號, 并重新打tag上傳, 再進行新一輪的驗證和發(fā)布, 當(dāng)然, 創(chuàng)建一個演示demo工程供其他開發(fā)者下載查看并不會影響我們的pod庫±⒘【在示例文本庫中制作演示demo好像需要導(dǎo)入組件的源文件呀页,使用 pod好像導(dǎo)入不進來,無法直接使用拥坛。當(dāng)然你也可以把組件源碼文件庫和Dome分開蓬蝶,把 Dome作為對外公開的工程演示用例】
八、關(guān)于查找和使用新創(chuàng)建的庫
當(dāng)你發(fā)布共享庫成功后猜惋,是可以馬上供其他人使用的丸氛,但是當(dāng)你自己使用 pod search XXX的時候卻發(fā)現(xiàn)本地搜索不到:
解決辦法:
pod setup成功后生成的~/Library/Caches/CocoaPods/search_index.json文件, 是用來查找的索引文件, 終端輸入:
rm ~/Library/Caches/CocoaPods/search_index.json
刪除~/Library/Caches/CocoaPods目錄下的search_index.json文件, 刪除成功后再執(zhí)行:pod search 庫名, 等待輸出:Creating search index for spec repo 'master'.. Done! 稍等片刻就會出現(xiàn)你想要的結(jié)果~
參考文章