Cocoapods私有庫(kù)管理

鎮(zhèn)樓

前言

在我們開(kāi)發(fā)過(guò)程中,有一些自己封裝的工具類或是庫(kù)他炊,為了方便管理,我們借助cocoapods來(lái)實(shí)現(xiàn)已艰。我們平時(shí)所接觸的第三方庫(kù)痊末,是公開(kāi)的,我們自己的代碼使用私有庫(kù)來(lái)進(jìn)行哩掺。

私有庫(kù)相關(guān)概念和原理

cocopods為包管理凿叠,那么顧名思義它只是管理我們所存代碼的一些信息,并不是真正管理我們的代碼嚼吞。那么這里就需要兩個(gè)倉(cāng)庫(kù)盒件,其中一個(gè)倉(cāng)庫(kù)是托管cocoapods所需要的配置文件,另外一個(gè)倉(cāng)庫(kù)才是存放我們的代碼舱禽。

工作原理
工作原理

cocoapods是通過(guò).podspec文件來(lái)索引私有庫(kù)真的存代碼的倉(cāng)庫(kù)炒刁。其所有配置文件托管在Master Repo

核心概念:

.podspec : 該文件為你的代碼倉(cāng)庫(kù)索引描述文件誊稚,CocoaPods通過(guò)該文件對(duì)你真正存儲(chǔ)代碼工程的 Git 倉(cāng)庫(kù)進(jìn)行索引與下載

Lib : 你上傳到遠(yuǎn)程Git倉(cāng)庫(kù)的代碼工程翔始,將來(lái)用于開(kāi)源共享或則私有

Git 倉(cāng)庫(kù) : Git介紹

CocoaPod 通過(guò)第一個(gè) Git 倉(cāng)庫(kù)的里 .podspec 描述文件找到真正存儲(chǔ)你代碼的第二個(gè) Git 倉(cāng)庫(kù),然后根據(jù) .podspec 里的相關(guān)字段對(duì)特定目錄下的代碼里伯,三方依賴庫(kù)城瞎,資源文件等進(jìn)行下載。

換一種說(shuō)法來(lái)理解疾瓮,第一個(gè) Git 倉(cāng)庫(kù)里的 .podspec 描述文件相當(dāng)于我們的指針, 其指向的另一個(gè) Git 倉(cāng)庫(kù)(內(nèi)存)才是你自己真正所共享的代碼脖镀。

私有庫(kù)創(chuàng)建流程

基于git的倉(cāng)庫(kù)有很多,由于GitHub的私有庫(kù)是收費(fèi)的狼电,所以筆者使用的碼云蜒灰。

1.首先創(chuàng)建倉(cāng)庫(kù)1弦蹂,用于托管我們的代碼。

創(chuàng)建倉(cāng)庫(kù)1
創(chuàng)建倉(cāng)庫(kù)1

2.創(chuàng)建倉(cāng)庫(kù)2强窖,用于存放cocoapoads索引所需的配置文件凸椿。

倉(cāng)庫(kù)2
倉(cāng)庫(kù)2

3.前面已經(jīng)將兩個(gè)倉(cāng)庫(kù)建好了,那么接下來(lái)創(chuàng)建代碼庫(kù)Lib和托管Podspec文件毕骡。

(1)首先在本地創(chuàng)建一個(gè)Lib削饵,使用終端cd到你文件想要保存的目錄下,依照提示創(chuàng)建未巫。

創(chuàng)建lib命令:pod lib create <#項(xiàng)目名字#>

當(dāng)執(zhí)行pod lib create ProjectName時(shí),其實(shí)是下載了一個(gè)pod模板,然后在內(nèi)部通過(guò)更改.podspec文件的配置定制化自己的pod,
pod lib create ProjectName其實(shí)使用了默認(rèn)參數(shù),補(bǔ)全的話pod lib create ProjectName --template-url=https://github.com/CocoaPods/pod-template.git,

當(dāng)模板創(chuàng)建成功后窿撬,會(huì)自動(dòng)使用XCode打開(kāi)。

(2)接下來(lái)我們配置一下ExampleLib.podspec文件:

(3)配置好相關(guān)信息后叙凡,我們來(lái)檢查一下文件格式和遠(yuǎn)程地址等信息是否正確:

pod lib lint

注意:提示信息需要沒(méi)有error和warn:(這里一般出錯(cuò)都是遠(yuǎn)程倉(cāng)庫(kù)地址沒(méi)配置好或是素材路徑等)

通過(guò)Cocoapods創(chuàng)建出來(lái)的工程本身就在本地的Git管理下劈伴,我們需要做的就是給它添加遠(yuǎn)端倉(cāng)庫(kù),此遠(yuǎn)程倉(cāng)庫(kù)就是上面我們創(chuàng)建的ExampleLib握爷。網(wǎng)上大多數(shù)的做法是直接通過(guò)終端git命令行來(lái)上傳跛璧,筆主這里使用可視化的git管理工具SourceTree;

