Cocoapods公有庫與私有庫

####爲何要使用Cocoapods來管理第三方庫呢?ios

  • 傳統使用第三方庫的劣勢git

    1. 使用一個第三方SDK,須要在工程裏面添加一堆配置,少添加一步配置就會報一大堆錯誤。這個時候爲了排查少了哪個步驟,只能從頭開始重作一遍,太浪費時間和精力。有些配置還很差配置,就更令人煩躁鬱悶了。
    2. 若是使用的第三方SDK有比較重要的更新,想使用最新的SDK只能到官方下載最新的SDK,從新導入到本身的項目工程中。
    3. 若是公司有多個項目,每個工程都這樣配置一遍,這是多麼痛苦的領悟呀。
  • 使用Cocoapods管理第三方庫的優點 咱們看下使用Cocoapods是如何管理一個第三方庫的?在Podfile裏面寫入這些內容: platform :ios, '8.0' use_frameworks!github

    target 'MyApp' do
      pod 'AFNetworking'
      pod 'ORStackView'
      pod 'SwiftyJSON'
    end‘

    上面作完以後,只須要在命令終端敲入如下命令便可完成安裝: $ pod install 是否是很簡單,只須要敲入pod install命令,就能完成各類繁瑣的配置,若是第三方庫有更新,只須要敲入如下命令便可完成更新: $ pod update --no-repo-update #--no-repo-update忽略本地repo更新,這個會在下面作解釋的。微信

  • Cocoapods私有庫帶來的好處 至此咱們已經大概瞭解了一下使用Cocoapods管理第三方庫的優點,可是咱們會發現這些都是公有的庫。若是公司內部實現一些私有的組件,不對外公開,而有想在不一樣項目中使用,改怎麼辦呢?使用Cocoapods製做私有庫就完美的解決了這個問題。下圖就是使用私有庫帶給咱們的好處:測試

Cocoapods-01.png

經過圖咱們也能夠看到,相同的代碼只須要維護一份便可,遵循了軟件的設計原則,don't repeat. ####Cocoapods原理 關於具體的原理,能夠參考Objc上的這篇文章:http://objccn.io/issue-6-4/ui

Cocoapods是如何實現查找第三方庫呢?我本身是這樣理解的,以下圖:.net

Cocoapods-02.png

從圖中,能夠看到經過.podspec能夠找到咱們想要的第三方庫,那麼.spec是什麼呢?以下:命令行

Pod::Spec.new do |s|
       s.name         = "CategoryComponents" #名稱

  s.version      = "0.0.2" #版本號   s.summary      = "bruce CategoryComponents." #描述設計

  s.homepage     = "https://coding.net/u/Bruce_ChenQi/p/DDNPrivatePods" #描述頁面   s.license      = "MIT" #版權聲明   s.author       = { "guoshimeihua" => "cqdeyouxiang@163.com" } #做者信息code

  s.platform     = :ios, "7.0" #使用平臺   s.source       = { :git => "https://git.coding.net/Bruce_ChenQi/DDNPrivatePods.git", :tag => "0.0.2" } #源碼地址

  s.source_files  = "Classes", "Classes/**/*.{h,m}" #源碼文件   s.frameworks = "CoreGraphics", "CoreFoundation", "Foundation", "UIKit" #依賴的framework   s.requires_arc = true #是否支持ARC end

至此,咱們明白了查找到第三方庫背後的原理。可是,具體如何進行搜索的呢?

先解釋一個概念,什麼是Spec Repo?它是全部的Pods的一個索引,也就是一個容器(集合),全部公開的Pods都在這個裏面。實際上就是一個Git倉庫remote端,當你使用了Cocoapods,這個倉庫會被clone到本地的~/.cocoapods/repos目錄下,進入到這個文件下能夠看到master文件夾,就是官方的Spec Repo了。當你pod search的時候就在master這個文件下面查找的。

####如何製做出屬於本身的私有庫?

1.先建立出一個私有倉庫,你們能夠在coding上建立一個私有庫(免費的)。

2.先cd到你要建立私有庫的目錄下面,而後把剛纔建立的私有庫從remote端clone到本地,clone完成後,以下圖:

Cocoapods-03.png

MyPods是我建立出來的文件夾,MyPrivatePods是從remote端clone到本地的。

3.在MyPrivatePods文件目錄下,建立一個Classes文件,用來存放源碼文件。建立完成以下:

CocoaPods-04.png

4.在MyPrivatePods目錄下建立.podspec文件,先在終端cd到該目錄下,而後輸入如下命令:

pod spec create BruceCategoryComponents

其中BruceCategoryComponents是我本身起的spec_name,能夠根據本身的須要改爲本身想要的名字。建立完成後以下圖:

Cocoapods-05.png

5.而後用Xcode打開.podspec文件,進行編輯,怎麼進行編輯能夠參考Cocoapods原理那部分,有提到的。編輯完成後,在終端能夠輸入

