CocoaPods和Carthage淺析(新)

一、CocoaPods

為什么需要CocoaPods

在進(jìn)行iOS開發(fā)的時候,總免不了使用第三方的開源庫,比如SBJson、AFNetworking、Reachability等等。使用這些庫的時候通常需要:
下載開源庫的源代碼并引入工程
向工程中添加開源庫使用到的framework
解決開源庫和開源庫以及開源庫和工程之間的依賴關(guān)系、檢查重復(fù)添加的framework等問題
如果開源庫有更新的時候,還需要將工程中使用的開源庫刪除,重新執(zhí)行前面的三個步驟,頓時頭都大了。。。
自從有了CocoaPods以后,這些繁雜的工作就不再需要我們親力親為了,只需要我們做好少量的配置工作,CocoaPods會為我們做好一切!

什么是CocoaPods

CocoaPods是一個用來幫助我們管理第三方依賴庫的工具。它可以解決庫與庫之間的依賴關(guān)系,下載庫的源代碼,同時通過創(chuàng)建一個Xcode的workspace來將這些第三方庫和我們的工程連接起來,供我們開發(fā)使用。
使用CocoaPods的目的是讓我們能自動化的、集中的、直觀的管理第三方開源庫。

安裝Ruby環(huán)境

Ruby是一門開發(fā)語言,gem為Ruby第三方庫管理工具,CocoaPods是用Ruby寫的一個第三方工具。

  • 1.安裝Ruby環(huán)境需要安裝Xcode及Command Line Tools。

  • 2.安裝Command Line Tools:xcode-select --install

  • 3.安裝RVM,Ruby的多版本管理工具。

    $ curl -L https://get.rvm.io | bash -s stable
    $ source ~/.rvm/scripts/rvm
    $ rvm install 2.3.0
    $ rvm use 2.3.0
    $ /bin/bash --login
    
  • 4.修改 gem 鏡像

    $ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
    $ gem sources -l
    https://gems.ruby-china.org
    # 確保只有 gems.ruby-china.org
    

如果出現(xiàn)多個需要將其余的源刪除。

注:
1.淘寶的 ruby 源已經(jīng)不維護(hù)了,所以這里直接換成了 Ruby China,詳情請見:

  https://gems.ruby-china.org/

2.gem是管理Ruby庫和程序的標(biāo)準(zhǔn)包,如果它的版本過低也可能導(dǎo)致安裝失敗,解決方案自然是升級gem,執(zhí)行下述命令即可:

$ sudo gem update

安裝 CocoaPods

$ gem install cocoapods

執(zhí)行完成后,需要初始化CocoaPods的環(huán)境

$ pod setup

注:初始化過程可能會非常漫長,需要耐心等待即可。

使用CocoaPods

  1. 創(chuàng)建Xcode工程并切換到該工程路徑

  2. 使用命令pod init在當(dāng)前文件夾下生成一個Podfile文件

  3. 編輯該文件,在該文件中輸入如下信息:

      $ vim Podfile
    # Uncomment this line to define a global platform for your project
    platform :ios, '8.0'
    
    target 'CocoaPodsDemo' do
      # Uncomment this line if you're using Swift or would like to use dynamic frameworks
      # use_frameworks!
    
      # Pods for CocoaPodsDemo
      pod "AFNetworking", "~> 2.5.4"
      pod 'SDWebImage'
      pod 'KVNProgress'
    
      target 'CocoaPodsDemoTests' do
        inherit! :search_paths
        # Pods for testing
      end
    
      target 'CocoaPodsDemoUITests' do
        inherit! :search_paths
        # Pods for testing
      end
    
    end  
    

    該文件中的命令格式為:pod '第三庫名稱', '版本號'

    第三庫名稱,名稱一定要正確,不然有可能安裝失敗。

    版本號標(biāo)識區(qū)別

    >= 1.0 至少版本為1.0

    ~> 1.0 兼容1.0版本的最新版

    == 1.0或1.0 都表示指定版本

  4. 安裝工程依賴的第三方庫

    $ pod install
    Updating local specs repositories
    Analyzing dependencies
    Downloading dependencies
    Installing AFNetworking (2.5.4)
    Installing KVNProgress (2.2.2)
    Installing SDWebImage (3.7.3)
    Generating Pods project
    Integrating client project
    [!] Please close any current Xcode sessions and use `CocoaPodsDemo.xcworkspace` for this project from now on.
    Sending stats
    Pod installation complete! There are 3 dependencies from the Podfile and 3 total
    pods installed.
    

    若出現(xiàn)pods installed字樣表示安裝成功。

  5. 關(guān)閉Xcode工程,打開.xcworkspace文件。

  6. 在工程中導(dǎo)入第三庫文件,只需要#import <AFNetworking.h>類似的即可,開啟CocoaPods之旅。

