本文側(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 instal
l 和 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ā)進階》