學會使用別人的 Pods 依賴庫以后蛉威, 你一定對創(chuàng)建自己的依賴庫很有興趣吧,現(xiàn)在我們就來嘗試一下走哺,以一個簡單 O2View 為例自己創(chuàng)建一個 Pods 依賴庫蚯嫌,這里我會使用 Swift 2.0 來寫這個例子。
1.創(chuàng)建自己的 github 倉庫
CocoaPods 是托管在 github 上的割坠,所有的 Pods 也都是托管在 github 上齐帚,因此我們首先需要創(chuàng)建一個屬于自己的 github 倉庫,如下圖所示:
上圖中標識出了6處地方
- Repository name: 倉庫名稱彼哼,這里寫上我們的依賴庫名字 O2View 对妄,必填。
- Description: 倉庫的描述信息敢朱,可選剪菱。
- Public or Private: 倉庫的公開性,開源的話選 Public 拴签。 如果是公司內(nèi)部使用的話這里推薦大家使用私有的倉庫,但是 github 的私有倉庫是要收費的 $7/month (壕請無視 - -P⒊!)。大部分公司都是有自己的git服務(wù)器蚓哩,不過一般只能在公司內(nèi)網(wǎng)使用构灸,或者可以選擇Gitlab,Coding, Bitbucket任意一種。
- Initialize: 是否默認創(chuàng)建一個 README 文檔岸梨,一個完整的庫都會有這個說明文檔喜颁,這里最好勾選一下稠氮。不過如果忘記的話也不要緊,后面手動創(chuàng)建也是可以的半开。
- .gitignore: 忽略項文件隔披,記錄一些想忽略的文件類型,凡是該文件包含的文件類型寂拆, git 都不會將其納入到版本管理中奢米。看需要選擇就行纠永。
- license: 正規(guī)的倉庫都有一個 license 文件鬓长, Pods 依賴庫對這個文件要求比較嚴格,需要有這個文件尝江。這里最好讓 github 自動創(chuàng)建一個痢士,不過后續(xù)手動創(chuàng)建也行。我們這次先使用 MIT 類型的 license茂装。
上面各項根據(jù)大家需要填寫完畢后,點擊 Create repository 按鈕即可善延,創(chuàng)建成功后如下所示:
2.clone 倉庫到本地
為了方便向倉庫中刪減內(nèi)容少态,需要將倉庫 clone 到本地,這里有多種操作方式易遣,可以選擇你喜歡的一種彼妻,但是為了方便這邊選擇使用命令行。首先需要切換到你想在本地存儲的目錄豆茫,然后再 clone 侨歉,假設(shè)你放在用戶的根目錄上:
cd ~
git clone https://github.com/marklin2012/O2View.git
完成后,我們進入到 ~/O2View
目錄中應(yīng)該可以看到目錄結(jié)構(gòu)如下:
|____LICENSE
|____README.md
其實還有一個隱藏的 .git 文件揩魂,后續(xù)我們的所有文件都在這個目錄底下進行幽邓。
3.向本地倉庫中添加創(chuàng)建 Pods 依賴庫所需的文件
1)主類文件
創(chuàng)建 Pods 依賴庫就是為了方便別人使用我們的成果,比如我想共享給大家的O2View類火脉,那這個類自然必不可少牵舵,我們把這個類放入一個 O2View 的目錄中:
順便看看 O2View.swift 主要內(nèi)容:
import UIKit
public class O2View: UIView {
public override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.redColor()
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
2).podspec 文件
每個 Pods 依賴庫必須有且僅有一個名稱和依賴庫名保持一致,后綴名為 .podspec 的描述文件倦挂。這里我們依賴庫的描述文件名稱應(yīng)該為 O2View.podspec
畸颅。
創(chuàng)建這個文件有兩種途徑:
- 復(fù)制已有的 podspec 文件然后修改對應(yīng)的參數(shù)。
- 執(zhí)行命令行創(chuàng)建方援。
我們使用命令行:
pod spec create O2View
創(chuàng)建出 O2View.podspec 文件后没炒,我們打開可以發(fā)現(xiàn),該文件是 ruby 文件犯戏,里面有很多的內(nèi)容送火,但是大多數(shù)都是我們不需要的拳话,所以我們只需要根據(jù)項目的情況保留關(guān)鍵的一些內(nèi)容就行:
Pod::Spec.new do |s|
s.name = "O2View" #名稱
s.version = "0.0.1" #版本號
s.summary = "Just testing" #簡短介紹
s.description = <<-DESC
私有Pods測試
* Markdown 格式
DESC
s.homepage = "http://aoto.io/"
# s.screenshots = "www.example.com/screenshots_1.gif"
s.license = "MIT" #開源協(xié)議
s.author = { "linyi31" => "linyi@jd.com" }
s.source = { :git => "https://github.com/marklin2012/O2View.git" }
## 這里不支持ssh的地址,只支持HTTP和HTTPS漾脂,最好使用HTTPS
## 正常情況下我們會使用穩(wěn)定的tag版本來訪問假颇,如果是在開發(fā)測試的時候,不需要發(fā)布release版本骨稿,直接指向git地址使用
## 待測試通過完成后我們再發(fā)布指定release版本笨鸡,使用如下方式
#s.source = { :git => "http://EXAMPLE/O2View.git", :tag => version }
s.platform = :ios, "9.0" #支持的平臺及版本,這里我們呢用swift坦冠,直接上9.0
s.requires_arc = true #是否使用ARC
s.source_files = "O2View/*.swift" #OC可以使用類似這樣"Classes/**/*.{h,m}"
s.frameworks = 'UIKit', 'QuartzCore', 'Foundation' #所需的framework,多個用逗號隔開
s.module_name = 'O2View' #模塊名稱
# s.dependency "JSONKit", "~> 1.4" #依賴關(guān)系形耗,該項目所依賴的其他庫,如果有多個可以寫多個 s.dependency
end
3)Demo 工程
為了快速教會別人使用我們的 Pods 依賴庫辙浑,通常需要提供一個 demo 工程激涤。我們創(chuàng)建了一個名為 O2ViewDemo 的工程來演示 O2View 的使用,如下圖所示:
4)README.md
使用 github 的人應(yīng)該都熟悉這個文件判呕,它使一個成功的 github 倉庫必不可少的一部分倦踢,使用 markdown 對倉庫進行詳細說明。
5)LICENSE 文件
CocoaPods 強制要求所有的 Pods 依賴庫都必須有 license 文件侠草,否則驗證不會通過辱挥。 license 文件有很多中,詳情可以參考 tldrlegal边涕。前面我們已經(jīng)選擇創(chuàng)建了一個 MIT 類型的 license晤碘。
以上的5個文件是創(chuàng)建 Pods 依賴庫所需的基礎(chǔ)文件,當然 Demo 工程沒有添加也沒關(guān)系功蜓。添加完這些內(nèi)容后园爷,我們本地倉庫目錄就變成這個樣子:
4.提交修改到 github
經(jīng)過前面步驟,我們已將在本地的 git 倉庫添加了不少文件式撼,現(xiàn)在我們只要將他們提交到 github 上就可以童社。在此之前我們需要對剛才添加的 pod 進行一下驗證:
pod lib lint
運行之后可能會得到下面的警告:
-> O2View (0.0.1)
- WARN | source: Git sources should specify a tag.
[!] O2View did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it) and All results apply only to public specs, but you can use `--private` to ignore them if linting the specification for a private pod..
You can use the `--no-clean` option to inspect any issue.
由于我們現(xiàn)在還沒有正式生成 release 版本, github 上并沒有任何 tag端衰,所以我們剛才填寫 .podspec 文件填寫 git 地址的時候沒有填寫指定 tag (上面文件的注釋中有提到)叠洗,解決方法我們可以先執(zhí)行忽略警告的命令:
pod lib lint --allow-warnings
如果成功會出現(xiàn)如下輸出:
-> O2View (0.0.1)
- WARN | source: Git sources should specify a tag.
O2View passed validation.
當調(diào)試完成了之后,我們需要在 github 上把我們的代碼生成相應(yīng)穩(wěn)定的 release 版本旅东,到時候我們再回來添加指定 tag 發(fā)布就 Ok 了灭抑。
驗證成功之后,我們只要把代碼提交到 github 倉庫抵代,就可以了腾节,參考命令:
git add -A && git commit -m "add pod files"
git push origin master
這里主要是 git 的范疇,不做過多敘述。如果前面操作都沒有問題的話案腺,github 上應(yīng)該能看到類似如下內(nèi)容:
5.接下來做什么庆冕?
經(jīng)過前面的步驟,我們的 CocoaPods 依賴庫就已經(jīng)準備好了劈榨,但是現(xiàn)在你還不能在你的工程中使用它访递。如果你想成為一個真正可用的依賴庫,還需要最后一步操作:將剛才生產(chǎn)的 podspec 文件提交到 官方的 CocoaPods Specs 中同辣。
沒錯拷姿,我們平時用的能用 pod search
搜到的依賴庫都會把它上傳到這個倉庫中, 也就是說只有將我們的 podspec 文件上傳到這里旱函,才能成為一個真正的依賴庫响巢,別人才能用!
按照 github 的規(guī)則棒妨,要想向別人的庫中添加文件踪古,就要先 fork 別人的倉庫,做相應(yīng)的修改券腔,再 pullrequest 給倉庫的原作者伏穆,等到作者審核通過,進行 meger 之后就可以了纷纫!
流程大概就是這個樣子蜈出,具體可以參考:CocoaPods Guides,我們就先不展開詳細的敘述了(后面會添加關(guān)于這部分的文章)涛酗。
除了官方的 specs 之外,我們還可以把 podspec 文件提交到私有的倉庫中偷厦,詳見我們博客的另一篇文章:創(chuàng)建私有的 CocoaPods repo spec 商叹。