CocoaPods的使用(1)

一 ruby 安裝ios

  要安裝coocspod 首先須要安裝ruby,能夠先安裝xcode,在安裝macport 下載地址,最後執行命令 port install rubygit

2、安裝CocoaPods

一、安裝

CocoaPods是用Ruby實現的,要想使用它首先須要有Ruby的環境。幸運的是OS X系統默認的已經能夠運行Ruby了,所以咱們只須要執行如下命令:github

[objc] view plaincopyxcode




  1. $ sudo gem install cocoapods  ruby

CocoaPods是以Ruby gem包的形式被安裝的。在安裝執行的過程當中,可能會問咱們是否是更新rake,輸入y便可。這是由於rake gem包會在安裝的過程當中檢查更細,若是有可用的新版本就會出現剛纔的選項。markdown

在安裝進程結束的時候,執行命令:app

[objc] view plaincopy網站

  1. $ pod setup  ui

若是沒有報錯,就說明一切安裝就成功了!
url

二、安裝過程當中可能遇到的問題

①執行完install命令半天沒反應

這有多是由於Ruby的默認源使用的是cocoapods.org,國內訪問這個網址有時候會有問題,網上的一種解決方案是將遠替換成淘寶的,替換方式以下:

[objc] view plaincopy



  1. $ gem sources --remove https://rubygems.org/  

  2. //等有反應以後再敲入如下命令  

  3. $ gem sources -a http://ruby.taobao.org/  

要想驗證是否替換成功了,能夠執行:

[objc] view plaincopy



  1. $ gem sources -l  

正常的輸出是:

[objc] view plaincopy




  1. *** CURRENT SOURCES ***  

  2.   

  3. http://ruby.taobao.org/  

②gem版本過老

gem是管理Ruby庫和程序的標準包,若是它的版本太低也可能致使安裝失敗,解決方案天然是升級gem,執行下述命令便可:

[objc] view plaincopy

  1. $ sudo gem update --system  

③安裝完成後,執行pod setup命令時報錯:

[objc] view plaincopy

  1. /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs': Could not find 'cocoapods' (>= 0) among 6 total gem(s) (Gem::LoadError)  

  2.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec'  

  3.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem'  

  4.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>'  

這就是路徑設置的問題,能夠經過執行:

[objc] view plaincopy

  1. $ rvm use ruby-1.9.3-p448  

解決該問題。

三、升級CocoaPods

升級很簡單,再次執行安裝命令便可:

[objc] view plaincopy

  1. $ sudo gem install cocoapods  

須要注意的是,若是安裝的時候使用了sudo,升級的時候同樣須要使用該關鍵字,否則升級完了之後又會出現路徑不匹配問題。

3、使用CocoaPods

若是以前作的一切順利,接下來就能夠體驗體驗CocoaPods的神奇之處了,須要通過如下幾步:

爲了演示這個過程,我建立了一個名爲CocoaPodsTest的工程。

一、建立Podfile

CocoaPods的一切都是從一個名爲Podfile的文件開始的,咱們須要先建立這個文件。我的習慣使用命令行,我會這樣作:

[objc] view plaincopy

  1. $ cd /Users/wangzz/Desktop/CocoaPodsTest  

  2. $ touch Podfile  

首先進入到工程的根目錄下,建立空白的Podfile文件,建立完畢的目錄結構以下圖:


PS:Podfile文件也能夠不放在工程的根目錄下,只是會稍微麻煩點,在下一篇文章中會有介紹,敬請關注。)

二、編輯Podfile

根據須要,咱們能夠在Podfile文件中寫入須要用到的第三方庫,以SBJson、AFNetworking、Reachability三個庫爲例,個人Podfile內容以下:

[objc] view plaincopy

  1. platform :ios  

  2. pod 'Reachability',  '~> 3.0.0'  

  3. pod 'SBJson''~> 4.0.0'  

  4.   

  5. platform :ios, '7.0'  

  6. pod 'AFNetworking''~> 2.0'  

