iOS 讓自己的工具支持CocoaPods

前言

作為一個(gè)iOS開發(fā)者行楞,一定使用過CocoaPods吧嚎朽。如果還不熟悉的小伙伴可以參考一下CocoaPods安裝和使用教程CocoaPods 作為OS XiOS 開發(fā)平臺(tái)的類庫管理工具,已經(jīng)非常完善和強(qiáng)大风瘦。通常我們用CocoaPods來管理第三方開源類庫,但是我們也極有可能會(huì)開發(fā)一些常用工具或靜態(tài)類庫供他人使用公般。

近期由于公司對(duì)項(xiàng)目管理的規(guī)劃万搔,需要使用CocoaPods做三方庫版本依賴管理,因此研究學(xué)習(xí)下了創(chuàng)建Pods依賴庫官帘∷脖ⅲ苦于網(wǎng)絡(luò)查找的資料太多,有些并不適合自己這種小學(xué)生(大神們太基礎(chǔ)的并未記錄)刽虹,所以有了本文酗捌。下面進(jìn)入正片部分:

正文

1.創(chuàng)建自己的GitHub倉庫

CocoaPods是托管在GitHub上的,所有的Pods也是托管在GitHub上涌哲,所以我們首先需要?jiǎng)?chuàng)建一個(gè)屬于自己的GitHub倉庫胖缤。

創(chuàng)建GitHub倉庫有兩種方式:

1.通過GitHub網(wǎng)站登錄賬號(hào)后創(chuàng)建倉庫,如圖:

2.通過GitHub的客戶端“GitHub Desktop”來創(chuàng)建阀圾,如圖:

關(guān)于創(chuàng)建倉庫做一個(gè)簡(jiǎn)單說明:

(1)Initialize: 是否默認(rèn)創(chuàng)建一個(gè) README 文檔哪廓,一個(gè)完整的庫都會(huì)有這個(gè)說明文檔,這里最好勾選一下初烘。不過如果忘記的話也不要緊涡真,后面手動(dòng)創(chuàng)建也是可以的。

(2).gitignore: 忽略項(xiàng)文件肾筐,記錄一些想忽略的文件類型哆料,凡是該文件包含的文件類型, git 都不會(huì)將其納入到版本管理中吗铐《啵看需要選擇就行。

(3)license: 正規(guī)的倉庫都有一個(gè) license 文件唬渗, Pods 依賴庫對(duì)這個(gè)文件要求比較嚴(yán)格典阵,需要有這個(gè)文件。這里最好讓 github 自動(dòng)創(chuàng)建一個(gè)谣妻,不過后續(xù)手動(dòng)創(chuàng)建也行萄喳。我們這次先使用 MIT 類型的 license

上面各項(xiàng)根據(jù)大家需要填寫完畢后蹋半,點(diǎn)擊 Create repository 按鈕即可他巨,創(chuàng)建成功后如下所示:

2.Clone倉庫到本地

為了方便向倉庫中刪減內(nèi)容,需要將倉庫 clone 到本地,這里有多種操作方式染突,可以選擇你喜歡的一種捻爷。clone到本地后,目錄結(jié)構(gòu)如圖(后續(xù)操作都在該目錄下進(jìn)行)


3.向本地倉庫中添加創(chuàng)建 Pods 依賴庫所需的文件

(1)主類文件

創(chuàng)建 Pods 依賴庫就是為了方便別人使用我們的成果份企,比如我想共享給大家的HZWaitView類也榄,那這個(gè)類自然必不可少,我們把這個(gè)類放入一個(gè) HZWaitView 的目錄中:

(2)Demo工程

為了快速教會(huì)別人使用我們的 Pods 依賴庫司志,通常需要提供一個(gè) demo 工程:

(3)README.md

使用 github 的人應(yīng)該都熟悉這個(gè)文件甜紫,它是一個(gè)成功的 github 倉庫必不可少的一部分,使用 markdown 對(duì)倉庫進(jìn)行詳細(xì)說明骂远。

