iOS 依賴管理工具 CocoaPods 和 Carthage 的使用及原理

       隨着互聯網的高速發展,個大互聯網公司爲更高效研發自己的產品,而不斷研發適合自己的平臺的開發語言。當這些新的語言被廣泛推廣、被更多的開發團隊所接納,被用於開發不同的場景,這個過程中會研發出很多很多方便開發的框架。發展到一定階段,都會出現相應的依賴管理工具。例如 Java 語言的 Maven (Java EE) 和 Gradle (Android),Node.js 的 npm ,Python 語言的 Pip ,OC/Swift 語言的CocoaPods、Carthage等。

       這裏我主要想分享的是依賴管理工具 CocoaPods 和 Carthage 的使用、原理以及使用過程中的注意事項。


一、CocoaPods

1.CocoaPods 介紹

        CocoaPods 是用 Ruby 開發的 Xcode 項目管理依賴的工具。
        CocoaPods 的官方介紹:CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 43 thousand libraries and is used in over 3 million apps. CocoaPods can help you scale your projects elegantly.
        CocoaPods 管方網址:http://cocoapods.org/
        CocoaPods 開源倉庫地址:https://github.com/CocoaPods/CocoaPods

開發iOS項目肯定會用到第三方開源的框架,CocoaPod 可以節省設置、下載、刪除、更新第三方開源庫的時間,提高開發效率。


2.CocoaPods 安裝和使用

        a:CocoaPods 是在 Ruby 環境下開發的,幸好 Mac 系統本身是自帶 Ruby 的。可以通過 Ruby -v 命令查看當前系統 Ruby 版本。使用 Ruby 的gem命令即可下載安裝。
sudo gem install cocoapods
pod setup

注:(1).如果提示gem 版本太老,需要更新gem:
              sudo gem update —-system
      (2).如果安裝過程緩慢,可以將官方的 Ruby 源替換成國內淘寶的鏡像源。
              gem source —-remove https://rubygems.org/
              gem source -a http://ruby.taobao.org/
              gem sources -l
     (3).在執行 pod setup 命令時,會輸出 Setting up CocoaPods master repo,這個過程會等待比較長的時間。這個過程其實是同步遠程Cocoapods的信息,將信息下載到本地 ~/.cocoapods 目錄中。可以通過網絡查看器,查看當前的下載任務。cd /Users/kylin/.cocoapods/ 下載目錄時,會看到 repos 文件夾。repos 文件夾中包含 CocoaPods 的所有項目的鏡像索引,通過項目的鏡像索引去遠程倉庫下載相應的第三方庫。
            遠程 Podspec 文件地址:https://github.com/CocoaPods/Specs。感興趣的朋友可以查看。
            國內 Podspec 鏡像地址:https://gitcafe.com/akuandev/Specs.git
                       http://git.oschina.net/akuandev/Specs.git

        安裝完成後可以通過 pod --version 命令查看 CocoaPods 版本信息。顯示版本號說明安裝成功。

b:查找第三方庫
當想查看第三方庫的信息時,可以通過 pod search [] 命令進行搜索。這個搜索屬於模糊搜索,會列出搜索內容相關的所有庫。方便我們從中找到我們需要的庫信息。

        例如:$: pod search afn

        


c:使用 CocoaPods 管理第三方庫
首先在項目根目錄下創建 Podfile 文件,按照如圖格式編輯文件即可:



其次在放置 Podfile 文件的項目根目錄下執行 pod install 命令。
完成之後會在根目錄下出現 兩個文件(*.xcworkspace,Podfile.lock)和一個文件夾(Pods)

*.xcworkspace: 項目啓動文件。
Podfile.lock: 鎖定當前各個依賴庫的版本。(pod install 不會更改依賴庫的版本,也就是不會修改 Podfile.lock 文件。pod update 會修改)
Pods 文件夾: 包含下載的第三方依賴,並且編譯成 lib 庫。

3.創建私有的 Pods 倉庫
創建私有的 pods 倉庫:http://blog.csdn.net/gulanggege/article/details/79349862
我們可以使用自定義的 podspec 。按如下方式編輯 Podfile 文件:
pod ‘ProvityFramework’ ,:podspec => ‘https://[…]’ […]自定義的私有倉庫地址

4.CocoaPods 工作原理
CocoaPods 的原理是將所有的依賴庫都放到另一個名爲 Pods 的項目中,然後讓主項目依賴 Pods 項目,這樣源碼管理工作從主項目轉移到了 Pods 項目中。Pods 項目會編譯成一個 libPods.a 文件,主項目只需要添加這個 .a 文件。


二、Carthage
1. Carthage 介紹
Carthage 是用 Swift 開發的項目管理依賴的工具,Carthage 的目的是用最簡單的方式添加依賴庫到 Cocoa 項目中。Carthage 爲用戶管理第三方框架和依賴,但不會自動修改項目文件和生成配置。
Carthage 的官方介紹:Carthage is intended to be the simplest way to add frameworks to your Cocoa application.Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup. Carthage does not automatically modify your project files or your build settings.

Carthage 開源倉庫地址:https://github.com/Carthage/Carthage

2.Carthage 與 CocoaPods 的對比
  Carthage 的有點:
(1)Carthage 爲用戶管理第三方框架和依賴,但不會自動修改項目文件和生成配置。
(2)Carthage 是去中心化的依賴管理工具,安裝依賴時不需要去中心倉庫獲取 CocoaPods 所有依賴的索引,節省時間。
(3)對項目無侵入性,Carthage 設計上也比較簡單,利用的都是 Xcode 自身的功能,開發者在創建依賴時,相比 CocoaPods 也簡單許多
(4)Carthage 管理的依賴只需編譯一次,項目乾淨編譯時,不會再去重新編譯依賴。
(5)自動將第三方框架編程爲 Dynamic framework( 動態庫 )。
(6)Carthage 與 CocoaPods 無縫集成,一個項目能同時擁有 CocoaPods 和 Carthage。

Carthage 的缺點:
(1)僅支持 iOS8 +,不能用來針對 iOS 8 以前的系統版本進行開發
(2)支持的 Carthage 安裝的第三方框架和依賴不如 CocoaPods 豐富
(3)無法在 Xcode 裏定位到源碼
(4)安裝包的大小比用CocoaPods安裝的包大

2. Carthage 安裝
Carthage 的安裝方法有三種:
(1)下載安裝包安裝,
(2)使用Homebrew安裝:brew update ;brew install carthage。
(3)使用源碼安裝:clone 項目,進入項目根目錄,執行 make install 命令即可。

3. Carthage 使用
(1)創建Cartfile 文件。

(2)編輯Cartfile 文件。

                例如:github "Alamofire/Alamofire"  ~> 4.0

  (3) 執行更新命令 $ Carthage update —platform iOS
  (4) 更新成功後,項目中會出現一個文件(Cartfile.resolved) 和 一個文件夾(Carhtage/) 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章