學會使用別人的Pods依賴庫以後,你一定對創建自己的依賴庫躍躍欲試,今天就來揭開Pods依賴庫創建過程的神祕面紗。整個創建過程都以我實現的一個名稱爲WZMarqueeView跑馬燈效果的view爲例,步驟如下:
一、創建自己的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到本地,操作方式有多種,推薦使用命令行:
操作完成後,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.license = 'MIT'
- s.author = { "王中周" => "[email protected]" }
- s.source = { :git => "https://github.com/wangzz/WZMarqueeView.git", :tag => s.version.to_s }
-
-
- s.platform = :ios, '4.3'
-
-
- s.requires_arc = true
-
- s.source_files = 'WZMarqueeView/*'
-
-
-
-
-
- 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驗證命令:
如果一切正常,這條命令執行完後會出現下面的輸出:
- -> WZMarqueeView (1.0.0)
-
- ZMarqueeView 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官方倉庫中
經過前邊的四步操作,你可能以爲已經結束了,不幸的是還早着呢。
打開這個鏈接你就會發現,原來我們能使用的,以及我們使用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、查看審覈進度
紅圈標識的就是我剛纔pull上來的請求,點進去以後就能看到對應的審覈進度。
六、查看我們自己創建的Pods依賴庫
如果收到了CocoaPods官方發過來的審覈通過郵件以後,你可能很着急的想在自己的電腦上執行pod
search命令,看看能不能搜索到自己創建的Pods依賴庫。不過你肯定會失望的,因爲還需要執行一條命令才能在我們的本地電腦上使用search命令搜索到我們的依賴庫:
在我的CocoaPods系列教程中的第一篇:
CocoaPods詳解之----進階篇中的最後部分介紹過這條命令,它會將所有的Pods依賴庫tree跟新到本地。執行完這條命令,再去執行:
- $ pod search WZMarqueeView
就能顯示出對應的介紹信息了!
說了那麼多,到這裏整個Pods依賴庫創建過程纔算真正結束!小夥伴們,你成功了嗎???遇到問題還請留言。
七、參考文檔