(4)LICENSE 文件

CocoaPods 強(qiáng)制要求所有的 Pods 依賴庫都必須有 license 文件囚霸,否則驗(yàn)證不會(huì)通過。

(5).podspec 文件

每個(gè) Pods 依賴庫必須有且僅有一個(gè)名稱和依賴庫名保持一致激才,后綴名為 .podspec 的描述文件拓型。

創(chuàng)建這個(gè)文件有兩種方法:

1.復(fù)制已有的 podspec 文件然后修改對(duì)應(yīng)的參數(shù)。

2.執(zhí)行命令行創(chuàng)建瘸恼。

我們使用命令行創(chuàng)建劣挫,先cd到本地倉庫目錄,然后終端輸入命令:pod spec create HZWaitView?

創(chuàng)建成功后終端顯示如下:

本地倉庫目錄結(jié)構(gòu)如下:

文件都準(zhǔn)備好后提交到GitHub东帅,并打上tag~‘v0.0.1’(注意版本前面的’v‘要加上压固,不然后面有坑)

4.修改.podspec文件

創(chuàng)建出HZWaitView.podspec文件后(可以使用sublime或文本編輯打開),我們打開可以發(fā)現(xiàn)該文件為ruby文件冰啃。里面有很多內(nèi)容邓夕,我們只需要根據(jù)需要做相應(yīng)修改刘莹。

Pod::Spec.new do |s|

s.name? ? ? ? = "HZWaitView"? //名字阎毅,一般和podspec文件名保持一致

s.version? ? ? = "0.0.1" //版本號(hào) 這個(gè)版本號(hào)需要和剛才提交GitHub的tag值一樣,并且不用加上'v'

s.summary? ? ? = "Wait view when waiting" //描述,這個(gè)隨便自己怎么寫

s.description? = <<-DESC

This just a wait view when waiting? //這個(gè)隨便点弯,可以不寫

DESC

s.homepage? ? = "https://github.com/PamelaChen1/HZWaitView" //項(xiàng)目主頁,一般是GitHub的鏈接地址

s.license? ? ? = "MIT"

s.author? ? ? ? ? ? = { "yc" => "805507174@qq.com" }

s.platform? ? = :ios, "7.0"? //支持的平臺(tái)和版本,這個(gè)一定要填

s.source? ? ? = { :git => "https://github.com/PamelaChen1/HZWaitView.git", :tag => "v#{s.version}" }

s.source_files? = "HZWaitView/**/*.{h,m}"http://這里的路徑自己填上去 按照層級(jí)寫就行了

s.frameworks = "UIKit", "Foundation"

s.requires_arc = true //是否支持ARC

end

5.驗(yàn)證.podspec文件

編輯完podspec文件后需要驗(yàn)證一下這個(gè)文件是否可用podspec文件不允許有任何的Warning或者Error扇调,執(zhí)行命令:pod spec lint HZWaitView.podspec ?驗(yàn)證通過如下:

如果驗(yàn)證未通過只存在warning不存在Error的情況,可使用命令:pod lib lint --allow-warning 再次驗(yàn)證抢肛。

6.提交.podspec文件

經(jīng)過前面的步驟狼钮,我們的 CocoaPods 依賴庫就已經(jīng)準(zhǔn)備好了,但是現(xiàn)在你還不能在你的工程中使用它捡絮。如果你想讓它成為一個(gè)真正可用的依賴庫熬芜,還需要最后一步操作:將剛才生產(chǎn)的 podspec 文件提交到 官方的 CocoaPods Specs 中。

沒錯(cuò)福稳,我們平時(shí)用的能用 pod search 搜到的依賴庫都會(huì)把它上傳到這個(gè)倉庫中涎拉, 也就是說只有將我們的 podspec 文件上傳到這里,才能成為一個(gè)真正的依賴庫,別人才能用鼓拧!

提交.podspec文件需要先注冊(cè)一個(gè)cocoapods賬號(hào)半火,可以使用命令:

