簡(jiǎn)介
Cocoapods是OS X和iOS下的一個(gè)第三方庫(kù)管理工具,并且支持Objective-C和swifit語(yǔ)言拢蛋。通過(guò)Cocoapods為項(xiàng)目添加稱為"Pods"的依賴庫(kù)(這些庫(kù)必須是Cocoapods所支持的)谆棱,并且輕松實(shí)現(xiàn)第三方庫(kù)的版本管理垃瞧。
引入Cocoapods的意義:Cocoapods在引入第三方庫(kù)時(shí)自動(dòng)為我們完成各種配置个从,包括配置編譯階段嗦锐、連接器選項(xiàng)奕污、甚至是ARC環(huán)境下的-fno-objc-arc配置等菊值;Cocoapods可以很方便的查找第三方庫(kù)腻窒,可以快速方便的尋找到優(yōu)秀的第三方庫(kù)以及它們的各種信息儿子。
原理:CocoaPods的原理是將所有的依賴庫(kù)都放到另一個(gè)名為Pods的項(xiàng)目中砸喻,然后讓主項(xiàng)目依賴Pods項(xiàng)目,這樣犯助,源碼管理工作都從主項(xiàng)目移到了Pods項(xiàng)目中剂买。Pods項(xiàng)目最終會(huì)編譯成一個(gè)名為libPods.a的文件,主項(xiàng)目只需要依賴這個(gè).a文件即可坐慰。
Cocoapods 官方網(wǎng)站:
https://cocoapods.org/
Cocoapods整個(gè)項(xiàng)目托管在github上结胀, 所有的Pods依賴庫(kù)也都依賴github
https://github.com/CocoaPods
一把跨、 配置Ruby環(huán)境着逐,安裝CocoaPods
- CocoaPods是基于ruby ecosystem的,需要ruby環(huán)境县钥,使用ruby的gem命令若贮。所以我們的系統(tǒng)要有ruby環(huán)境蠢沿。然而Mac系統(tǒng)默認(rèn)會(huì)安裝好ruby環(huán)境舷蟀∩ú剑可在終端ruby -v查看ruby版本
//查看ruby版本
ruby -v
//輸出信息
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
- 打開(kāi)終端河胎,依次執(zhí)行輸入的部分命令如下:
sudo gem update --system //升級(jí)Ruby環(huán)境*
gem sources -l // 查看源列表
gem sources --remove https://rubygems.org/ // 將不需要的源移除掉
gem sources -a https://gems.ruby-china.com // 添加ruby-china源源(當(dāng)然你有其他可用的源也可以)
sudo gem install -n /usr/local/bin cocoapods // 安裝cocoapods,需要輸入用戶密碼,輸入完成后擂橘,按回車鍵,需要等待許久后才能完成安裝昌罩,成功安裝后會(huì)有提示
pod --version //查看是否安裝成功茎用,如果成功會(huì)顯示pod的版本
pod setup //這條命令是將Github上的開(kāi)源庫(kù)https://github.com/CocoaPods/Specs.git托管的Podspec索引文件都下載到本地 轨功,花費(fèi)時(shí)間比較久,
pod search AFNetworking // 搜索AFNetworking庫(kù)
sudo gem uninstall cocoapods //卸載CocoaPods
終端命令截圖:
執(zhí)行pod setup ,這條命令是將Github上的開(kāi)源庫(kù)https://github.com/CocoaPods/Specs.git托管的Podspec索引文件都下載到本地的~/.cocoapods/repos/master/路徑下 ,花費(fèi)時(shí)間比較久昙楚,所以可以選擇直接從別的地方拷貝一份放到對(duì)應(yīng)的目錄下诈嘿,或者手動(dòng)去Github下載堪旧,下載完成后放到對(duì)應(yīng)的目錄下削葱。
- 通過(guò)如下終端命令下載到對(duì)應(yīng)的位置,可以看到下載進(jìn)度淳梦。
cd ~/.cocoapods/repos/master/
git clone https://github.com/CocoaPods/Specs.git
- 搜索第三方庫(kù)
pod search AFNetworking
搜索第三方庫(kù)如果出現(xiàn)了上述錯(cuò)誤析砸,可以執(zhí)行
rm ~/Library/Caches/CocoaPods/search_index.json來(lái)刪除本地舊的search_index.json文件,
然后再次輸入pod search AFNetworking進(jìn)行搜索爆袍,pod search 命令會(huì)先查看有無(wú)search_index.json文件首繁,如果不存在該文件,會(huì)自動(dòng)根據(jù)master文件夾生成一個(gè)新的search_index.json文件陨囊,
這時(shí)會(huì)提示Creating search index for spec repo 'master'..压语,然后就耐心等待吧.......成功了之后就如下圖:
二厕怜、安裝成功躁锡,使用CocoaPods
在使用CocoaPods之后杠输,我只需要將用到的第三方開(kāi)源庫(kù)放到一個(gè)名為Podfile的文件中搞糕,然后執(zhí)行pod install驹吮。CocoaPods就會(huì)自動(dòng)將這些第三方開(kāi)源庫(kù)的源碼下載下來(lái)射亏,并且為我的工程設(shè)置好相應(yīng)的系統(tǒng)依賴和編譯參數(shù)。
- 使用時(shí)需要新建一個(gè)名為 Podfile 的配置文件,放在主項(xiàng)目的根目錄下(與TestFramework.xcodeproj文件同一層級(jí)),以我桌面上的TestFramework工程為例:
用終端命令新建Podfile文件到主項(xiàng)目目錄(關(guān)于終端命令的使用可以看看這篇Mac 終端命令大全):
① 牍蜂、 cd到項(xiàng)目總目錄
②陕截、 創(chuàng)建Podfile配置文件
接著第①步驯妄,終端先執(zhí)行vim Podfile命令 ,接著在鍵盤端輸入 i犁享,進(jìn)入編輯模式姥卢,輸入如下配置信息(也可以先跳過(guò)輸入這一步,之后直接打開(kāi)Podfile文件編輯):
platform:ios,’8.0’ //平臺(tái)ios,Deployment Target 8.0
target “TestFramework" do //關(guān)聯(lián)TestFramework.xcodeproj
pod 'AFNetworking' //導(dǎo)入三方庫(kù)
pod 'MBProgressHUD'
pod 'MJExtension', '~> 3.0.13' //3.0.13是版本號(hào)
end
然后按Esc凄吏,并且輸入“ :”號(hào)進(jìn)入vim命令模式暮刃,然后輸入wq盅抚,回車后就會(huì)發(fā)現(xiàn)TestFramework項(xiàng)目目錄中多一個(gè)Podfile文件。
③ 瘸爽、 執(zhí)行 pod install 览露,生成管理三方庫(kù)的Pods工程
命令執(zhí)行完成后韵卤,需要導(dǎo)入的第三方庫(kù)都已經(jīng)下載完成并且設(shè)置好了編譯參數(shù)和依賴溯香,同時(shí)你需要注意:
- 使用 CocoaPods 生成的 TestFramework.xcworkspace 文件來(lái)打開(kāi)工程勉痴,而不是以前的 TestFramework.xcodeproj 文件蒸矛;
- 當(dāng)需要更改Podfile文件配置信息時(shí) ,比如刪除或者增加三方庫(kù) ,直接編輯Podfile文件, 每次更改了 Podfile 文件后吮铭,你需要重新執(zhí)行一次pod install命令,別忘了要cd 到Podfile文件所在目錄溺欧。
- 第三方庫(kù)們都有人在維護(hù)升級(jí)姐刁,當(dāng)我們需要更新下第三方庫(kù)的版本時(shí)谬俄,就需要終端執(zhí)行命令pod update。
-
刪除JSONKit庫(kù)時(shí)的終端命令與Podfile文件:
關(guān)于 Podfile.lock (引自:唐巧的博客)
當(dāng)你執(zhí)行
pod install
之后乎婿,除了 Podfile 外捍靠,CocoaPods 還會(huì)生成一個(gè)名為Podfile.lock
的文件性湿,Podfile.lock 應(yīng)該加入到版本控制里面躺孝,不應(yīng)該把這個(gè)文件加入到.gitignore
中基跑。因?yàn)?code>Podfile.lock會(huì)鎖定當(dāng)前各依賴庫(kù)的版本僵芹,之后如果多次執(zhí)行pod install
不會(huì)更改版本隐解,要pod update
才會(huì)改Podfile.lock
了王浴。這樣多人協(xié)作的時(shí)候嗡载,可以防止第三方庫(kù)升級(jí)時(shí)造成大家各自的第三方庫(kù)版本不一致惩琉。
CocoaPods 的這篇 官方文檔 也在What is a Podfile.lock
一節(jié)中介紹了Podfile.lock
的作用闷供,并且指出:
This file should always be kept under version control.
三烟央、使用CocoaPods管理的三方庫(kù)
如下錯(cuò)誤 解決辦法:https://blog.csdn.net/dzhongjie/article/details/81152983