CocoaPods 講解

本文側(cè)重于 CocoaPods 的理論知識,幫助使用者更好的理解 CocoaPods 以便于更好的使用 CocoaPods省核。
整理內(nèi)容來源于 唐巧 -《iOS開發(fā)進階》,也推薦給大家。

1 CocoaPods 簡介

1.1 簡介:

CocoaPods 項目的源碼 (http://github.com/CocoaPods/CocoaPods) 在 Github 上管理。項目于2011年8月開始椒楣,經(jīng)過多年發(fā)展,已成為 iOS 開發(fā)事實上的依賴管理標準工具牡肉。CocoaPods 可以使我們節(jié)省設置和更新第三方開源庫的時間捧灰。

不使用 CocoaPods 之前,我們開發(fā)項目使用第三方時基本上是:

  • 1 把用到的第三方開源庫的源代碼文件復制到工程中统锤,或者設置 git 的 submodule毛俏。
  • 2 這些開源庫通常需要依賴系統(tǒng)的一些 framework炭庙,需要手工將這些 framework 一一添加到工程中。比如一個網(wǎng)絡庫就需要增加 CFNetwork煌寇、SystemConfiguration 等framework焕蹄。
  • 3 對于某些開源庫,還需要設置 -licucore 或者 -fno-objc-arc 等編譯參數(shù)阀溶。
  • 4 管理這些開源庫的更新腻脏。

這種體力活雖然簡單,但毫無技術含量并浪費時間银锻。

使用 CocoaPods 之后迹卢,只需將用到的開源庫放到一個名為 Podfile 的文件中,然后執(zhí)行 pod install徒仓。CocoaPods 就會自動將這些開源庫的源碼下載,并為工程設置好相應的系統(tǒng)以來和編譯參數(shù)誊垢。

1.2 原理:

CocoaPods 原理是將原有的依賴庫都放到另一個名為 Pods 的項目中掉弛,然后讓主項目依賴 Pods 項目,這樣喂走,源碼管理工作都從主項目移到了 Pods 項目中殃饿。
技術細節(jié):

  • 1 Pods項目最終會編譯成一個名為 libPods.a 的文件,主項目只需要以來這個 .a 文件即可芋肠。
  • 2 對于資源文件乎芳, CocoaPods 提供了一個名為 Pods-resources.sh 的bash 腳本,該腳本在每次項目編譯的時候都會執(zhí)行帖池,將第三方庫的各種資源文件復制到目標目錄中奈惑。
  • 3 CocoaPods 通過一個名為 Pods.xconfig 的文件在編譯時設置所有的依賴和參數(shù)。

2 CocoaPods 的安裝和使用

2.1 CocoaPods 的安裝

CocoaPods 的安裝方式很簡單睡汹, Mac 下都自帶 ruby肴甸,使用 ruby 的 gem 命令即可下載安裝:
> $ sudo gem install cocoapods
> $ pod setup

如果 gem 太老,可以嘗試用如下的命令升級 gem:
> sudo gem update —system

另外囚巴,ruby 的軟件源 rubygems.org 因為使用亞馬遜的云服務原在,所以被屏蔽了,需要更新一下 ruby 的源彤叉,下面代碼將官方的 ruby 源替換成國內(nèi)淘寶的源:
> gem sources —remove https://rubygems.org/
> gem sources -a http://ruby.taobao.org/
> gem sources -l`

還有一點需要注意庶柿,pod setup 在執(zhí)行時,會輸出 Setting up CocoaPods master repo, 但會等待比較久的時間秽浇。這一步其實是 CocoaPods 在將它的信息下載到 ~/.cocoapods 目錄下浮庐,如果等待太久,可以試著 cd 到那個目錄兼呵,用 du -sh * 來查看下載進度兔辅。也可以參考下面提到的“使用 CocoaPods 的鏡像索引” 內(nèi)容來提高下載速度腊敲。

2.2 使用 CocoaPods 的鏡像索引

所有項目的 Podspec 文件都托管在 https://github.com/CocoaPods/Specs.
第一次執(zhí)行 pod setup 時,CocoaPods 會將這些 Podspec 索引文件更新到本地的 ~/.cocoapods/ 目錄下维苔,索引大約有 80MB 左右碰辅。所以第一次更新會比較慢。
一個叫 akinliu (http://akinliu.github.io/2014/05/03/cocoapods-specs-/) 在 gitcafe (http://gitcafe.com/) 和 oschina (http://www.oschina.net/) 上建立了 CocoaPods 索引庫的鏡像介时,因為 gitcafe 和 oschina 都是國內(nèi)的服務器没宾,所以在執(zhí)行索引更新操作時,會快很多沸柔。如下可以將 CocoaPods 設置成使用 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 上的鏡像循衰。

2.3 使用 CocoaPods

使用時需要新建一個名為 Podfile 的文件,如以下格式褐澎,將依賴的庫名字依次列在文件中即可:
> platform :ios
> pod JSONKit,~>1.4
> …...

然后將編輯好的 Podfile 文件放到項目根目錄中会钝,執(zhí)行命令:
> cd “your project home"
> pod install

現(xiàn)在,所有第三方庫都已經(jīng)下載完成并設置好了編譯參數(shù)和依賴工三,你只需要記住以下兩點即可:

  • 1 使用 CocoaPods 生成的 *.xcworkspace 文件來打開工程迁酸,而不是以前的 *.xcodeproj 文件;
  • 2 每次更改了 Podfile 文件俭正,都需要重新執(zhí)行一次 pod update 命令奸鬓。

3 注意事項

3.1 關于 .gitignore

當你執(zhí)行了 pod install 之后, 除了 Podfile 外掸读, CocoaPods 還會生成一個名為 Podfile.lock 的文件串远,不應該把這個文件加入到 .gitignore 中。因為 Podfile.lock 會鎖定當前各依賴庫的版本儿惫,之后即使多次執(zhí)行 pod install 也不會更改版本澡罚,只有執(zhí)行 pod update 才會改變 Podfile.lock。在多人協(xié)作的時候姥闪,這樣可以防止第三方庫升級時做成大家各自的第三方庫版本不一致始苇。
CocoaPods 的一篇官方文檔 (http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control) 也在 What is a Podfile.lock 一節(jié)中介紹了 Podfile.lock 的作用,并指出:

This file should always be kept under version control.

3.2 為自己的項目創(chuàng)建 podspec 文件

我們可以為自己的開源項目創(chuàng)建 podspec 文件筐喳,首先通過如下命令初始化一個 podspec 文件:
> pod spec create your_pod_spec_name
該命令執(zhí)行之后催式,CocoaPods 會生成一個名為 your_pod_spec_name.podspec 的文件,然后我們修改其中的相關內(nèi)容即可避归。
具體步驟可參考這兩篇博客中的相關內(nèi)容:《如何編寫一個CocoaPods 的 spec 文件》(http://ishalou.com/blog/2012/10/16/how-to-create-a-cocoapods-spec-file/) 和《CocoaPods 入門》(http://studentdeng.github.io/blog/2013/09/13/cocoapods-tutorial/)荣月。

3.3 使用私有的 pods

我們可以直接指定某一個依賴的 podspec,這樣就可以使用企業(yè)內(nèi)部的私有庫梳毙。這樣有利于使企業(yè)內(nèi)部的公共項目支持 CocoaPods哺窄。如下:
> pod MyCommon, :podspec => https://yuantiku.com/common/myCommon.podspec

3.4 不更新 podspec

CocoaPods 在執(zhí)行 pod install 和 pod update 時,會默認先跟新一次 podspec 索引。使用 --no-repo-update 參數(shù)可以禁止其做索引更新操作萌业。如下:
> pod install --no-repo-update
> pod update --no-repo-update

3.5 生成第三方庫的幫助文檔

如果你想讓 CocoaPods 幫你生成第三方庫的幫助文檔坷襟,并集成到 Xcode 中, 那么用 brew 安裝 appledoc 即可:
> brew install appledoc

appledoc 最大的優(yōu)點是可以將幫助文檔集成到 Xcode 中生年,這樣在工作時婴程,按住 option 鍵單機方法名或類名,就可以顯示出相應的幫助文檔抱婉。

文章來源:摘自 唐巧 -《iOS開發(fā)進階》

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末档叔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蒸绩,更是在濱河造成了極大的恐慌衙四,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件患亿,死亡現(xiàn)場離奇詭異传蹈,居然都是意外死亡,警方通過查閱死者的電腦和手機步藕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門卡睦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漱抓,你說我怎么就攤上這事∷∑耄” “怎么了乞娄?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長显歧。 經(jīng)常有香客問我仪或,道長,這世上最難降的妖魔是什么士骤? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任范删,我火速辦了婚禮,結(jié)果婚禮上拷肌,老公的妹妹穿的比我還像新娘到旦。我一直安慰自己,他們只是感情好巨缘,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布添忘。 她就那樣靜靜地躺著,像睡著了一般若锁。 火紅的嫁衣襯著肌膚如雪搁骑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音仲器,去河邊找鬼煤率。 笑死,一個胖子當著我的面吹牛乏冀,可吹牛的內(nèi)容都是我干的蝶糯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼煤辨,長吁一口氣:“原來是場噩夢啊……” “哼裳涛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起众辨,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤端三,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鹃彻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郊闯,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年蛛株,在試婚紗的時候發(fā)現(xiàn)自己被綠了团赁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡谨履,死狀恐怖欢摄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笋粟,我是刑警寧澤怀挠,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站害捕,受9級特大地震影響绿淋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尝盼,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一吞滞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盾沫,春花似錦裁赠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旺订。三九已至岛宦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纬朝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工掀潮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菇夸,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓仪吧,卻偏偏與公主長得像庄新,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子薯鼠,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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