0、CocoaPods是什么?
CocoaPods是開(kāi)發(fā)OS X和iOS應(yīng)用程序的一個(gè)第三方庫(kù)的依賴(lài)管理工具。利用CocoaPods,可以定義自己的依賴(lài)關(guān)系(稱(chēng)作pods),并且隨著時(shí)間的變化,以及在整個(gè)開(kāi)發(fā)環(huán)境中對(duì)第三方庫(kù)的版本管理非常方便。
CocoaPods背后的理念主要體現(xiàn)在兩個(gè)方面。
首先,在工程中引入第三方代碼會(huì)涉及到許多內(nèi)容。針對(duì)Objective-C初級(jí)開(kāi)發(fā)者來(lái)說(shuō),工程文件的配置會(huì)讓人很沮喪。在配置buildphases和linker flags過(guò)程中,會(huì)引起許多人為因素的錯(cuò)誤。CocoaPods簡(jiǎn)化了這一切,它能夠自動(dòng)配置編譯選項(xiàng)。
其次,通過(guò)CocoaPods,可以很方便的查找到新的第三方庫(kù)。當(dāng)然,這并不是說(shuō)你可以簡(jiǎn)單的將別人提供的庫(kù)拿來(lái)拼湊成一個(gè)應(yīng)用程序。它的真正作用是讓你能夠找到真正好用的庫(kù),以此來(lái)縮短我們的開(kāi)發(fā)周期和提升軟件的質(zhì)量。
CocoaPods的原理: ?它是將所有的依賴(lài)庫(kù)都放到另一個(gè)名為Pods項(xiàng)目中,然后讓主項(xiàng)目依賴(lài)Pods項(xiàng)目,這樣,源碼管理工作都從主項(xiàng)目移到了Pods項(xiàng)目中:
1、Pods項(xiàng)目最終會(huì)編譯成一個(gè)名為libPods.a的文件,主項(xiàng)目只需要依賴(lài)這個(gè).a文件即可。
2、對(duì)于資源文件,CocoaPods提供了一個(gè)名為Pods-resources.sh的bash腳本,該腳本在每次項(xiàng)目編譯的時(shí)候都會(huì)執(zhí)行,將第三方庫(kù)的各種資源文件復(fù)制到目標(biāo)目錄中。
3、CocoaPods通過(guò)一個(gè)名為Pods.xcconfig的文件來(lái)在編譯時(shí)設(shè)置所有的依賴(lài)和參數(shù)。
1、Cocoapods的安裝
1.先升級(jí) ?Gem:
sudo gem update --system
2.切換 ? cocoapods的數(shù)據(jù)源 【先刪除,再添加,查看】
? ?gem sources --remove https://rubygems.org/
? gem sources -a https://ruby.taobao.org/
? gem sources -l
3.安裝 ?cocoapods sudo gem install cocoapods
4.將Podspec文件托管地址從github切換到國(guó)內(nèi)的oschina 【先刪除,再添加,再更新】(以下不同顏色是用來(lái)區(qū)分不同的命令)
pod repo remove master
pod repo add master http://git.oschina.net/akuandev/Specs.git
pod repo add master https://gitcafe.com/akuandev/Specs.git pod repo update
5.設(shè)置pod倉(cāng)庫(kù) ? ?pod setup
6.測(cè)試 【如果有版本號(hào),則說(shuō)明已經(jīng)安裝成功】 ? ?pod --version
7.利用 cocoapods來(lái)安裝第三方框架
? ? 7-1 進(jìn)入要安裝框架的項(xiàng)目的.xcodeproj同級(jí)文件夾
? ? 7-2 在該文件夾中新建一個(gè)文件podfile
? ? 7-3 在文件中告訴cocoapods需要安裝的框架信息 a.該框架支持的平臺(tái) b.適用的iOS版本 c.框架的名稱(chēng) d.框架的版本
8.安裝 ? ?pod install --no-repo-update ? ? ?pod update --no-repo-update
2、終端如何使用cocopods:
步驟:
0. cd 項(xiàng)目路徑 (切換到項(xiàng)目的.xcodeproj同級(jí)文件夾)
1. touch podfile/pod init生成podfile文件 ?(創(chuàng)建podfile,用來(lái)保存框架的名稱(chēng),會(huì)去加載指定框架)(補(bǔ)充區(qū)別:touch podfile生成空文件,pod init生成了模板,建議使用pod init)
2. pod search 框架名稱(chēng) (搜索框架)
3. open podfile ?(打開(kāi) podfile 文件/也可以找到文件直接雙擊打開(kāi))
4. 把框架名稱(chēng)以及版本號(hào)導(dǎo)入podfile文件 (記得保存Ctrl + S)
5.
? ?5.1 ?pod update ?--verbose?--no-repo-update /?pod update ?--no-repo-update(安裝)
? ? 5.2 ?pod install ?--verbose?--no-repo-update /?pod install ?--no-repo-update
注意:
1.利用CocoPods管理類(lèi)庫(kù)后,以后打開(kāi)項(xiàng)目就用xxxx.xcworkspace打開(kāi),而不是之前的.xcodeproj文件
2.每次更改了Podfile文件,你需要重新執(zhí)行一次pod update命令。
3.關(guān)于.gitignore 當(dāng)你執(zhí)行pod install之后,除了Podfile外,CocoaPods還會(huì)生成一個(gè)名為Podfile.lock的文件,你不應(yīng)該把這個(gè)文件加入到.gitignore中。因?yàn)镻odfile.lock會(huì)鎖定當(dāng)前各依賴(lài)庫(kù)的版本,之后如果多次執(zhí)行pod install不會(huì)更改版本,要pod update才會(huì)改Podfile.lock了。這樣多人協(xié)作的時(shí)候,可以防止第三方庫(kù)升級(jí)時(shí)造成大家各自的第三方庫(kù)版本不一致。
4. CocoaPods在執(zhí)行pod install和pod update時(shí),會(huì)默認(rèn)先更新一次CocoPods的spec倉(cāng)庫(kù)索引。使用--no-repo-update參數(shù)可以禁止其做索引更新操作
pod install --no-repo-update h
pod update --no-repo-update
3、終端命令使用cocoPods演示:

