前言
作為一個(gè)iOS開發(fā)者行楞,一定使用過CocoaPods吧嚎朽。如果還不熟悉的小伙伴可以參考一下CocoaPods安裝和使用教程。CocoaPods 作為OS X和iOS 開發(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 ? //重置代理