CocoaPods戒努,創(chuàng)建屬于自己的公開庫

前言

? ?在項目的開發(fā)過程中我們經(jīng)常會使用到很多的第三方框架请敦,通過CocoaPods我們可以非常容易的去管理這些第三方庫,至于CocoaPods如何使用储玫,這不是我們今天討論的重點侍筛,這里我就不再贅述了,不太明白的小伙伴們可以參考這篇文章:用CocoaPods做iOS程序的依賴管理

? ?今天我們討論的重點是如何將屬于我們自己寫的組件或者是庫開源出去撒穷,用戶通過一句 ?pod install ?就可以集成我們寫的框架呢匣椰? 不著急,下面我將帶領(lǐng)大家一步步的將屬于自己的pods發(fā)布到CocoaPods中端礼,下面我就簡單的以一個小Demo來做演示

工作原理

從網(wǎng)上看到一張?zhí)貏e好的圖 這里就直接拿過來用了

工作原理


一.上傳項目到代碼托管平臺

? ?首先我們需要在第三方代碼托管平臺上創(chuàng)建一個屬于我們自己的Repository禽笑,假如名稱為GZPCode,創(chuàng)建好之后將我們的庫上傳到github上入录,并且打上tag,這個非常重要佳镜。將tag push到github上之后我們就可以在release 文件中看到一個0.1.0的版本了僚稿,注意這里一定要先將我們的庫commit 之后在打tag,否則的話會出問題


二.注冊trunk

如果不知道我們曾經(jīng)有沒有注冊過trunk,那么可以使用下面的命令向trunk服務(wù)器查詢自己的注冊信息:

pod trunk me

否則我們可以通過下面的命令去注冊trunk:

pod trunk register zswangzp@163.com 'gzp' ?--verbose

大家在注冊的時候需要將郵箱和用戶名替換成自己的即可蟀伸,--verbose參數(shù)是為了便于輸出在注冊過程中的調(diào)試信息蚀同。執(zhí)行上面的語句后,你的郵箱將會受到一封帶有驗證鏈接的郵件啊掏,如果沒有請去垃圾箱找找蠢络,有可能被屏蔽了。點擊郵件的鏈接就完成了trunk注冊流程脖律。

點擊郵箱中的鏈接則會跳轉(zhuǎn)到下圖所示的界面谢肾,表明已經(jīng)注冊成功了

三.配置PodSpec,并且推送到CocoaPods服務(wù)器

1、添加podspec描述文件

首先在我們框架的同級目錄下創(chuàng)建一個名稱為 GZPCode 的PodSpec的文件小泉,代碼如下

pod spec create GZPCode

至于pod spec文件芦疏,它是用來描述我們的框架的一些具體信息的,比如框架的作者微姊、版本酸茴、下載地址等信息。我們在 pod install ?安裝第三方框架的時候就是根據(jù)這個文件中的下載地址去Clone 具體代碼的兢交。通過上面這個命令我們就創(chuàng)建了一個GZPCode.podspec 文件薪捍,用XCode 打開這個文件 我們可以看到它里面有非常多的信息,這里我們講解幾個必要的:

Pod::Spec.new do |s|

s.name ? ? ? ? = "GZPCode" ?#項目名稱

s.version ? ? ?= "0.1.0" ? ?#項目版本

s.summary ? ? ?= "GZPCode. 框架的簡單描述" #框架的簡單描述

s.description ?= <<-DESC

框架的具體描述配喳,這里的信息要長一些不然會報錯的酪穿。。晴裹。被济。。涧团。只磷。。泌绣。钮追。

DESC

s.homepage ? ? = "https://github.com/Guanzhangpeng/GZPCode" #該框架在github上的主頁地址

s.license ? ? ?= "MIT" ? #協(xié)議

s.author ? ? ? ? ? ? = { "gzp" => "zswangzp@163.com" } ?#作者

s.platform ? ? = :ios, "8.0" ?#最低適配的版本

s.source ? ? ? = { :git => "https://github.com/Guanzhangpeng/GZPCode.git", :tag => "#{s.version}" } #源代碼的具體地址

s.source_files ?= "Classes", "Category/**/*.{h,m}" #框架相對于spec文件的路徑

s.exclude_files = "Classes/Exclude"

s.requires_arc = true ? ? #支持arc

end

2、將podspec文件通過trunk推送給CocoaPods服務(wù)器

相信上面的注釋已經(jīng)寫的很詳細(xì)了阿迈,編輯完podspec文件后元媚,需要驗證一下這個文件是否可用,如果有任何WARNING或者ERROR都是不可以通過的,它就不能被添加到Spec Repo中惠毁,不過是可以存在的犹芹,當(dāng)然我們也可以通過 --allow-warnings 來屏蔽警告