三、執行導入命令

準備工做都完成後,開始導入第三方庫:

[objc] view plaincopy

  1. $ cd /Users/wangzz/Desktop/CocoaPodsTest  

  2. $ pod install  

首先進入工程根目錄,而後執行pod install命令,CocoaPods就開始爲咱們作下載源碼、配置依賴關係、引入須要的framework等一些列工做,命令的執行結果打印出來以下:

[objc] view plaincopy

  1. Analyzing dependencies  

  2. Downloading dependencies  

  3. Installing AFNetworking (2.1.0)  

  4. Installing JSONKit (1.5pre)  

  5. Installing Reachability (3.0.0)  

  6. Generating Pods project  

  7. Integrating client project  

  8.   

  9. [!] From now on use `CocoaPodsTest.xcworkspace`.  

這就說明pod install命令執行成功了。再來看看工程根目錄發生的變化,以下圖:


 能夠看到,工程的根目錄下多了三個東西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。

(PS:篇幅有限,Podfile.lock文件會放到系列文章的下一篇介紹,敬請關注。)


再看看剛纔執行完pod install命令打印出來的內容的最後一行:

[objc] view plaincopy

  1. [!] From now on use `CocoaPodsTest.xcworkspace`.  

提示咱們從如今起,咱們須要使用CocoaPodsTest.xcworkspace文件來開發。

對於工程發生的變化,有幾點須要說明:

  • 第三方庫會被編譯成靜態庫供咱們正真的工程使用

CocoaPods會將全部的第三方庫以target的方式組成一個名爲Pods的工程,該工程就放在剛纔新生成的Pods目錄下。整個第三方庫工程會生成一個名稱爲libPods.a的靜態庫提供給咱們本身的CocoaPodsTest工程使用。

  • 咱們的工程和第三方庫所在的工程會由一個新生成的workspace管理

爲了方便咱們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是咱們剛纔看到的CocoaPodsTest.xcworkspace文件。

原來的工程設置已經被更改了,這時候咱們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進行項目管理。

打開CocoaPodsTest.xcworkspace,界面以下:


4、Podfile.lock文件

上文講過,在開始使用CocoaPods,執行完pod install以後,會生成一個Podfile.lock文件。這個文件看起來跟咱們關係不大,實際上絕對不該該忽略它。

該文件用於保存已經安裝的Pods依賴庫的版本,經過CocoaPods安裝了SBJson、AFNetworking、Reachability三個POds依賴庫之後對應的Podfile.lock文件內容爲:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. PODS:  

  2.   - AFNetworking (2.1.0):  

  3.     - AFNetworking/NSURLConnection  

  4.     - AFNetworking/NSURLSession  

  5.     - AFNetworking/Reachability  

  6.     - AFNetworking/Security  

  7.     - AFNetworking/Serialization  

  8.     - AFNetworking/UIKit  

  9.   - AFNetworking/NSURLConnection (2.1.0):  

  10.     - AFNetworking/Reachability  

  11.     - AFNetworking/Security  

  12.     - AFNetworking/Serialization  

  13.   - AFNetworking/NSURLSession (2.1.0):  

  14.     - AFNetworking/NSURLConnection  

  15.   - AFNetworking/Reachability (2.1.0)  

  16.   - AFNetworking/Security (2.1.0)  

  17.   - AFNetworking/Serialization (2.1.0)  

  18.   - AFNetworking/UIKit (2.1.0):  

  19.     - AFNetworking/NSURLConnection  

  20.   - Reachability (3.0.0)  

  21.   - SBJson (4.0.0)  

  22.   

  23. DEPENDENCIES:  

  24.   - AFNetworking (~> 2.0)  

  25.   - Reachability (~> 3.0.0)  

  26.   - SBJson (~> 4.0.0)  

  27.   

  28. SPEC CHECKSUMS:  

  29.   AFNetworking: c7d7901a83f631414c7eda1737261f696101a5cd  

  30.   Reachability500bd76bf6cd8ff2c6fb715fc5f44ef6e4c024f2  

  31.   SBJson: f3c686806e8e36ab89e020189ac582ba26ec4220  

  32.   

  33. COCOAPODS: 0.29.0  

