如何製作cocoaPods依賴庫
學會使用別人的 Pods 依賴庫以後, 你一定對創建自己的依賴庫很有興趣吧,現在我們就來嘗試一下,以一個簡單 O2View 爲例自己創建一個 Pods 依賴庫,這裏我會使用 Swift 2.0 來寫這個例子。
1.創建自己的 github 倉庫
CocoaPods 是託管在 github 上的,所有的 Pods 也都是託管在 github 上,因此我們首先需要創建一個屬於自己的 github 倉庫,如下圖所示:
上圖中標識出了6處地方
- Repository name: 倉庫名稱,這裏寫上我們的依賴庫名字 O2View ,必填。
- Description: 倉庫的描述信息,可選。
- Public or Private: 倉庫的公開性,開源的話選 Public 。 如果是公司內部使用的話這裏推薦大家使用私有的倉庫,但是 github 的私有倉庫是要收費的 $7/month (壕請無視 - -!)。大部分公司都是有自己的git服務器,不過一般只能在公司內網使用,或者可以選擇Gitlab,Coding, Bitbucket任意一種。
- Initialize: 是否默認創建一個 README 文檔,一個完整的庫都會有這個說明文檔,這裏最好勾選一下。不過如果忘記的話也不要緊,後面手動創建也是可以的。
- .gitignore: 忽略項文件,記錄一些想忽略的文件類型,凡是該文件包含的文件類型, git 都不會將其納入到版本管理中。看需要選擇就行。
- license: 正規的倉庫都有一個 license 文件, Pods 依賴庫對這個文件要求比較嚴格,需要有這個文件。這裏最好讓 github 自動創建一個,不過後續手動創建也行。我們這次先使用 MIT 類型的 license。
上面各項根據大家需要填寫完畢後,點擊 Create repository 按鈕即可,創建成功後如下所示:
2.clone 倉庫到本地
爲了方便向倉庫中刪減內容,需要將倉庫 clone 到本地,這裏有多種操作方式,可以選擇你喜歡的一種,但是爲了方便這邊選擇使用命令行。首先需要切換到你想在本地存儲的目錄,然後再 clone ,假設你放在用戶的根目錄上:
1 2
|
cd ~ git clone https://github.com/marklin2012/O2View.git
|
完成後,我們進入到 ~/O2View
目錄中應該可以看到目錄結構如下:
1 2
|
|____LICENSE |____README.md
|
其實還有一個隱藏的 .git 文件,後續我們的所有文件都在這個目錄底下進行。
3.向本地倉庫中添加創建 Pods 依賴庫所需的文件
1)主類文件
創建 Pods 依賴庫就是爲了方便別人使用我們的成果,比如我想共享給大家的O2View類,那這個類自然必不可少,我們把這個類放入一個 O2View 的目錄中:
順便看看 O2View.swift 主要內容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
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 的描述文件。這裏我們依賴庫的描述文件名稱應該爲 O2View.podspec
。
創建這個文件有兩種途徑:
- 複製已有的 podspec 文件然後修改對應的參數。
- 執行命令行創建。
我們使用命令行:
1
|
pod spec create O2View
|
創建出 O2View.podspec 文件後,我們打開可以發現,該文件是 ruby 文件,裏面有很多的內容,但是大多數都是我們不需要的,所以我們只需要根據項目的情況保留關鍵的一些內容就行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
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" #開源協議 s.author = { "linyi31" => "[email protected]" } s.source = { :git => "https://github.com/marklin2012/O2View.git" } ## 這裏不支持ssh的地址,只支持HTTP和HTTPS,最好使用HTTPS ## 正常情況下我們會使用穩定的tag版本來訪問,如果是在開發測試的時候,不需要發佈release版本,直接指向git地址使用 ## 待測試通過完成後我們再發布指定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" #依賴關係,該項目所依賴的其他庫,如果有多個可以寫多個 s.dependency end
|
3)Demo 工程
爲了快速教會別人使用我們的 Pods 依賴庫,通常需要提供一個 demo 工程。我們創建了一個名爲 O2ViewDemo 的工程來演示 O2View 的使用,如下圖所示:
4)README.md
使用 github 的人應該都熟悉這個文件,它使一個成功的 github 倉庫必不可少的一部分,使用 markdown 對倉庫進行詳細說明。
5)LICENSE 文件
CocoaPods 強制要求所有的 Pods 依賴庫都必須有 license 文件,否則驗證不會通過。 license 文件有很多中,詳情可以參考 tldrlegal。前面我們已經選擇創建了一個 MIT 類型的 license。
以上的5個文件是創建 Pods 依賴庫所需的基礎文件,當然 Demo 工程沒有添加也沒關係。添加完這些內容後,我們本地倉庫目錄就變成這個樣子:
4.提交修改到 github
經過前面步驟,我們已將在本地的 git 倉庫添加了不少文件,現在我們只要將他們提交到 github 上就可以。在此之前我們需要對剛纔添加的 pod 進行一下驗證:
1
|
pod lib lint
|
運行之後可能會得到下面的警告:
1 2 3 4 5
|
-> 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.
|
由於我們現在還沒有正式生成 release 版本, github 上並沒有任何 tag,所以我們剛纔填寫 .podspec 文件填寫 git 地址的時候沒有填寫指定 tag (上面文件的註釋中有提到),解決方法我們可以先執行忽略警告的命令:
1
|
pod lib lint --allow-warnings
|
如果成功會出現如下輸出:
1 2 3 4
|
-> O2View (0.0.1) - WARN | source: Git sources should specify a tag. O2View passed validation.
|
當調試完成了之後,我們需要在 github 上把我們的代碼生成相應穩定的 release 版本,到時候我們再回來添加指定 tag 發佈就 Ok 了。
驗證成功之後,我們只要把代碼提交到 github 倉庫,就可以了,參考命令:
1 2 3
|
git add -A && git commit -m "add pod files" git push origin master
|
這裏主要是 git 的範疇,不做過多敘述。如果前面操作都沒有問題的話,github 上應該能看到類似如下內容:
5.接下來做什麼?
經過前面的步驟,我們的 CocoaPods 依賴庫就已經準備好了,但是現在你還不能在你的工程中使用它。如果你想成爲一個真正可用的依賴庫,還需要最後一步操作:將剛纔生產的 podspec 文件提交到 官方的 CocoaPods Specs 中。
沒錯,我們平時用的能用 pod
search
搜到的依賴庫都會把它上傳到這個倉庫中, 也就是說只有將我們的 podspec 文件上傳到這裏,才能成爲一個真正的依賴庫,別人才能用!
按照 github 的規則,要想向別人的庫中添加文件,就要先 fork 別人的倉庫,做相應的修改,再 pullrequest 給倉庫的原作者,等到作者審覈通過,進行 meger 之後就可以了!
流程大概就是這個樣子,具體可以參考:CocoaPods Guides,我們就先不展開詳細的敘述了(後面會添加關於這部分的文章)。
除了官方的 specs 之外,我們還可以把 podspec 文件提交到私有的倉庫中,詳見我們博客的另一篇文章:創建私有的 CocoaPods repo spec 。