CocoaPods的安裝與使用(一)

簡介

CocoaPods is the dependency manager for Swift and Objective-C Cocoa projects. It has over ten thousand libraries and can help you scale your projects elegantly.

CocoaPods 是 Cocoa 項(xiàng)目的依賴管理工具。它支持 Swift 和 Objective-C 語言,同時(shí)支持超過10000個(gè)第三方開源庫。它可以幫助你管理項(xiàng)目,讓你的項(xiàng)目更加優(yōu)美。

每種語言發(fā)展到一個(gè)階段,就會(huì)出現(xiàn)相應(yīng)的依賴管理工具,例如 Java 語言的 Maven,nodejs 的 npm。隨著 iOS 開發(fā)者的增多,CocoaPods的出現(xiàn)是必然的。

安裝CocoaPods

CocoaPods is built with Ruby and is installable with the default Ruby available on OS X. We recommend you do this.

Using the default Ruby install will require you to use sudo when installing gems. Further instructions are in the guides.

CocoaPods 管理在 Ruby 中??梢允褂貌⑼扑]使用 OS X 自帶的 Ruby 安裝。當(dāng)你使用自帶的 Ruby 安裝 gems 時(shí)需要使用 sudo 命令。更詳細(xì)的說明可以再官方文檔中查看。

簡單來說,在 OS X 下安裝 CocoaPods 異常的簡單,只需要執(zhí)行如下的命令即可:

$ sudo gem install cocoapods
$ pod setup

如果你的 gem 版本過低(系統(tǒng)版本低于 OS X Lion),安裝可能會(huì)出現(xiàn)問題??梢允褂萌缦旅畈榭?gem 版本。

$ gem -v

如有必要,可以使用如下命令升級(jí)。

$ sudo gem update --system

ruby 的軟件源 https://rubygems.org 使用的是亞馬遜的云服務(wù),所以被墻了,還需要使用如下代碼將官方的 ruby 源替換成國內(nèi)淘寶的源:

$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/
$ gem sources -l

*使用CocoaPods的鏡像索引

本段摘自唐巧的技術(shù)博客

還有一點(diǎn)需要注意,pod setup 在執(zhí)行時(shí),會(huì)輸出 Setting up CocoaPods master repo,但是會(huì)等待比較久的時(shí)間。這步其實(shí)是 Cocoapods 在將它的信息下載到 ~/.cocoapods 目錄下,如果你等太久,可以試著 cd 到那個(gè)目錄,用 du -sh * 來查看下載進(jìn)度。你也可以使用 CocoaPods 的鏡像索引來提高下載速度。

所有的項(xiàng)目的 Podspec 文件都托管在 https://github.com/CocoaPods/Specs。第一次執(zhí)行pod setup時(shí),CocoaPods 會(huì)將這些podspec索引文件更新到本地的 ~/.cocoapods 目錄下,這個(gè)索引文件比較大,有 80M 左右。所以第一次更新時(shí)非常慢,筆者就更新了將近一個(gè)小時(shí)才完成。

一個(gè)叫 akinliu 的朋友在 gitcafe 和 oschina 上建立了 CocoaPods 索引庫的鏡像,因?yàn)?gitcafe 和 oschina 都是國內(nèi)的服務(wù)器,所以在執(zhí)行索引更新操作時(shí),會(huì)快很多。如下操作可以將 CocoaPods 設(shè)置成使用 gitcafe 鏡像。

$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update

將以上代碼中的 https://gitcafe.com/akuandev/Specs.git 替換成 http://git.oschina.net/akuandev/Specs.git 即可使用 oschina 上的鏡像。

使用CocoaPods管理項(xiàng)目

首先,搜索需要讓 CocoaPods 管理的庫,例如:

$ pod search AFNetWorking

搜索結(jié)果如下:

