1. 程式人生 > >iOS 依賴管理工具 CocoaPods 和 Carthage 的使用及原理

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/) 

相關推薦

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

       隨著網際網路的高速發展,個大網際網路公司為更高效研發自己的產品,而不斷研發適合自己的平臺的開發語言。當這些新的語言被廣泛推廣、被更多的開發團隊所接納,被用於開發不同的場景,這個過程中會研發出很多很多方便開發的框架。發展到一定階段,都會出現相應的依賴管理工具。例如

xcode第三方庫自動下載管理工具cocoapodsCarthage

程式碼倉庫工具介紹 不管是android studio還是xcode,如果沒有遠端程式碼倉庫工具支援,那麼你的專案引用的第三方庫,必須手動下載放到程式碼資料夾一起存放,複雜的話甚至還要額外做一些配置。 用上程式碼倉庫工具,您只需寫上需要依賴庫的名稱就可以,剩下的事情就由工具來幫你去下載相關檔

ios依賴管理工具Carthage 簡介

Carthage 簡介Carthage 類似於 CocoaPods,為使用者管理第三方框架和依賴,但不會自動修改專案檔案和生成配置Carthage 是去中心化的依賴管理工具,安裝依賴時不需要去中心倉庫獲取 CocoaPods 所有依賴的索引,節省時間對專案無侵入性,Carth

iOS管理工具Cocoapods的安裝與使用

data == 鏡像 tracking libtool 們的 install 包管理 問題解決 在我們開發移動應用的時候,一般都會使用到第三方工具,而因為第三方類庫的種類繁多,我們在項目中進行管理也會相對麻煩,所以此時我們就須要一個包管理工具。在iOS開發中

Go 依賴管理工具 Dep 的安裝配置

文章目錄 1、背景介紹 2、環境、軟體準備 3、Dep 安裝 3.1、MacOS 系統 3.2、Linux 等其他系統 3.3、go get 安裝方式 4、Dep 配置檔案說明

ios開發學習】Cocoa 新的依賴管理工具Carthage

說到 iOS 的依賴管理工具,大家一定首先想到的是 CocoaPods ,不錯,CocoaPods 確實是一個很好依賴管理工具,已然成為了 Cocoa 依賴管理的標準,豐富的支援庫、文件等等,CocoaPods 相關的文章有很多,這裡就不一一贅述了。 今天要介紹的是一款新的依賴管理工具,名曰 “Cart

PHP的依賴管理工具Composer介紹使用

PHP的依賴管理工具Composer介紹官方文檔:http://docs.phpcomposer.com/00-intro.html#System-Requirements linx上安裝:下載 Composer 的可執行文件 局部安裝要真正獲取 Composer,我們需要做兩件事。首先安裝 Composer

iOS開發-類庫管理工具CocoaPods

CocoaPods是iOS最常用的類庫管理工具。 如何下載和安裝CocoaPods? 在安裝CocoaPods之前,首先要在本地安裝好Ruby環境。 在Terminator(終端)中輸入以下命令: s

IOS 開發學習十八 包管理工具 CocoaPods的使用

一、簡介 開發IOS應用時,經常會用到一些第三方開源類庫,如JSONKit、AFNetWorking、QRCode等。一個類庫可能還會引用其它類庫。手動去一個個載入就顯得比較麻煩。而CocoaPods就是用來解決類庫引用問題的,它類似於PHP上的Composer、JAVA上

pipenv虛擬環境依賴管理工具

Golan 語言 require 依賴包 virt ror ins env 實現 一、pipenv用來幹嘛 每門編程語言發展到現在,都需要一個工具,能夠管理代碼版本和控制生產環境和測試環境依賴一致的,這樣減少不可代碼上線之後不可控的問題出現。Php有Composer、No

有用PHP依賴管理工具Composer新手教程

pro 介紹 簡單 優先 .com auto aries via 日誌記錄 PHP依賴管理工具Composer新手教程 Composer 是 PHP 的一個依賴管理工具。它同意你申明項目所依賴的代碼庫,它會在你的項目中為你安裝他們。 依賴管理 Compos

Golang官方依賴管理工具:dep

go golag dep 在這裏聲明一下,百度或者google看到的godep不是我這篇博文說的dep,那它們是什麽關系呢?按照Peter Bourgon博文來說,它們的作者都有相同的人,但是一個是dep是官方版本,godep是第三方工具。我今天介紹的是dep,之前也有介紹過glide,有興趣的可

Navicat for MySQL數據庫管理工具安裝破解

安裝目錄 http 數據庫 官方下載 有一個 .com x64 load 安裝 Navicat for MySQL官方下載地址:https://www.navicat.com/en/download/navicat-for-mysql 1、下載後安裝 navicat110_

yarn依賴管理工具的使用

glob rem 依賴 info uninstall 依賴管理 style all face Yarn是Facebook發布的一款依賴管理工具,它比npm更快、更高效。 與NPM命令對照 npm install => yarn install npm insta

多表查詢 MySQL管理工具 、 使用者授權撤銷

  複製表源表的key鍵值不會被複制到新表(原表是teadb.user) 複製表: mysql> create table db4.t1 select * from teadb.user; 複製表結構: mysql> create table db4.t2 select * f

程式碼管理工具Git的安裝使用

一:Git是什麼?   Git是目前世界上最先進的分散式版本控制系統。 二:SVN與Git的最主要的區別?   SVN是集中式版本控制系統,版本庫是集中放在中央伺服器的,而幹活的時候,用的都是自己的電腦,所以首先要從中央伺服器哪裡得到最新的版本,然後幹活,幹完後,需要把自己做完的活推送到中央伺服器。集中

Linux防火牆管理工具iptables常用引數用法示例

Linux防火牆iptables策略與規則連 防火牆是由上而下的順序來讀取配置的策略規則,策略規則的設定有兩種:通(放行)、堵(阻止)。當預設策略設定為通時,就要設定拒絕規則,當預設策略為堵時,則要設定允許規則。 iptables服務把用於處理或過濾流量的策略條目稱為規則,多條規則組成一個規則鏈,規則連依

Pipenv:新一代Python專案環境與依賴管理工具

什麼是Pipenv Pipenv是Kenneth Reitz在2017年1月釋出的Python依賴管理工具,現在由PyPA維護。你可以把它看做是pip和virtualenv的組合體,而它基於的Pipfile則用來替代舊的依賴記錄方式(requirements.txt)。 在這篇文章裡,我將會

第四十一章:Maven自動化構建依賴管理工具

1Maven簡介 Maven是一款自動化“構建”和“依賴”管理的工具。 2提出問題 2.1jar包管理問題 jar包從哪來的? 官網下載 CSND…… 51CTO…… …… jar包之間存在依賴關係 A jar包中用到了B jar包中的類,就說A依賴B。jar包之間普遍存在的依

大資料領域兩大最主流叢集管理工具AmbariCloudera Manger

目前啊,都知道,大資料叢集管理方式分為手工方式(Apache hadoop)和工具方式(Ambari + hdp 和Cloudera Manger + CDH)。    手工部署呢,需配置太多引數,但是,好理解其原理,建議初學這樣做,能學到很多。該方式啊,均得由使用者執