代碼管理 | 創(chuàng)建并管理自己的公有Cocopods庫

前言

隨著項目的發(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

這是我的設(shè)置

三赏寇、 配置好文件倉庫后上傳到公用倉庫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
不修改 s.summary 就會報錯

如有警告或者錯誤請重新檢查你的編寫正確性, 如果沒有問題會出現(xiàn)

修改 s.summary后驗證通過

五、給文件倉庫打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é)果~


參考文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末著摔,一起剝皮案震驚了整個濱河市缓窜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谍咆,老刑警劉巖禾锤,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摹察,居然都是意外死亡恩掷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門供嚎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黄娘,“玉大人,你說我怎么就攤上這事克滴〈绾辏” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵偿曙,是天一觀的道長。 經(jīng)常有香客問我羔巢,道長望忆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任竿秆,我火速辦了婚禮启摄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘幽钢。我一直安慰自己歉备,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布匪燕。 她就那樣靜靜地躺著蕾羊,像睡著了一般喧笔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上龟再,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天书闸,我揣著相機與錄音,去河邊找鬼利凑。 笑死浆劲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哀澈。 我是一名探鬼主播牌借,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼割按!你這毒婦竟也來了膨报?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤哲虾,失蹤者是張志新(化名)和其女友劉穎丙躏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體束凑,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡晒旅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了汪诉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片废恋。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扒寄,靈堂內(nèi)的尸體忽然破棺而出鱼鼓,到底是詐尸還是另有隱情,我是刑警寧澤该编,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布迄本,位于F島的核電站,受9級特大地震影響课竣,放射性物質(zhì)發(fā)生泄漏嘉赎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一于樟、第九天 我趴在偏房一處隱蔽的房頂上張望公条。 院中可真熱鬧,春花似錦迂曲、人聲如沸靶橱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽关霸。三九已至传黄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谒拴,已是汗流浹背尝江。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留英上,地道東北人炭序。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像苍日,于是被迫代替她去往敵國和親惭聂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容