pod lib lint

編輯成功後,會出現如下提示的:

Cocoapods-06.png

不然的話,根據終端提示的錯誤信息,進行修改,直到驗證成功。

6.爲了測試的方便,咱們在MyPrivatePods目錄下建立一個demo工程,這樣方便之後對私有庫進行維護更新與測試,建立完成後以下圖:

Cocoapods-07.png

把Classes源文件拷貝到demo工程裏面,這樣方便其餘人也對該私有庫進行維護,添加新的功能。

7.往coding上提交剛纔的修改,並打上tag標籤。必定要記得打上tag標籤,且與剛纔編輯.podspec裏面寫的版本號一致。

Cocoapods-08.png

8.建立屬於本身的私有庫中心,爲何要建立本身的私有庫,能夠參照Cocoapods原理部分講的。敲入如下命令便可:

pod repo add BrucePods https://git.coding.net/Bruce_ChenQi/MyPrivatePods.git

建立成功後,能夠進入~/.cocoapods/repos目錄下能夠看到BrucePods文件。以下圖:

Cocoapods-09.png

9.下面就是把BruceCategoryComponents.podspec添加到私有庫中心,以下:

pod repo push BrucePods BruceCategoryComponents.podspec

添加成功後,以下圖:

Cocoapods-10.png

能夠進入到BrucePods目錄下查看一下如今的文件目錄結構:

Cocoapods-11.png

10.這個時候,就能夠經過pod search命令搜索到剛纔建立的私有庫了。以下所示:

Cocoapods-12.png

到這個步驟咱們的私有庫就製做完成了。來測試一下,咱們的私有庫是否可以正常使用。咱們建立一個新的工程,在Podfile文件中,寫入如下內容:

target 'BruceDemo' do

  platform :ios, '7.0'   pod 'BruceCategoryComponents' end

而後運行pod install --no-repo-update命令,可是結果卻以下:

Cocoapods-13.png

這是爲何呢?由於須要指明倉庫的來源才能夠的。添加如下兩句話就能夠了。
  公有倉庫
 source 'https://github.com/CocoaPods/Specs.git'  
 私有倉庫
 source 'https://git.coding.net/Bruce_ChenQi/MyPrivatePods.git'

11.私有庫的升級、分支 在對私有庫進行升級維護的時候,測試沒有問題後,只須要從新編輯.podspec文件,修改相應的版本號,再次執行下面命令便可:

pod repo push BrucePods BruceCategoryComponents.podspec

想建立分支的話,只需對subspec進行設置便可。

12.刪除私有庫 若是想要刪除私有庫,須要分兩步,第一步刪除coding上建立的私有庫。第二部,到~/.cocoapods/repos目錄下,經過如下命令行便可刪除:

rm -rf BrucePods

13.其餘項目組成員如何使用私有庫 首先在coding上面給其餘成員添加相應的權限。另外,在其電腦上執行如下命令便可: pod repo add BrucePods https://git.coding.net/Bruce_ChenQi/MyPrivatePods.git

####如何製做屬於本身的公有庫呢? 公有庫的製做和私有庫的製做不少都是相同的,惟一不一樣的就是把.podspec文件提交到公有倉庫裏面了。之前Cocoapods組件的提交方式是經過pull request進行的,如今改爲trunk自動化的提交方式。Trunk自動化提交有下面幾個步驟:

1.首次使用trunk的時候,須要註冊本身的電腦:

# pod trunk register [E-mail] [User Name]
$ pod trunk register cqdeyouxiang@163.com "bruce"

2.執行完成以後,會受到一封驗證郵件,按郵件提示完成驗證便可。 註冊流程完成以後,可使用 pod trunk me 驗證一下本身是否註冊成功,成功後,會看到一下輸出的:

Cocoapods-14.png

3.接下來重複製做私有庫1-7步驟,注意此時應該在github上建立一個公有的倉庫,其餘不變。 1-7步驟作完以後,執行提交命令,以下:

pod trunk push BRCategoryComponents.podspec

只須要這一條命令,組件就被推送到Cocoapods的主倉庫中了。

4.能夠經過pod search來搜索剛纔本身建立的公有組件,以下圖:

Cocoapods-15.png

總結

但願這篇文章能幫助你們能夠建立出本身的私有庫和公有庫,文章有什麼錯誤的地方,歡迎你們指正。 個人聯繫方式:cqdeyouxiang@163.com 微信號:BruceGuoShi

mine_wx.png

######參考文章 http://blog.wtlucky.com/blog/2015/02/26/create-private-podspec/ http://foggry.com/blog/2016/03/23/cocoapods-xiang-jie-zhi-geng-xin-pian/ https://blog.cnbluebox.com/blog/2014/03/31/cocoapodsdai-ma-guan-li/

相關文章
相關標籤/搜索