制作 CocoaPods 依賴庫

學會使用別人的 Pods 依賴庫以后蛉威, 你一定對創(chuàng)建自己的依賴庫很有興趣吧,現(xiàn)在我們就來嘗試一下走哺,以一個簡單 O2View 為例自己創(chuàng)建一個 Pods 依賴庫蚯嫌,這里我會使用 Swift 2.0 來寫這個例子。

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

CocoaPods 是托管在 github 上的割坠,所有的 Pods 也都是托管在 github 上齐帚,因此我們首先需要創(chuàng)建一個屬于自己的 github 倉庫,如下圖所示:

p1

上圖中標識出了6處地方

  1. Repository name: 倉庫名稱彼哼,這里寫上我們的依賴庫名字 O2View 对妄,必填。
  2. Description: 倉庫的描述信息敢朱,可選剪菱。
  3. Public or Private: 倉庫的公開性,開源的話選 Public 拴签。 如果是公司內(nèi)部使用的話這里推薦大家使用私有的倉庫,但是 github 的私有倉庫是要收費的 $7/month (壕請無視 - -P⒊!)。大部分公司都是有自己的git服務(wù)器蚓哩,不過一般只能在公司內(nèi)網(wǎng)使用构灸,或者可以選擇Gitlab,Coding, Bitbucket任意一種。
  4. Initialize: 是否默認創(chuàng)建一個 README 文檔岸梨,一個完整的庫都會有這個說明文檔喜颁,這里最好勾選一下稠氮。不過如果忘記的話也不要緊,后面手動創(chuàng)建也是可以的半开。
  5. .gitignore: 忽略項文件隔披,記錄一些想忽略的文件類型,凡是該文件包含的文件類型寂拆, git 都不會將其納入到版本管理中奢米。看需要選擇就行纠永。
  6. license: 正規(guī)的倉庫都有一個 license 文件鬓长, Pods 依賴庫對這個文件要求比較嚴格,需要有這個文件尝江。這里最好讓 github 自動創(chuàng)建一個痢士,不過后續(xù)手動創(chuàng)建也行。我們這次先使用 MIT 類型的 license茂装。

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

p2

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 的目錄中:

p3

順便看看 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)建這個文件有兩種途徑:

  1. 復(fù)制已有的 podspec 文件然后修改對應(yīng)的參數(shù)。
  2. 執(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 的使用,如下圖所示:

p4

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)容后园爷,我們本地倉庫目錄就變成這個樣子:

p5

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)容:

p6

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 商叹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市只泼,隨后出現(xiàn)的幾起案子剖笙,更是在濱河造成了極大的恐慌,老刑警劉巖请唱,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弥咪,死亡現(xiàn)場離奇詭異,居然都是意外死亡十绑,警方通過查閱死者的電腦和手機聚至,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來本橙,“玉大人扳躬,你說我怎么就攤上這事。” “怎么了贷币?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵击胜,是天一觀的道長。 經(jīng)常有香客問我役纹,道長偶摔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任促脉,我火速辦了婚禮辰斋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘲叔。我一直安慰自己亡呵,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布硫戈。 她就那樣靜靜地躺著锰什,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丁逝。 梳的紋絲不亂的頭發(fā)上汁胆,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音霜幼,去河邊找鬼嫩码。 笑死,一個胖子當著我的面吹牛罪既,可吹牛的內(nèi)容都是我干的铸题。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼琢感,長吁一口氣:“原來是場噩夢啊……” “哼丢间!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驹针,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤烘挫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后柬甥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饮六,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年苛蒲,在試婚紗的時候發(fā)現(xiàn)自己被綠了卤橄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡臂外,死狀恐怖虽风,靈堂內(nèi)的尸體忽然破棺而出棒口,到底是詐尸還是另有隱情,我是刑警寧澤辜膝,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布无牵,位于F島的核電站,受9級特大地震影響厂抖,放射性物質(zhì)發(fā)生泄漏茎毁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一忱辅、第九天 我趴在偏房一處隱蔽的房頂上張望七蜘。 院中可真熱鬧,春花似錦墙懂、人聲如沸橡卤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碧库。三九已至,卻和暖如春巧勤,著一層夾襖步出監(jiān)牢的瞬間嵌灰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工颅悉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沽瞭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓剩瓶,卻偏偏與公主長得像驹溃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子延曙,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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