Podfile.lock文件最大得用處在於多人開發。對於沒有在Podfile中指定Pods依賴庫版本的寫法,以下:

[objc] view plaincopy

  1. pod 'SBJson'  

該句話用於獲取當前SBJson這個Pods依賴庫的最新版本。
當團隊中的某我的執行完pod install命令後,生成的Podfile.lock文件就記錄下了當時最新Pods依賴庫的版本,這時團隊中的其它人check下來這份包含Podfile.lock文件的工程之後,再去執行pod install命令時,獲取下來的Pods依賴庫的版本就和最開始用戶獲取到的版本一致。若是沒有Podfile.lock文件,後續全部用戶執行pod install命令都會獲取最新版本的SBJson,這就有可能形成同一個團隊使用的依賴庫版本不一致,這對團隊協做來講絕對是個災難!

在這種狀況下,若是團隊想使用當前最新版本的SBJson依賴庫,有兩種方案:

  • 更改Podfile,使其指向最新版本的SBJson依賴庫;

  • 執行pod update命令;

鑑於Podfile.lock文件對團隊協做如此重要,咱們須要將它添加到版本管理中。

5、Podfile文件

對於普通用戶來講,使用CocoaPods咱們打交道最多的就是Podfile文件。CocoaPods是用ruby實現的,所以Podfile文件的語法就是ruby的語法。接着從如下幾個方面來介紹Podfile:

一、Podfile文件存放位置

這是在上篇文章中,遺留的一個問題。一般狀況下咱們都推薦Podfile文件都放在工程根目錄,以下圖所示:


 事實上Podfile文件能夠放在任意一個目錄下,須要作的是在Podfile中指定工程的路徑,和原來相比,Podfile文件就在最開始的位置增長了一行,具體內容以下:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. xcodeproj "/Users/wangzz/Desktop/CocoaPodsTest/CocoaPodsTest.xcodeproj"  

  2.   

  3. platform :ios    

  4. pod 'Reachability',  '~> 3.0.0'    

  5. pod 'SBJson''~> 4.0.0'    

  6.     

  7. platform :ios, '7.0'    

  8. pod 'AFNetworking''~> 2.0'   

指定路徑使用的是xcodeproj關鍵字。

此後,進入Podfile文件所在路徑,執行pod install命令就會和以前同樣下載這些Pods依賴庫,並且生成的相關文件都放在了Podfile所在目錄下面,以下圖:



 和以前同樣,咱們仍然須要使用這裏生成的workspace文件打開工程。

二、Podfile和target

Podfile本質上是用來描述Xcode工程中的targets用的。若是咱們不顯式指定Podfile對應的target,CocoaPods會建立一個名稱爲default的隱式target,會和咱們工程中的第一個target相對應。換句話說,若是在Podfile中沒有指定target,那麼只有工程裏的第一個target可以使用Podfile中描述的Pods依賴庫。

若是想在一個Podfile中同時描述project中的多個target,根據需求的不一樣,能夠有不一樣的實現方式。爲了說明問題,在原來的工程中再建立一個名稱爲Second的target,如今的project中包含的target有


 ①多個target中使用相同的Pods依賴庫

好比,名稱爲CocoaPodsTest的target和Second的target都須要使用Reachability、SBJson、AFNetworking三個Pods依賴庫,可使用link_with關鍵字來實現,將Podfile寫成以下方式:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. link_with 'CocoaPodsTest''Second'  

  2. platform :ios    

  3. pod 'Reachability',  '~> 3.0.0'    

  4. pod 'SBJson''~> 4.0.0'    

  5.     

  6. platform :ios, '7.0'    

  7. pod 'AFNetworking''~> 2.0'   