pod trunk register xxxx@qq.com 'Pamela' --description='macbook air'

注冊(cè)完成后可以使用命令:pod trunk me 來查看注冊(cè)情況,如下圖

賬號(hào)注冊(cè)完成后我們只需要使用命令:pod trunk push HZWaitView.podspec 提交該文件季俩,下面只需要等待就可以了钮糖。經(jīng)過漫長(zhǎng)的等待,終于看到結(jié)果

大家看到這個(gè)是不是非常激動(dòng)呢酌住。

當(dāng)我們嘗試搜索依賴庫時(shí)店归,發(fā)現(xiàn)

這時(shí)內(nèi)心時(shí)崩潰的。遇到這個(gè)問題的解決方法就是Finder前往資源庫(~/Library/Caches/CocoaPods)去刪除緩存中的search_index.json酪我,然后再pod search一次就可以了娱节。最終結(jié)果

7.私有庫的搭建

1.創(chuàng)建代碼倉庫并克隆到本地,本地文件目錄結(jié)構(gòu)如下圖:


2.使用終端命令祭示,上傳代碼到git倉庫肄满,命令如下:

cd ~/.HZBankWebContainer?

git init

git add .

git commit -m "first commit"

git remote add origin XXXXXX ?(XXXXX為倉庫地址)

git push -u origin master

3.創(chuàng)建podspec文件倉庫并克隆到本地,本地spec文件目錄如下圖:


4.上傳spec文件至git倉庫质涛,命令與代碼上傳一致

5.進(jìn)入代碼倉庫稠歉,創(chuàng)建分支,終端命令如下:

git checkout -b 1.0.0 ?//檢出brunch分支

git push origin 1.0.0 ?//推送分枝

6.完成以上操作后就可以使用cocoapods來管理類庫了汇陆,如果使用私有庫中有依賴于其他三方開源庫的怒炸,需要連內(nèi)網(wǎng)通過代理訪問外網(wǎng)。命令如下:

git config --global http.proxy "http://192.68.70.62:3128" ?//設(shè)置代理服務(wù)器地址訪問git

git config --global https.proxy "http://192.68.70.62:3128"

git config --global --get-all http.proxy ? //獲取代理信息

git config --global --unset http.proxy

git config --global --unset https.proxy ? //重置代理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末毡代,一起剝皮案震驚了整個(gè)濱河市阅羹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌教寂,老刑警劉巖捏鱼,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異酪耕,居然都是意外死亡导梆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門迂烁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來看尼,“玉大人,你說我怎么就攤上這事盟步〔卣叮” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵却盘,是天一觀的道長(zhǎng)狰域。 經(jīng)常有香客問我窜觉,道長(zhǎng),這世上最難降的妖魔是什么北专? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任禀挫,我火速辦了婚禮,結(jié)果婚禮上拓颓,老公的妹妹穿的比我還像新娘语婴。我一直安慰自己,他們只是感情好驶睦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布砰左。 她就那樣靜靜地躺著,像睡著了一般场航。 火紅的嫁衣襯著肌膚如雪缠导。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天溉痢,我揣著相機(jī)與錄音僻造,去河邊找鬼。 笑死孩饼,一個(gè)胖子當(dāng)著我的面吹牛髓削,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播镀娶,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼立膛,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了梯码?” 一聲冷哼從身側(cè)響起宝泵,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎轩娶,沒想到半個(gè)月后儿奶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡罢坝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年廓握,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘁酿。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖男应,靈堂內(nèi)的尸體忽然破棺而出闹司,到底是詐尸還是另有隱情,我是刑警寧澤沐飘,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布游桩,位于F島的核電站牲迫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏借卧。R本人自食惡果不足惜盹憎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铐刘。 院中可真熱鬧陪每,春花似錦、人聲如沸镰吵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疤祭。三九已至盼产,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間勺馆,已是汗流浹背戏售。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留草穆,地道東北人蜈项。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像续挟,于是被迫代替她去往敵國(guó)和親紧卒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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