-> AFNetworking (2.6.0)
   A delightful iOS and OS X networking framework.
   pod 'AFNetworking', '~> 2.6.0'
   - Homepage: https://github.com/AFNetworking/AFNetworking
   - Source:   https://github.com/AFNetworking/AFNetworking.git
   - Versions: 2.6.0, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
   - Subspecs:
     - AFNetworking/Serialization (2.6.0)
     - AFNetworking/Security (2.6.0)
     - AFNetworking/Reachability (2.6.0)
     - AFNetworking/NSURLConnection (2.6.0)
     - AFNetworking/NSURLSession (2.6.0
     - AFNetworking/UIKit (2.6.0)

Search for pods (above). Then list the dependencies in a text file named Podfile in your Xcode project directory:

然后在你Xcode項(xiàng)目目錄里名為 Podfile 的文本文件中列出每個(gè)搜索結(jié)果中的如下語句:

“pod 'AFNetworking', '~> 2.6.0'”。

Tip: CocoaPods provides a pod init command to create a Podfile with smart defaults. You should use it.

提示:你可以使用CocoaPods提供 pod init 命令去創(chuàng)建默認(rèn)的 Podfile,效果如下:

# Uncomment this line to define a global platform for your project
# platform :ios, '6.0'

target 'App' do

end

Now you can install the dependencies in your project:

現(xiàn)在,你可以使用如下命令在你的安裝你的依賴項(xiàng)了。

$ pod install

安裝過程中,CocoPods 會(huì)使用遞歸來分析所有的需求,并且建立一個(gè)代碼相關(guān)性的圖,最后將 Podfile 序列化為 Podfile.lock。比如,如果兩個(gè)庫都需要使用 AFNetworking,CocoaPods會(huì)確定一個(gè)同時(shí)能被這兩庫使用的版本,然后將同一個(gè)安裝版本鏈接到兩個(gè)不同的庫中。

同時(shí),CocoaPods 會(huì)創(chuàng)建一個(gè)新的包含之前安裝好的靜態(tài)庫 Xcode 項(xiàng)目,然后將它們鏈接成一個(gè)新的 libPods.a target。你原有的項(xiàng)目將會(huì)依賴這個(gè)新的靜態(tài)庫。并且會(huì)同時(shí)創(chuàng)建 xcworkspace 文件。

反復(fù)使用 pod install 命令,只會(huì)讓 CocoaPods 重復(fù)以上步驟,重新安裝這些庫。所以,當(dāng)你需要升級(jí)它們時(shí),請使用以下命令:

$ pod update

Make sure to always open the Xcode workspace instead of the project file when building your project:

此后每次編譯項(xiàng)目的時(shí)候,確保都是通過 Xcode workspace 打開項(xiàng)目而不是通過 project file 打開。

$ open App.xcworkspace

Now you can import your dependencies e.g.:#import <Reachability/Reachability.h>

現(xiàn)在,你可以導(dǎo)入你的依賴項(xiàng)例如:#import <Reachability/Reachability.h>

博客:xuyafei.cn
簡書:jianshu.com/users/2555924d8c6e
微博:weibo.com/xuyafei86
Github:github.com/xiaofei86

參考資料

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

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

  • 一. CocoaPods的介紹 什么是CocoaPods?CocoaPods是一個(gè)負(fù)責(zé)管理iOS項(xiàng)目中第三方開源庫...
    輝712閱讀 3,969評(píng)論 0 7
  • 項(xiàng)目組件化、平臺(tái)化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 22,093評(píng)論 0 39
  • 前言 前幾天發(fā)布我的開源庫<最簡單方便的iOS輪播開源庫:JYCarousel>到CocoaPods的時(shí)候。對Co...
    Dely閱讀 17,371評(píng)論 12 82
  • 中午送飯給老媽,氣色不太好,說是不舒服。原來是早上又抽兩管血、早飯吃的涼菜,喝的奶不對口味,感覺胃里不舒服。問起昨...
    勁汶閱讀 104評(píng)論 0 0
  • 1. “真的是好喜歡這首歌,突然聽到,突然喜歡,遇到這么好聽的歌,卻無人分享。但是沒關(guān)系啊,我看起來還是很開心啊”...
    月下相邀小仙女閱讀 314評(píng)論 0 1