cocoapods系列教程---安裝與使用
cocoapods系列教程---Podfile文件
cocoapods系列教程---Podfile.lock文件 和 Spec Repo
cocoapods系列教程---spec文件
cocoapods系列教程---原理篇
cocoapods系列教程---讓自己的開源框架支持cocoapods
cocoapods系列教程---模塊化設(shè)計(jì)
cocoapods系列教程---創(chuàng)建私有pods
毫無疑問,官網(wǎng)是最好的教程:https://cocoapods.org/
CocoaPods項(xiàng)目的源碼在Github上管理。該項(xiàng)目開始于2011年8月12日,經(jīng)過多年發(fā)展,現(xiàn)在已經(jīng)成為iOS開發(fā)事實(shí)上的依賴管理標(biāo)準(zhǔn)工具孝情。開發(fā)iOS項(xiàng)目不可避免地要使用第三方開源庫,CocoaPods的出現(xiàn)使得我們可以節(jié)省設(shè)置和更新第三方開源庫的時(shí)間措拇。
安裝cocoapods
-
安裝最新版cocoapods
sudo gem install cocoapods pod setup
pod setup 實(shí)際上做的事是將https://github.com/CocoaPods/SpecsCocoapods克隆
~/.cocoapods/repos
目錄下芹扭。即使在安裝時(shí)不執(zhí)行此命令囱持,在初次執(zhí)行pod install
命令時(shí)稳懒,系統(tǒng)也會(huì)自動(dòng)執(zhí)行pod setup
.
很遺憾的是這個(gè)過程速度很慢,甚至被墻掉也很正常.國(guó)內(nèi)有人做了鏡像- https://gitcafe.com/akuandev/Specs.git
-
http://git.oschina.net/akuandev/Specs.git這個(gè)是oschina地址,需要注冊(cè)賬號(hào),并上傳ssh,麻煩,不建議用
用法如下:
pod repo remove master pod repo add master https://gitcafe.com/akuandev/Specs.git
理論上是這樣,可是最新版cocoapods貌似還是會(huì)自動(dòng)更新官方地址;無奈做了個(gè)投機(jī)取巧的辦法
pod repo remove master pod repo add master https://gitcafe.com/akuandev/Specs.git cd ~/.cocoapods/repos/master git remote rm origin git remote add origin https://github.com/CocoaPods/SpecsCocoapods
把遠(yuǎn)程倉(cāng)庫的地址
改成官方
的. -
安裝指定cocoapods版本
sudo gem install cocoapods -v 0.39.0
-
查看cocoapods的版本
pod --version
-
如果你的 gem 太老闲擦,可能也會(huì)有問題,可以嘗試用如下命令升級(jí) gem:
sudo gem update --system
-
升級(jí),更新至最新版cocoapods
sudo gem update cocoapods
或者
sudo gem install cocoapods
最近
2016.8
升級(jí)會(huì)提示:Error installing cocoapods: activesupport requires Ruby version >= 2.2.2.
意思是要求ruby版本要不小于2.2.2,升級(jí)下ruby版本即可,如何升級(jí)ruby點(diǎn)擊這里
-
一般安裝完成之后我們都修改鏡像源,修改成國(guó)內(nèi)的,訪問速度比較快
//先刪除 gem sources --remove https://rubygems.org/ //再添加淘寶,注意是https gem sources -a https://ruby.taobao.org/
列出源,驗(yàn)證你的Ruby鏡像是并且僅是taobao场梆,可以用以下命令查看:
gem sources -l
輸出如下
*** CURRENT SOURCES *** https://ruby.taobao.org/
卸載
-
如果本地有只有一個(gè)版本,會(huì)直接卸載.如果有多個(gè)版本的cocoapods,系統(tǒng)會(huì)讓你選擇,卸載哪一個(gè).
sudo gem uninstall cocoapods
-
卸載指定的版本
sudo gem uninstall cocoapods -v 0.38.0
降級(jí)
某些依賴庫可能比較老,不支持新的cocoapods,這時(shí)候需要降級(jí),首先卸載新版本,然后裝舊版本
sudo gem uninstall cocoapods -v 1.0.0
sudo gem install cocoapods -v 0.38.0
使用
-
判斷某個(gè)庫是否支持CocoaPods,或者查找某個(gè)庫
pod search AFNetworking
支持只輸入庫名字的一部分,比如我想查找AFNetworking.但是我只記得AFN這三個(gè)字母,我可以這樣搜索:
pod search AFN
-
創(chuàng)建podfile,先 cd 到項(xiàng)目所在目錄,創(chuàng)建名字為podfile文件,podfile這個(gè)文件
可以直接用Xcode打開,編輯在Podfile文件里輸入以下文字:platform :ios, '8.0' target 'Your_App_Name' do pod 'AFNetworking', '~> 3.0' end
- ios:表示ios平臺(tái),其它還有OS X等
- 8.0:表示支持iOS8.0以后版本
- 3.0:表示AFNetworking指定大于3.0版本,如果不指定,默認(rèn)最新版本
- 如果依賴庫是swift寫的,應(yīng)該加上一句 use_frameworks!
platform :ios, '8.0' use_frameworks! target 'Your_App_Name' do pod 'AFNetworking', '~> 3.0' //這個(gè)庫是用switf寫的 pod 'SwiftyJSON', '~> 2.3' end
-
安裝依賴
pod install
但是每次都很慢,因?yàn)槊看螆?zhí)行這個(gè)命令都會(huì)更新本地索引文件,用下面這句命令替代:
pod install --no-repo-update
-
單獨(dú)更新某一個(gè)依賴.例如只更新 AFNetworking
pod update AFNetworking
-
更新所有依賴,如果某個(gè)依賴已經(jīng)是最新,則不再更新
pod update
-
指定源地址,例如,指定為本地目錄,這種一般用于將依賴庫提前放到了本地,這樣速度會(huì)快過很多
pod 'AFNetworking', path: '/Users/apple/Desktop/CodeStore/AFNetworking'
執(zhí)行安裝完畢之后提示如下:
[!] Please close any current Xcode sessions and use Your_Project_Name.xcworkspace for this project from now on.
使用 CocoaPods 生成的
***.xcworkspace***
文件來打開工程,而不是以前的***.xcodeproj***
文件 使用CocoaPods來管理三方庫纯路,還是比較方便的或油,但是有個(gè)美中不足的小問題,在使用import引入文件時(shí)驰唬,不能自動(dòng)補(bǔ)齊顶岸,需要手工copy文件名.解決辦法:Target -> Build Settings 腔彰,User Header Search Paths條目中,添加"${SRCROOT}”或者“$(PODS_ROOT)”辖佣,并且選擇Recursive霹抛,遞歸搜索,然后就可以自動(dòng)補(bǔ)齊了卷谈。
pod install 和 pod update 的區(qū)別
- pod install 在添加了新的依賴庫,或者刪除了某個(gè)依賴庫.會(huì)把依賴庫的版本寫入Podfile.lock文件.它所解決的只是 有和無得問題,如果有就什么也不做,而不會(huì)檢查更新,即使依賴庫有了新的版本.如果沒有就添加,就會(huì)下載podfile中指定的版本,如果沒有指定版本,那么下載最新版本.
列出有最新版本的依賴庫:
```
pod outdated
```
pod update 只是更新依賴庫的版本,并且更新podfile.lock中記錄的版本.如果podfile文件中指定了某個(gè)版本,那么就會(huì)更新到該版本,而不是最新版本.例如:AFNetworking最新版本是3.3.0,而我指定的是2.0,那么只會(huì)更新到2.0,而不是3.3.0 如果Podfile中沒有指定版本或者指定是某個(gè)范圍,則更新該庫依賴庫并更新pod.lock中記錄的版本. 如果podfile中所有的依賴庫都沒有指定版本,那么會(huì)更新所有的依賴庫.
總結(jié)就是:首次添加用
pod install
,更新用pod update
,單獨(dú)更新某一個(gè)依賴pod update + 名字
,每個(gè)依賴庫可能對(duì)cocoapods的版本要求不一致,所以建議多用單獨(dú)更新.