tip(提示): ? open podfile之后 寫(xiě)入podfile文件的內(nèi)容之后如下(記得保存Ctrl + S)

4、Xcode可以直接使用cocoPods:
1.借助別人寫(xiě)的第三方框架cocoapods-xcode-plugin-master,首先去github下載這個(gè)框架(網(wǎng)址在后面)

2.下載好之后解壓,用Xcode打開(kāi)CocoaPods.xcworkspace

3.運(yùn)行CocoaPods.xcworkspace ? 之后,關(guān)閉Xcode(Ctrl + Q)注意是退出Xcode,不只是關(guān)閉當(dāng)前CocoaPods.xcworkspace的項(xiàng)目,然后再重新打開(kāi)Xcode(有提示: load Bundle),安裝成功按照操作就會(huì)有如下界面:

四:參考文獻(xiàn)
1、用CocoaPods做iOS程序的依賴(lài)管理:(這個(gè)可能無(wú)法訪問(wèn)界面):www.devtang.com
2、CocoaPods最佳實(shí)踐: ?Sina Visitor System
3、極速化:CocoaPods:http://www.cocoachina.com/ios/20150123/11002.html
五、安裝cocoapods時(shí)出現(xiàn)錯(cuò)誤
ERROR: ?While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/pod
解決辦法:sudo gem install -n /usr/local/bin cocoapods
參考資料:
http://segmentfault.com/q/1010000002926243
治標(biāo)不治本,下一次還會(huì)再出現(xiàn),永久解決辦法:
下載命令行工具:
下載過(guò)后,運(yùn)行命令行:brew install ruby
http://stackoverflow.com/questions/33015875/operation-not-permitted-usr-bin-update-rubygems
附:CocoaPods.xcworkspace的github下載地址:GitHub - heyuan110/PodsRepertory: cocopods repertory
Ruby 升級(jí):
http://t.zoukankan.com/ivonne-p-5705264.html
Homebrew 安裝:
https://zhuanlan.zhihu.com/p/90508170