如何製作cocoaPods依賴庫

如何製作cocoaPods依賴庫

學會使用別人的 Pods 依賴庫以後, 你一定對創建自己的依賴庫很有興趣吧,現在我們就來嘗試一下,以一個簡單 O2View 爲例自己創建一個 Pods 依賴庫,這裏我會使用 Swift 2.0 來寫這個例子。

1.創建自己的 github 倉庫

CocoaPods 是託管在 github 上的,所有的 Pods 也都是託管在 github 上,因此我們首先需要創建一個屬於自己的 github 倉庫,如下圖所示:

github

上圖中標識出了6處地方

  1. Repository name: 倉庫名稱,這裏寫上我們的依賴庫名字 O2View ,必填。
  2. Description: 倉庫的描述信息,可選。
  3. Public or Private: 倉庫的公開性,開源的話選 Public 。 如果是公司內部使用的話這裏推薦大家使用私有的倉庫,但是 github 的私有倉庫是要收費的 $7/month (壕請無視 - -!)。大部分公司都是有自己的git服務器,不過一般只能在公司內網使用,或者可以選擇Gitlab,Coding, Bitbucket任意一種。
  4. Initialize: 是否默認創建一個 README 文檔,一個完整的庫都會有這個說明文檔,這裏最好勾選一下。不過如果忘記的話也不要緊,後面手動創建也是可以的。
  5. .gitignore: 忽略項文件,記錄一些想忽略的文件類型,凡是該文件包含的文件類型, git 都不會將其納入到版本管理中。看需要選擇就行。
  6. license: 正規的倉庫都有一個 license 文件, Pods 依賴庫對這個文件要求比較嚴格,需要有這個文件。這裏最好讓 github 自動創建一個,不過後續手動創建也行。我們這次先使用 MIT 類型的 license

上面各項根據大家需要填寫完畢後,點擊 Create repository 按鈕即可,創建成功後如下所示:

github

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

創建這個文件有兩種途徑:

  1. 複製已有的 podspec 文件然後修改對應的參數。
  2. 執行命令行創建。

我們使用命令行:

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 的使用,如下圖所示:

demo

4)README.md

使用 github 的人應該都熟悉這個文件,它使一個成功的 github 倉庫必不可少的一部分,使用 markdown 對倉庫進行詳細說明。

5)LICENSE 文件

CocoaPods 強制要求所有的 Pods 依賴庫都必須有 license 文件,否則驗證不會通過。 license 文件有很多中,詳情可以參考 tldrlegal。前面我們已經選擇創建了一個 MIT 類型的 license

以上的5個文件是創建 Pods 依賴庫所需的基礎文件,當然 Demo 工程沒有添加也沒關係。添加完這些內容後,我們本地倉庫目錄就變成這個樣子:

license

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 上應該能看到類似如下內容:

push

5.接下來做什麼?

經過前面的步驟,我們的 CocoaPods 依賴庫就已經準備好了,但是現在你還不能在你的工程中使用它。如果你想成爲一個真正可用的依賴庫,還需要最後一步操作:將剛纔生產的 podspec 文件提交到 官方的 CocoaPods Specs 中。

沒錯,我們平時用的能用 pod search 搜到的依賴庫都會把它上傳到這個倉庫中, 也就是說只有將我們的 podspec 文件上傳到這裏,才能成爲一個真正的依賴庫,別人才能用!

按照 github 的規則,要想向別人的庫中添加文件,就要先 fork 別人的倉庫,做相應的修改,再 pullrequest 給倉庫的原作者,等到作者審覈通過,進行 meger 之後就可以了!

流程大概就是這個樣子,具體可以參考:CocoaPods Guides,我們就先不展開詳細的敘述了(後面會添加關於這部分的文章)。

除了官方的 specs 之外,我們還可以把 podspec 文件提交到私有的倉庫中,詳見我們博客的另一篇文章:創建私有的 CocoaPods repo spec 

感謝您的閱讀,本文由 凹凸實驗室 版權所有。如若轉載,請註明出處:凹凸實驗室(https://aotu.io/notes/2016/01/27/how-to-make-cocoapods/
 上次更新:2017-07-31 17:45:55
發佈了41 篇原創文章 · 獲贊 118 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章