CocoaPods詳解之----制作篇 作者:wangzz 原文位址:http://blog.csdn.net/wzzvictory/article/details/20067595 轉載請注明出處 如果覺得文章對你有所幫助,請通過留言或關注微信公衆帳号wangzzstrive來支援我,謝謝!
學會使用别人的Pods依賴庫以後,你一定對建立自己的依賴庫躍躍欲試,今天就來揭開Pods依賴庫建立過程的神秘面紗。整個建立過程都以我實作的一個名稱為WZMarqueeView跑馬燈效果的view為例,步驟如下:
一、建立自己的github倉庫
CocoaPods都托管在github上(官方連結為:https://github.com/CocoaPods),所有的Pods依賴庫也都依賴github,是以第一步我們需要建立一個屬于自己的github倉庫。倉庫建立界面如下圖:

上圖中标了序号的共6處,對應的說明如下: 1、Repository name 倉庫名稱,這裡寫成WZMarqueeView,必填的; 2、Description 倉庫的描述資訊,可選的; 3、倉庫的公開性 這裡隻能選Public,一個是因為Private是要money的,再一個Private别人看不到還共享個毛; 4、是否建立一個預設的README檔案 一個完整地倉庫,都需要README說明文檔,建議選上。當然不嫌麻煩的話你也可以後面再手動建立一個; 5、是否添加.gitignore檔案 .gitignore檔案裡面記錄了若幹中檔案類型,凡是該檔案包含的檔案類型,git都不會将其納入到版本管理中。是否選擇看個人需要; 6、license類型 正規的倉庫都應該有一個license檔案,Pods依賴庫對這個檔案的要求更嚴,是必須要有的。是以最好在這裡讓github建立一個,也可以自己後續再建立。我使用的license類型是MIT。
上面的各項都填寫完畢後,點選Create repository按鈕即可,建立成功地界面如圖:
到這,倉庫建立過程就結束了。
二、clone倉庫到本地
為了便于向倉庫中删減内容,需要先将倉庫clone到本地,操作方式有多種,推薦使用指令行:
$ git clone https://github.com/wangzz/WZMarqueeView.git
操作完成後,github上對應的檔案都會拷貝到本地,目錄結構為:
github上倉庫中的.gitignore檔案是以.開頭的隐藏檔案,是以這裡隻能看到兩個。 後續我們的所有檔案增、删、改都在這個目錄下進行。
三、向本地git倉庫中添加建立Pods依賴庫所需檔案
注意:以下描述的檔案都要放在步驟二clone到本地的git倉庫的根目錄下面。
1、字尾為.podspec檔案
該檔案為Pods依賴庫的描述檔案,每個Pods依賴庫必須有且僅有那麼一個描述檔案。檔案名稱要和我們想建立的依賴庫名稱保持一緻,我的 WZMarqueeView依賴庫對應的檔案名為WZMarqueeView.podspec。
1.1 podspec檔案内容
WZMarqueeView .podspec的儲存内容為:
Pod::Spec.new do |s|
s.name = "WZMarqueeView"
s.version = "1.0.0"
s.summary = "A marquee view used on iOS."
s.description = <<-DESC
It is a marquee view used on iOS, which implement by Objective-C.
DESC
s.homepage = "https://github.com/wangzz/WZMarqueeView"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license = 'MIT'
s.author = { "王中周" => "[email protected]" }
s.source = { :git => "https://github.com/wangzz/WZMarqueeView.git", :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/NAME'
s.platform = :ios, '4.3'
# s.ios.deployment_target = '5.0'
# s.osx.deployment_target = '10.7'
s.requires_arc = true
s.source_files = 'WZMarqueeView/*'
# s.resources = 'Assets'
# s.ios.exclude_files = 'Classes/osx'
# s.osx.exclude_files = 'Classes/ios'
# s.public_header_files = 'Classes/**/*.h'
s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit'
end
該檔案是ruby檔案,裡面的條目都很容易知道含義。 其中需要說明的又幾個參數: ①s.license Pods依賴庫使用的license類型,大家填上自己對應的選擇即可。 ②s.source_files 表示源檔案的路徑, 注意這個路徑是相對podspec檔案而言的。 ③s.frameworks 需要用到的frameworks,不需要加.frameworks字尾。
1.2 如何建立podspec檔案
大家建立自己的 podspec檔案可以有兩個途徑: ①copy我的podspec檔案然後修改對應的參數,推薦使用這種方式。 ②執行以下建立指令:
$ pod spec create WZMarqueeView
也會建立名為WZMarqueeView.podspec的檔案。但是打開建立完的檔案你就會發現裡面的東西太多了,很多都是我們不需要的。
2、LICENSE檔案
CocoaPods強制要求所有的Pods依賴庫都必須有license檔案,否則驗證不會通過。license的類型有很多種,詳情可以參考網站tl;dr Legal。在建立github倉庫的時候,我已經選擇了MIT類型的license。
3、主類檔案
建立Pods依賴庫就是為了友善别人使用我們的成果,比如我想共享給大家的WZMarqueeView類,是我想提供給廣大使用者使用的,這個類自然是必不可少的。我把這個類包含的兩個檔案放到一個名稱為WZMarqueeView的檔案夾中,對應的目錄結構如圖:
裡面包含兩個檔案:WZMarqueeView.h和WZMarqueeView.m
4、demo工程
為了快速地教會别人使用我們的Pods依賴庫,通常需要提供一個demo工程。我建立的demo工程放到了一個名為WZMarqueeViewDemo的檔案夾中,該目錄包含的檔案如下圖所示:
5、README.md
使用github的人應該都熟悉這個檔案,它是一個成功github倉庫必不可少的一部分,使用的是markdown标記語言,用于對倉庫的詳細說明。
以上所說的5個是建立Pods依賴庫所需最基礎的檔案, 其中1、2、3是必需的,4、5是可選但強烈推薦建立的。 添加完這些檔案以後,我的github本地倉庫目錄就變成了下圖所示的樣子:
四、送出修改檔案到github
經過步驟三,向本地的git倉庫中添加了不少檔案,現在需要将它們送出到github倉庫中去。送出過程分以下幾步:
1、pod驗證
執行以下指令:
$ set the new version to 1.0.0
$ set the new tag to 1.0.0
這兩條指令是為pod添加版本号并打上tag。然後執行pod驗證指令:
$ pod lib lint
如果一切正常,這條指令執行完後會出現下面的輸出:
-> WZMarqueeView (1.0.0)
WZMarqueeView passed validation.
到此,pod驗證就結束了。 需要說明的是,在執行pod驗證指令的時候,列印出了任何warning或者error資訊,驗證都會失敗!如果驗證出現異常,列印的資訊會很詳細,大家可以根據對應提示做出修改。
2、本地git倉庫修改内容上傳到github倉庫
依次執行以下指令:
$ git add -A && git commit -m "Release 1.0.0."
$ git tag '1.0.0'
$ git push --tags
$ git push origin master
上述指令均屬git的範疇,這裡不多述。如果一切正常,github上就應該能看到自己剛添加的内容了。如下圖所示:
五、上傳podspec檔案到CocoaPods官方倉庫中
經過前邊的四步操作,你可能以為已經結束了,不幸的是還早着呢。 要想一個Pods依賴庫真正可用,還需要做最後一步操作,将我們剛才生成的podspec檔案上傳到CocoaPods官方的Specs倉庫中,連結為:https://github.com/CocoaPods/Specs 打開這個連結你就會發現,原來我們能使用的,以及我們使用pod search指令能搜尋到的所有Pods依賴庫都會把它們的podspec檔案上傳到這個倉庫中,也就是說,隻有将我們的podspec檔案上傳到這個倉庫中以後,才能成為一個真正的Pods依賴庫,别人才能正常使用! 按照git的規則,要想向别人的倉庫中添加檔案,必須先fork一份别人的倉庫,做完相應地修改後,在push給倉庫的原作者,等到作者稽核通過,然後合并到原來的倉庫中。 流程明白了以後,自然知道該怎麼幹了:
1、fork一份CocoaPods官方的Specs倉庫
進入到剛才的官方倉庫連結中,點選螢幕右上角的fork按鈕,如下圖:
然後大家會發現自己名下會多一份倉庫的分支。比如我的分支為:
2、将fork的倉庫clone到本地
執行以下指令:
$ git clone https://github.com/wangzz/Specs.git
注意, 大家需要将對應的倉庫位址換成自己的。 這個倉庫有點大,需要有耐心啊。
3、将自己的podspec檔案添加到本地Specs倉庫中
Specs倉庫clone到本地後,會放到一個名為Specs的檔案夾中。podspec檔案在Specs倉庫中的儲存原則是: Pods依賴庫同名檔案夾--->版本号同名檔案夾--->podspec檔案 照此原則,我需要在Specs檔案夾下建立一個名為 WZMarqueeView的檔案夾,然後進入到WZMarqueeView檔案夾下,建立一個名稱為1.0.0的檔案夾,最後進入到1.0.0這個檔案夾下,并且将之前建立好的WZMarqueeView.podspec檔案拷貝進來。 不難了解,如果以後有對WZMarqueeView類的更新,就在WZMarqueeView檔案夾下建立對應版本名稱的檔案夾,用于儲存對應版本的podspec檔案即可。 這些操作完成後,目錄層次結構如下所示:
4、上傳本地Specs倉庫中的修改到github倉庫
執行以下指令:
$ git add -A && git commit -m "Add WZMarqueeView podspec file"
$ git push origin master
成功以後就能在github上自己fork的Specs倉庫中看到剛上傳的檔案了。
5、将在自己fork的Specs上做的修改pull給CocoaPods官方的Specs倉庫
進入到自己fork的Specs倉庫中,會看到螢幕左上角有一個綠色按鈕:
該按鈕點進去以後會有如下圖所示的界面:
點選圖中的綠色Create Pull Request按鈕,即可将我們fork的Specs上做的修改pull給CocoaPods官方的Specs倉庫。
到這一步後,剩下的工作就隻有等了,等待CocoaPods的維護人員稽核并将我們pull上去的修改合并到官方的Specs倉庫中,這個過程通常會有一天左右的等待時間。如果有任何消息,比如稽核不通過,或者稽核通過了,CocoaPods官方都會發郵件通知的。 等到稽核通過的時候,我們就能在官方的Specs倉庫中看到自己上傳的檔案夾了。
6、檢視稽核進度
當然我們也能檢視稽核進度,打開這個連結: https://github.com/CocoaPods/Specs/pulls,這裡能看到所有的Specs倉庫pull請求,如下圖:
紅圈辨別的就是我剛才pull上來的請求,點進去以後就能看到對應的稽核進度。
六、檢視我們自己建立的Pods依賴庫
如果收到了CocoaPods官方發過來的稽核通過郵件以後,你可能很着急的想在自己的電腦上執行pod search指令,看看能不能搜尋到自己建立的Pods依賴庫。不過你肯定會失望的,因為還需要執行一條指令才能在我們的本地電腦上使用search指令搜尋到我們的依賴庫:
$ pod setup
在我的CocoaPods系列教程中的第一篇: CocoaPods詳解之----進階篇中的最後部分介紹過這條指令,它會将所有的Pods依賴庫tree跟新到本地。執行完這條指令,再去執行:
$ pod search WZMarqueeView
就能顯示出對應的介紹資訊了!
說了那麼多,到這裡整個Pods依賴庫建立過程才算真正結束!小夥伴們,你成功了嗎???遇到問題還請留言。
七、參考文檔
1、http://guides.cocoapods.org