使用SourceTree將遠(yuǎn)程倉(cāng)庫(kù)clone下來(lái),然后將我們所創(chuàng)建的lib倉(cāng)庫(kù)復(fù)制好新啼,進(jìn)行遠(yuǎn)程推送追城。推送后一定要給本次推送打上tag(標(biāo)簽)。因?yàn)檫@個(gè)標(biāo)簽在下一步驗(yàn)證中需要使用燥撞。

添加標(biāo)簽
添加標(biāo)簽

tag的版本號(hào)需要跟ExampleLib.podspec文件中的s.version一致座柱。注意:SourceTree添加標(biāo)簽后,一定要再遠(yuǎn)程推送一編物舒,這樣遠(yuǎn)程倉(cāng)庫(kù)才有tag的色洞。

遠(yuǎn)程驗(yàn)證Podspec正確性:

pod spec lint 會(huì)讀取線上的repo并檢查相應(yīng)的tag

如果遠(yuǎn)程驗(yàn)證沒(méi)過(guò),一定要注意是不是遠(yuǎn)程倉(cāng)庫(kù)的tag沒(méi)有添加成功。

PS:如何你在創(chuàng)建lib失敗冠胯,錯(cuò)誤如下:

創(chuàng)建失敗一開(kāi)始題主以為是ruby版本太低火诸,經(jīng)查閱資源得知是因?yàn)閏ocoapods的版本太低了≤欤可以通過(guò)命令行pod --version查看版本號(hào)置蜀,低于1.2.0的都不行。

那么通過(guò)命令gem install cocoapods --pre來(lái)升級(jí)cocoapods割粮。

升級(jí)后再重新開(kāi)始創(chuàng)建lib就能正常創(chuàng)建了盾碗。

(4)存放代碼的遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)弄好了,那么接下來(lái)就應(yīng)該把ExampleLib.podspec文件上傳到配置文件倉(cāng)庫(kù)舀瓢,以便pod查詢使用。我們平常使用到的第三方庫(kù)的Podspec文件都托管在https://github.com/CocoaPods/Specs耗美【┧瑁可以進(jìn)入 ~/.cocoapods/repos 目錄下查看航缀,三方庫(kù)的所有配置文件都在Master文件夾中。

pod repo add 倉(cāng)庫(kù)名 倉(cāng)庫(kù)地址

~/.cocoapods/repos 目錄下查看堰怨,就能找到我們剛剛添加的庫(kù)了芥玉。

(5)最后就將ExampleLib.podspec文件上傳到遠(yuǎn)程庫(kù)

私有庫(kù)的使用

私有庫(kù)創(chuàng)建成功后,pod search 你的私有庫(kù)名字可以搜索到我們的私有庫(kù)备图。由于我們使用的私有庫(kù)灿巧,那么就需要告訴cocoapods你所引用的私有庫(kù)的配置文件在哪里,固在Podfile文件中需要添加私有庫(kù)配置文件的遠(yuǎn)程倉(cāng)庫(kù)地址:

私有庫(kù)的使用
私有庫(kù)的使用

總結(jié)

下面用一張圖來(lái)總結(jié)整個(gè)過(guò)程:

流程
流程

參考:

創(chuàng)建私有Pods,從小白到老鐵

pod lib create fails

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揽涮,一起剝皮案震驚了整個(gè)濱河市抠藕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒋困,老刑警劉巖盾似,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異雪标,居然都是意外死亡零院,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門村刨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)告抄,“玉大人,你說(shuō)我怎么就攤上這事嵌牺〈蛲荩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵髓梅,是天一觀的道長(zhǎng)拟蜻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)枯饿,這世上最難降的妖魔是什么酝锅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮奢方,結(jié)果婚禮上搔扁,老公的妹妹穿的比我還像新娘。我一直安慰自己蟋字,他們只是感情好稿蹲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鹊奖,像睡著了一般苛聘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天设哗,我揣著相機(jī)與錄音唱捣,去河邊找鬼。 笑死网梢,一個(gè)胖子當(dāng)著我的面吹牛震缭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播战虏,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拣宰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了烦感?” 一聲冷哼從身側(cè)響起巡社,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啸盏,沒(méi)想到半個(gè)月后重贺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡回懦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年气笙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怯晕。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡潜圃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舟茶,到底是詐尸還是另有隱情谭期,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布吧凉,位于F島的核電站隧出,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阀捅。R本人自食惡果不足惜胀瞪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饲鄙。 院中可真熱鬧凄诞,春花似錦、人聲如沸忍级。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)轴咱。三九已至汛蝙,卻和暖如春烈涮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背患雇。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工跃脊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宇挫,地道東北人苛吱。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像器瘪,于是被迫代替她去往敵國(guó)和親翠储。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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