這種寫法就實現了CocoaPodsTest和Second兩個target共用相同的Pods依賴庫。

②不一樣的target使用徹底不一樣的Pods依賴庫

CocoaPodsTest這個target使用的是Reachability、SBJson、AFNetworking三個依賴庫,但Second這個target只須要使用OpenUDID這一個依賴庫,這時可使用target關鍵字,Podfile的描述方式以下:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. target :'CocoaPodsTest' do  

  2. platform :ios    

  3. pod 'Reachability',  '~> 3.0.0'    

  4. pod 'SBJson''~> 4.0.0'    

  5.     

  6. platform :ios, '7.0'    

  7. pod 'AFNetworking''~> 2.0'  

  8. end  

  9.   

  10. target :'Second' do  

  11. pod 'OpenUDID''~> 1.0.0'  

  12. end  

其中,do/end做爲開始和結束標識符。

三、使用Podfile管理Pods依賴庫版本

再引入依賴庫時,須要顯示或隱式註明引用的依賴庫版本,具體寫法和表示含義以下:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. pod 'AFNetworking'      //不顯式指定依賴庫版本,表示每次都獲取最新版本  

  2. pod 'AFNetworking''2.0'     //只使用2.0版本  

  3. pod 'AFNetworking''> 2.0'     //使用高於2.0的版本  

  4. pod 'AFNetworking''>= 2.0'     //使用大於或等於2.0的版本  

  5. pod 'AFNetworking''< 2.0'     //使用小於2.0的版本  

  6. pod 'AFNetworking''<= 2.0'     //使用小於或等於2.0的版本  

  7. pod 'AFNetworking''~> 0.1.2'     //使用大於等於0.1.2但小於0.2的版本  

  8. pod 'AFNetworking''~>0.1'     //使用大於等於0.1但小於1.0的版本  

  9. pod 'AFNetworking''~>0'     //高於0的版本,寫這個限制和什麼都不寫是一個效果,都表示使用最新版本  

6、CocoaPods經常使用命令

一、pod install

根據Podfile文件指定的內容,安裝依賴庫,若是有Podfile.lock文件並且對應的Podfile文件未被修改,則會根據Podfile.lock文件指定的版本安裝。

每次更新了Podfile文件時,都須要從新執行該命令,以便從新安裝Pods依賴庫。

二、pod update

若果Podfile中指定的依賴庫版本不是寫死的,當對應的依賴庫有了更新,不管有沒有Podfile.lock文件都會去獲取Podfile文件描述的容許獲取到的最新依賴庫版本。

三、pod search

命令格式爲:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ pod search OpenUDID  

後面的OpenUDID爲參數。

從命令的名稱不難看出,該命令是用來按名稱搜索可用的Pods依賴庫,執行結果以下:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. -> OpenUDID (1.0.0)  

  2.    Open source initiative for a universal and persistent UDID solution for iOS.  

  3.    pod 'OpenUDID''~> 1.0.0'  

  4.    - Homepage: http://OpenUDID.org  

  5.    - Source:   https://github.com/ylechelle/OpenUDID.git  

  6.    - Versions1.0.0 [master repo]  

這裏咱們搜到了一條可用數據,裏面描述了OpenUDID庫的簡要信息。其實咱們真正須要的是上述結果中的第三行:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. pod 'OpenUDID''~> 1.0.0'  

不難看出,這是咱們須要添加到Podfile文件中的。

有了這條命令,就能夠方便、迅速地找到須要的Pods依賴庫。

四、pod setup

命令格式爲:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ pod setup  

執行完了之後會打印:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. Setting up CocoaPods master repo  

  2. Updating 7cd4668..f3d3ced  

  3.   

  4. Fast-forward  

接下來還會打印不少更新信息。