更多用法參考本文提供的參考鏈接。

參考鏈接

  1. http://code4app.com/article/cocoapods-install-usage
  2. http://blog.csdn.net/wzzvictory/article/details/18737437
  3. http://blog.csdn.net/wzzvictory/article/details/19178709

二、 Carthage

Carthage簡介

Carthage的目標(biāo)是用最簡單的方式來管理Cocoa第三方框架。

Carthage編譯你的依賴,并提供框架的二進(jìn)制文件,但你仍然保留對項目的結(jié)構(gòu)和設(shè)置的完整控制。Carthage不會自動的修改你的項目文件或編譯設(shè)置。

Carthage只正式支持動態(tài)框架,動態(tài)框架能夠在任何版本的OS X上使用,但只能在iOS 8及以上版本使用。

安裝Homebrew

OS X 不可或缺的套件管理器,用于安裝命令工具。

終端中執(zhí)行如下命令:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝Carthage

終端執(zhí)行命令安裝Carthage

brew update
brew install carthage

使用Carthage

  1. 創(chuàng)建Xcode工程并切換到該工程路徑

  2. 創(chuàng)建一個Cartfile,將你想要使用的框架列在里面

    github "AFNetworking/AFNetworking" ~> 3.0
    github "rs/SDWebImage"
    
  3. 運行carthage update,將獲取依賴文件到一個Carthage.checkout文件夾,然后編譯每個依賴

  4. 在你的應(yīng)用程序target的General設(shè)置標(biāo)簽中的Embedded Binaries區(qū)域,將框架從Carthage.build文件夾拖拽進(jìn)去。

參考鏈接

  1. http://www.cocoachina.com/ios/20141204/10528.html
  2. 官方文檔

三、 Carthage與CocoaPods的不同

  1. Carthage只支持iOS 8及以上版本使用。

  2. 首先,CocoaPods默認(rèn)會自動創(chuàng)建并更新你的應(yīng)用程序和所有依賴的Xcode workspace。Carthage使用xcodebuild來編譯框架的二進(jìn)制文件,但如何集成它們將交由用戶自己判斷。CocoaPods的方法更易于使用,但Carthage更靈活并且是非侵入性的。

  3. CocoaPods的目標(biāo)在它的README文件描述如下:

    …為提高第三方開源庫的可見性和參與度,創(chuàng)建一個更中心化的生態(tài)系統(tǒng)。

    與之對照,Carthage創(chuàng)建的是去中心化的依賴管理器。它沒有總項目的列表,這能夠減少維護(hù)工作并且避免任何中心化帶來的問題(如中央服務(wù)器宕機)。不過,這樣也有一些缺點,就是項目的發(fā)現(xiàn)將更困難,用戶將依賴于Github的趨勢頁面或者類似的代碼庫來尋找項目。

  4. CocoaPods項目同時還必須包含一個podspec文件,里面是項目的一些元數(shù)據(jù),以及確定項目的編譯方式。Carthage使用xcodebuild來編譯依賴,而不是將他們集成進(jìn)一個workspace,因此無需類似的設(shè)定文件。不過依賴需要包含自己的Xcode工程文件來描述如何編譯。

  5. 最后,我們創(chuàng)建Carthage的原因是想要一種盡可能簡單的工具——一個只關(guān)心本職工作的依賴管理器,而不是取代部分Xcode的功能,或者需要讓框架作者做一些額外的工作。CocoaPods提供的一些特性很棒,但由于附加的復(fù)雜性,它們將不會被包含在Carthage當(dāng)中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容

  • CocoaPods CocoaPods簡介 CocoaPods是一個用來幫助我們管理第三方依賴庫的工具。它可以解決...
    fakepinge閱讀 1,002評論 0 2
  • CocoaPods簡介 CocoaPods是一個用來幫助我們管理第三方依賴庫的工具。它可以解決庫與庫之間的依賴關(guān)系...
    Barry_小閃閱讀 507評論 0 0
  • CocoaPods操作手冊 本文檔介紹了啥? 為什么要使用CocoaPods? 如何安裝CocoaPods? Po...
    風(fēng)小鉆閱讀 7,614評論 1 10
  • CocoaPods簡介 CocoaPods是一個負(fù)責(zé)管理iOS項目中第三方開源庫的工具。CocoaPods的項目源...
    簡思哲閱讀 1,330評論 0 3
  • 1.為何要使用管理工具管理項目的依賴關(guān)系 我們在開發(fā)過程中會用到(依賴于)其他第三方庫,這些庫或框架還有可能依賴于...
    coder小鵬閱讀 5,774評論 12 22