pod spec lint GZPCode.podspec

當(dāng)看到 ?GZPCode.podspec passed validation. ?之后 就表明已經(jīng)驗證通過了,那么接下來我們就可以通過trunk推送pod spec文件到CocoaPod官方庫中了. ?CocoaPods/Specs代碼庫的地址是:https://github.com/CocoaPods/Specs

pod trunk push GZPCode.podspec ? ?

上面的代碼幫我們做了下面幾件事情:

1鞠绰、驗證你的podspec文件是否合法腰埂。在trunk方式之前我們一般用“pod lib lint”命令進行驗證。

2蜈膨、上傳podspec文件到trunk服務(wù)器(其實最終也會自動添加到https://github.com/CocoaPods/Specs中屿笼,只是使用trunk方式省去了以前先fork在pull request的繁瑣操作)

3、將你上傳的podspec文件轉(zhuǎn)成json格式文件

執(zhí)行上面的push操作翁巍,就相當(dāng)于你把你的源代碼提交給CocoaPods團隊審核了驴一,一般需要幾秒鐘或者幾分鐘就可以完成了。當(dāng)我們看到下面這個界面就表示我們的GZPCode.podspec 文件已經(jīng)成功的上傳到了CocoaPod官方庫中了灶壶。

四.更新本地pod索引庫

? ? 經(jīng)過上面的步驟后我們已經(jīng)成功的將spec文件上傳到了CocoaPod官方庫中了肝断,但是我們本地的pod索引庫還不是最新的,所以這個時候我們需要通過? pod setup? 將遠(yuǎn)程的CocoaPods 索引庫更新到我們本地驰凛。pod setup其實在做這么一件事:Cocoapods在將https://github.com/CocoaPods/Specs 的信息下載到你電腦的~/.cocoapods目錄下并進行文件比對胸懈,總數(shù)據(jù)大小大約在300MB左右,再加上服務(wù)器在國外恰响,因此速度會比較慢趣钱。在執(zhí)行過程中你也可以新開一個Terminal窗口,cd到~/.cocoapods目錄胚宦,用du -sh *來查看下載進度首有。第一次會比較慢,第一次以后只需要幾秒鐘即可完成枢劝。

五.測試使用

完成上面的步驟后我們可以來測試下 看看我們的框架是否可以通過 CocoaPods來集成了井联,首先我們在終端上 搜索下我們的框架 ?pod search GZPCode,很遺憾 沒有搜索到您旁,而且給我們一個紅色的提示

[!] Unable to find a pod with name, author, summary, or description matching `GZPCode`

這是因為什么原因呢低矮?其實原因很簡單,這是因為我們本地索引庫的檢索文件 search_index.json 緩存造成的結(jié)果被冒,我們將索引緩存路徑 ~/Library/Caches/CocoaPods/ 下的這個json文件 刪除后再次搜索就可以搜索到了


是不是很神奇? 下面你就可以通過 pod的命令來集成這個框架了轮蜕。

謝謝大家昨悼,歡迎討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跃洛,一起剝皮案震驚了整個濱河市率触,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汇竭,老刑警劉巖葱蝗,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穴张,死亡現(xiàn)場離奇詭異,居然都是意外死亡两曼,警方通過查閱死者的電腦和手機皂甘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悼凑,“玉大人偿枕,你說我怎么就攤上這事』П瑁” “怎么了渐夸?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渔欢。 經(jīng)常有香客問我墓塌,道長,這世上最難降的妖魔是什么奥额? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任苫幢,我火速辦了婚禮,結(jié)果婚禮上披坏,老公的妹妹穿的比我還像新娘态坦。我一直安慰自己,他們只是感情好棒拂,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布伞梯。 她就那樣靜靜地躺著,像睡著了一般帚屉。 火紅的嫁衣襯著肌膚如雪谜诫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天攻旦,我揣著相機與錄音喻旷,去河邊找鬼。 笑死牢屋,一個胖子當(dāng)著我的面吹牛且预,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烙无,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锋谐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了截酷?” 一聲冷哼從身側(cè)響起涮拗,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后三热,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鼓择,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年就漾,在試婚紗的時候發(fā)現(xiàn)自己被綠了呐能。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡从藤,死狀恐怖催跪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夷野,我是刑警寧澤懊蒸,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站悯搔,受9級特大地震影響骑丸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妒貌,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一通危、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灌曙,春花似錦菊碟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚣驼,卻和暖如春魄幕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颖杏。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工纯陨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人留储。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓翼抠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親获讳。 傳聞我的和親對象是個殘疾皇子机久,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

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