這條命令用於跟新本地電腦上的保存的Pods依賴庫tree。因爲天天有不少人會建立或者更新Pods依賴庫,這條命令執行的時候會至關慢,還請耐心等待。咱們須要常常執行這條命令,不然有新的Pods依賴庫的時候執行pod search命令是搜不出來的。

7、建立本身的github倉庫

CocoaPods都託管在github上(官方連接爲:https://github.com/CocoaPods),全部的Pods依賴庫也都依賴github,所以第一步咱們須要建立一個屬於本身的github倉庫。倉庫建立界面以下圖:


 上圖中標了序號的共6處,對應的說明以下:

一、Repository name

倉庫名稱,這裏寫成WZMarqueeView,必填的;

二、Description

倉庫的描述信息,可選的;

三、倉庫的公開性

這裏只能選Public,一個是由於Private是要money的,再一個Private別人看不到還共享個毛;

四、是否建立一個默認的README文件

一個完整地倉庫,都須要README說明文檔,建議選上。固然不嫌麻煩的話你也能夠後面再手動建立一個;

五、是否添加.gitignore文件

.gitignore文件裏面記錄了若干中文件類型,凡是該文件包含的文件類型,git都不會將其歸入到版本管理中。是否選擇看我的須要;

六、license類型

正規的倉庫都應該有一個license文件,Pods依賴庫對這個文件的要求更嚴,是必需要有的。所以最好在這裏讓github建立一個,也能夠本身後續再建立。我使用的license類型是MIT。

上面的各項都填寫完畢後,點擊Create repository按鈕便可,建立成功地界面如圖


 到這,倉庫建立過程就結束了。

2、clone倉庫到本地

爲了便於向倉庫中刪減內容,須要先將倉庫clone到本地,操做方式有多種,推薦使用命令行:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ git clone https://github.com/wangzz/WZMarqueeView.git  

操做完成後,github上對應的文件都會拷貝到本地,目錄結構爲:


 github上倉庫中的.gitignore文件是以.開頭的隱藏文件,所以這裏只能看到兩個。

後續咱們的全部文件增、刪、改都在這個目錄下進行。

8、向本地git倉庫中添加建立Pods依賴庫所需文件

注意:如下描述的文件都要放在步驟二clone到本地的git倉庫的根目錄下面。

一、後綴爲.podspec文件

該文件爲Pods依賴庫的描述文件,每一個Pods依賴庫必須有且僅有那麼一個描述文件。文件名稱要和咱們想建立的依賴庫名稱保持一致,個人WZMarqueeView依賴庫對應的文件名爲WZMarqueeView.podspec。

1.1 podspec文件內容

WZMarqueeView.podspec的保存內容爲

[ruby] view plaincopy

  1. Pod::Spec.new do |s|  

  2.   s.name             = "WZMarqueeView"  

  3.   s.version          = "1.0.0"  

  4.   s.summary          = "A marquee view used on iOS."  

  5.   s.description      = <<-DESC  

  6.                        It is a marquee view used on iOS, which implement by Objective-C.  

  7.                        DESC  

  8.   s.homepage         = "https://github.com/wangzz/WZMarqueeView"  

  9.   # s.screenshots      = "www.example.com/screenshots_1", "www.example.com/screenshots_2"  

  10.   s.license          = 'MIT'  

  11.   s.author           = { "王中周" => "wzzvictory_tjsd@163.com" }  

  12.   s.source           = { :git => "https://github.com/wangzz/WZMarqueeView.git":tag => s.version.to_s }  

  13.   # s.social_media_url = 'https://twitter.com/NAME'  

  14.   

  15.   s.platform     = :ios'4.3'  

  16.   # s.ios.deployment_target = '5.0'  

  17.   # s.osx.deployment_target = '10.7'  

  18.   s.requires_arc = true  

  19.   

  20.   s.source_files = 'WZMarqueeView/*'  

  21.   # s.resources = 'Assets'  

  22.   

  23.   # s.ios.exclude_files = 'Classes/osx'  

  24.   # s.osx.exclude_files = 'Classes/ios'  

  25.   # s.public_header_files = 'Classes/**/*.h'  

  26.   s.frameworks = 'Foundation''CoreGraphics''UIKit'  

  27.   

  28. end  

該文件是ruby文件,裏面的條目都很容易知道含義。

其中須要說明的又幾個參數:

①s.license

Pods依賴庫使用的license類型,你們填上本身對應的選擇便可。

②s.source_files

表示源文件的路徑,注意這個路徑是相對podspec文件而言的。

③s.frameworks

須要用到的frameworks,不須要加.frameworks後綴。

 1.2 如何建立podspec文件

你們建立本身的podspec文件能夠有兩個途徑:

①copy個人podspec文件而後修改對應的參數,推薦使用這種方式。

②執行如下建立命令:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ pod spec create WZMarqueeView  

也會建立名爲WZMarqueeView.podspec的文件。可是打開建立完的文件你就會發現裏面的東西太多了,不少都是咱們不須要的。

二、LICENSE文件

CocoaPods強制要求全部的Pods依賴庫都必須有license文件,不然驗證不會經過。license的類型有不少種,詳情能夠參考網站tl;dr Legal。在建立github倉庫的時候,我已經選擇了MIT類型的license。

三、主類文件

建立Pods依賴庫就是爲了方便別人使用咱們的成果,好比我想共享給你們的WZMarqueeView類,是我想提供給廣大用戶使用的,這個類天然是必不可少的。我把這個類包含的兩個文件放到一個名稱爲WZMarqueeView的文件夾中,對應的目錄結構如圖:


裏面包含兩個文件:WZMarqueeView.h和WZMarqueeView.m


四、demo工程

爲了快速地教會別人使用咱們的Pods依賴庫,一般須要提供一個demo工程。我建立的demo工程放到了一個名爲WZMarqueeViewDemo的文件夾中,該目錄包含的文件以下圖所示:


五、README.md

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

以上所說的5個是建立Pods依賴庫所需最基礎的文件,其中一、二、3是必需的,四、5是可選但強烈推薦建立的。

添加完這些文件之後,個人github本地倉庫目錄就變成了下圖所示的樣子:


9、提交修改文件到github

通過步驟三,向本地的git倉庫中添加了很多文件,如今須要將它們提交到github倉庫中去。提交過程分如下幾步:

一、pod驗證

執行如下命令:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ set the new version to 1.0.0  

  2. $ set the new tag to 1.0.0  

這兩條命令是爲pod添加版本號並打上tag。而後執行pod驗證命令:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ pod lib lint  

若是一切正常,這條命令執行完後會出現下面的輸出:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. -> WZMarqueeView (1.0.0)  

  2.   

  3. ZMarqueeView passed validation.  

到此,pod驗證就結束了。

須要說明的是,在執行pod驗證命令的時候,打印出了任何warning或者error信息,驗證都會失敗!若是驗證出現異常,打印的信息會很詳細,你們能夠根據對應提示作出修改。

二、本地git倉庫修改內容上傳到github倉庫

依次執行如下命令:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ git add -A && git commit -m "Release 1.0.0."  

  2. $ git tag '1.0.0'  

  3. $ git push --tags  

  4. $ git push origin master  

上述命令均屬git的範疇,這裏很少述。若是一切正常,github上就應該能看到本身剛添加的內容了。以下圖所示:



10、上傳podspec文件到CocoaPods官方倉庫中

通過前邊的四步操做,你可能覺得已經結束了,不幸的是還早着呢。

要想一個Pods依賴庫真正可用,還須要作最後一步操做,將咱們剛纔生成的podspec文件上傳到CocoaPods官方的Specs倉庫中,連接爲:https://github.com/CocoaPods/Specs

打開這個連接你就會發現,原來咱們能使用的,以及咱們使用pod search命令能搜索到的全部Pods依賴庫都會把它們的podspec文件上傳到這個倉庫中,也就是說,只有將咱們的podspec文件上傳到這個倉庫中之後,才能成爲一個真正的Pods依賴庫,別人才能正常使用!

按照git的規則,要想向別人的倉庫中添加文件,必須先fork一份別人的倉庫,作完相應地修改後,在push給倉庫的原做者,等到做者審覈經過,而後合併到原來的倉庫中。

流程明白了之後,天然知道該怎麼幹了:

一、fork一份CocoaPods官方的Specs倉庫

進入到剛纔的官方倉庫連接中,點擊屏幕右上角的fork按鈕,以下圖:


而後你們會發現本身名下會多一份倉庫的分支。好比個人分支爲:



二、將fork的倉庫clone到本地

執行如下命令:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ git clone https://github.com/wangzz/Specs.git  

注意,你們須要將對應的倉庫地址換成本身的。

這個倉庫有點大,須要有耐心啊。


三、將本身的podspec文件添加到本地Specs倉庫中

Specs倉庫clone到本地後,會放到一個名爲Specs的文件夾中。podspec文件在Specs倉庫中的保存原則是:

Pods依賴庫同名文件夾--->版本號同名文件夾--->podspec文件

照此原則,我須要在Specs文件夾下創建一個名爲WZMarqueeView的文件夾,而後進入到WZMarqueeView文件夾下,創建一個名稱爲1.0.0的文件夾,最後進入到1.0.0這個文件夾下,而且將以前建立好的WZMarqueeView.podspec文件拷貝進來。

不難理解,若是之後有對WZMarqueeView類的升級,就在WZMarqueeView文件夾下創建對應版本名稱的文件夾,用於保存對應版本的podspec文件便可。

這些操做完成後,目錄層次結構以下所示:


四、上傳本地Specs倉庫中的修改到github倉庫

執行如下命令:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ git add -A && git commit -m "Add WZMarqueeView podspec file"  

  2. $ git push origin master  

成功之後就能在github上本身fork的Specs倉庫中看到剛上傳的文件了。


五、將在本身fork的Specs上作的修改pull給CocoaPods官方的Specs倉庫

進入到本身fork的Specs倉庫中,會看到屏幕左上角有一個綠色按鈕


該按鈕點進去之後會有以下圖所示的界面:


點擊圖中的綠色Create Pull Request按鈕,便可將咱們fork的Specs上作的修改pull給CocoaPods官方的Specs倉庫。


到這一步後,剩下的工做就只有等了,等待CocoaPods的維護人員審覈並將咱們pull上去的修改合併到官方的Specs倉庫中,這個過程一般會有一天左右的等待時間。若是有任何消息,好比審覈不經過,或者審覈經過了,CocoaPods官方都會發郵件通知的。

等到審覈經過的時候,咱們就能在官方的Specs倉庫中看到本身上傳的文件夾了。

六、查看審覈進度

固然咱們也能查看審覈進度,打開這個連接:https://github.com/CocoaPods/Specs/pulls,這裏能看到全部的Specs倉庫pull請求,以下圖:


紅圈標識的就是我剛纔pull上來的請求,點進去之後就能看到對應的審覈進度。


11、查看咱們本身建立的Pods依賴庫

若是收到了CocoaPods官方發過來的審覈經過郵件之後,你可能很着急的想在本身的電腦上執行pod search命令,看看能不能搜索到本身建立的Pods依賴庫。不過你確定會失望的,由於還須要執行一條命令才能在咱們的本地電腦上使用search命令搜索到咱們的依賴庫:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ pod setup  

在個人CocoaPods系列教程中的第一篇:CocoaPods詳解之----進階篇中的最後部分介紹過這條命令,它會將全部的Pods依賴庫tree跟新到本地。執行完這條命令,再去執行:

[ruby] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ pod search WZMarqueeView  

就能顯示出對應的介紹信息了!

相關文章
相關標籤/搜索