iOS pods集成与使用介绍
CocoaPods簡(jiǎn)介
在進(jìn)行iOS開(kāi)發(fā)的時(shí)候,總免不了使用第三方的開(kāi)源庫(kù),比如SBJson、AFNetworking、Reachability等等。使用這些庫(kù)的時(shí)候通常需要:
下載開(kāi)源庫(kù)的源代碼并引入工程
向工程中添加開(kāi)源庫(kù)使用到的framework
解決開(kāi)源庫(kù)和開(kāi)源庫(kù)以及開(kāi)源庫(kù)和工程之間的依賴關(guān)系、檢查重復(fù)添加的framework等問(wèn)題
如果開(kāi)源庫(kù)有更新的時(shí)候,還需要將工程中使用的開(kāi)源庫(kù)刪除,重新執(zhí)行前面的三個(gè)步驟,頓時(shí)頭都大了。。。
自從有了CocoaPods以后,這些繁雜的工作就不再需要我們親力親為了,只需要我們做好少量的配置工作,CocoaPods會(huì)為我們做好一切!
CocoaPods是一個(gè)用來(lái)幫助我們管理第三方依賴庫(kù)的工具。它可以解決庫(kù)與庫(kù)之間的依賴關(guān)系,下載庫(kù)的源代碼,同時(shí)通過(guò)創(chuàng)建一個(gè)Xcode的workspace來(lái)將這些第三方庫(kù)和我們的工程連接起來(lái),供我們開(kāi)發(fā)使用。
使用CocoaPods的目的是讓我們能自動(dòng)化的、集中的、直觀的管理第三方開(kāi)源庫(kù)。
(Mac ox 10.11+) CocoaPods安裝,卸載,使用說(shuō)明
一、全新安裝前,先檢查是否有安裝殘留
由于Mac 10.11更改了安全機(jī)制,所以cocoapods得安裝和卸載命令也有所改變,
1、如果之前裝過(guò)cocopods,最好先卸載掉,卸載命令:
$ sudo gem uninstall cocoapods【Mac 10.10之前】
$ sudo gem uninstall -n /usr/local/bin cocoapods【Mac 10.11之后】
2、先查看本地安裝過(guò)的cocopods相關(guān)東西【本步驟沒(méi)有必要】,命令如下:
$ gem list --local | grep cocoapods
會(huì)顯示如下:
cocoapods-core (0.39.0)
cocoapods-downloader (0.9.3)
cocoapods-plugins (0.4.2)
cocoapods-search (0.1.0)
cocoapods-stats (0.6.2)
cocoapods-trunk (0.6.4)
cocoapods-try (0.5.1)
然后逐個(gè)刪除吧:
$ sudo gem uninstall cocoapods-core【Mac 10.10之前】
$ sudo gem uninstall -n /usr/local/bin cocoapods-core【Mac 10.11之后】
。。。
二。安裝
要使用CocoaPods 那就要下載安裝它,而下載安裝CocoaPods需要Ruby環(huán)境
1.準(zhǔn)備工作
Mac os本身自帶Ruby,但還是更新一下保險(xiǎn),因?yàn)槲业谝淮伟惭b在沒(méi)有更新Ruby的情況下就失敗了。
a) 查看下當(dāng)前ruby版本:打開(kāi)終端輸入 ruby -v(確實(shí)安裝了,不過(guò)用這個(gè)版本接下來(lái)工作失敗了,所以更新下ruby)(更新方法自己百度。。。)
chendeMacBook-Air:~chen$ruby-v
ruby2.3.0p0(2015-12-25revision53290)[x86_64-darwin15]
chendeMacBook-Air:~chen$
chendeMacBook-Air:~chen$ruby-v
ruby2.3.0p0(2015-12-25revision53290)[x86_64-darwin15]
chendeMacBook-Air:~chen$
b)cocoapods鏡像:https://gems.ruby-china.org/好像現(xiàn)在不支持淘寶了
終端輸入如下命令(把Ruby鏡像指向Ruby China,避免被墻,你懂得)
$gem sources --remove https://rubygems.org/
$gem sources --add https://gems.ruby-china.org/
$gem sources -l (用來(lái)檢查使用替換鏡像位置成功)
chendeMacBook-Air:~chen$gemsources-l
***CURRENTSOURCES***
https://gems.ruby-china.org/
chendeMacBook-Air:~chen$gemsources-l
***CURRENTSOURCES***
https:2.下載安裝cocoapods
(2)升級(jí)gem,在終端輸入命令
$ sudo gem update --system
接著會(huì)要求輸入電腦密碼,輸入密碼后回車,就開(kāi)始升級(jí)了。如果看到下面這句話,說(shuō)明升級(jí)成功了。
RubyGems system software updated
還有一點(diǎn)需要注意,pod setup在執(zhí)行時(shí),會(huì)輸出Setting up CocoaPods master repo,但是會(huì)等待比較久的時(shí)間。這步其實(shí)是 Cocoapods 在將它的信息下載到~/.cocoapods目錄下,如果你等太久,可以試著 cd 到那個(gè)目錄,用du -sh *來(lái)查看下載進(jìn)度。你也可以參考本文接下來(lái)的使用 cocoapods 的鏡像索引一節(jié)的內(nèi)容來(lái)提高下
載速度。
安裝過(guò)程遇到的問(wèn)題:
1、Ruby版本過(guò)低(更新就行了)
2、
$podsetup
SettingupCocoaPodsmasterrepo
[!]/usr/bin/gitclonehttps://github.com/CocoaPods/Specs.gitmaster
Cloninginto‘master’…
error:RPCfailed;curl56SSLRead()returnerror-36
fatal:Theremoteendhungupunexpectedly
fatal:earlyEOF
fatal:index-packfailed
$podsetup
SettingupCocoaPodsmasterrepo
[!]/usr/bin/gitclonehttps://github.com/CocoaPods/Specs.gitmaster
Cloninginto‘master’…
error:RPCfailed;curl56SSLRead()returnerror-36
fatal:Theremoteendhungupunexpectedly
fatal:earlyEOF
fatal:index-packfailed
3、
$podsetup
SettingupCocoaPodsmasterrepo
[!]/usr/bin/gitclonehttps://github.com/CocoaPods/Specs.gitmaster
Cloninginto‘master’…
error:RPCfailed;curl56SSLRead()returnerror-9806
fatal:Theremoteendhungupunexpectedly
fatal:earlyEOF
fatal:index-packfailed
$podsetup
SettingupCocoaPodsmasterrepo
[!]/usr/bin/gitclonehttps://github.com/CocoaPods/Specs.gitmaster
Cloninginto‘master’…
error:RPCfailed;curl56SSLRead()returnerror-9806
fatal:Theremoteendhungupunexpectedly
fatal:earlyEOF
fatal:index-packfailed
4、
$podsetup
SettingupCocoaPodsmasterrepo
[!]/usr/bin/gitclonehttps://github.com/CocoaPods/Specs.gitmaster
Cloninginto‘master’…
error:RPCfailed;curl18transferclosedwithoutstandingreaddataremaining
fatal:Theremoteendhungupunexpectedly
fatal:earlyEOF
fatal:index-packfailed
$podsetup
SettingupCocoaPodsmasterrepo
[!]/usr/bin/gitclonehttps://github.com/CocoaPods/Specs.gitmaster
Cloninginto‘master’…
error:RPCfailed;curl18transferclosedwithoutstandingreaddataremaining
fatal:Theremoteendhungupunexpectedly
fatal:earlyEOF
fatal:index-packfailed
解決方法:上面錯(cuò)誤主要是os10.11+和cocoapods1.0+版本升級(jí)的安全機(jī)制更改造成的。主要出現(xiàn)在pod setup過(guò)程中。且該過(guò)程等待時(shí)間非常長(zhǎng),所以,你可以在$sudo gem install -n /usr/local/bin cocoapods命令后直接執(zhí)行$Gitclone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master 該過(guò)程作用與 pod setup作用相同,作者親測(cè)。效果極佳?。。。?/p>
可能出的錯(cuò)
1.
解決辦法
sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer
后面的地址你可以打開(kāi)Xcode顯示包內(nèi)容,找到那個(gè)文件夾拖到終端里面比較不容易錯(cuò)。
2.
官網(wǎng)是這樣給推薦的:
在創(chuàng)建Podfile的時(shí)候,用這種格式使用,
3.
解決辦法:不要使用文本編輯去編輯Podfile,使用Xcode編輯,或者使用終端敲命令去編輯?;蛘咻斎敫袷藉e(cuò)誤,沒(méi)輸入運(yùn)行版本:$platform:ios, ‘9.0‘
三:使用CocoaPods
終端中 cd到項(xiàng)目路徑
建立Podfile(配置文件)
$vim Podfile
鍵盤輸入 i 進(jìn)入編輯模式,輸入
platform :ios, '7.0'
pod 'MBProgressHUD', '~> 0.8’(之前的,我的電腦上已經(jīng)無(wú)效了,報(bào)錯(cuò): [!] The dependency `MBProgressHUD (~> 0.8)` is not used in any concrete target.)
(現(xiàn)在使用:MyApp 替換成自己的項(xiàng)目名)
target 'MyApp' do
pod 'AFNetworking', '~> 2.6'
pod 'ORStackView', '~> 3.0'
end
然后按Esc,并且輸入“ :”號(hào)進(jìn)入vim命令模式,然后在冒號(hào)后邊輸入wq
再輸入 $pod install
為了確定AFNetworking是否支持CocoaPods,可以用CocoaPods的搜索功能驗(yàn)證一下。在終端中輸入:
$ pod search AFNetworking
2)出現(xiàn)如下警告
[!] Your Podfile has had smart quotessanitised. To avoid issues in the future, you should not use TextEdit forediting it. If you are not using TextEdit, you should turn off smart quotes inyour editor of choice.
解決辦法:不要使用文本編輯去編輯Podfile,使用Xcode編輯,或者使用終端敲命令去編輯。
(3) 執(zhí)行pod install 或pod update 命令后,updating local specsrepositories 卡住不動(dòng)
解決辦法:pod install 被墻了,換成新的命令pod install --verbose --no-repo-update
(4) 項(xiàng)目運(yùn)行時(shí)報(bào)錯(cuò):Thefile “Pods.xcconfig” couldn’t be opened because there is no such file.
解決辦法:pod update就可以了。
關(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ù)版本不一致。
看過(guò)其他教程的人一定會(huì)奇怪,很多教程中用的是pod update 命令,為什么你一直在提pod install,因?yàn)閜od update會(huì)更新的你Podfile.lock文件到最新版本,接下來(lái)的害處就如上段所說(shuō)。
所以千萬(wàn)記住,無(wú)論是自己的項(xiàng)目,還是跑別人的源碼,一定要用pod install,至于pod update,看你自己是不是要三方升級(jí)類庫(kù)(我還是建議最好在Podfile中指定版本,想要升級(jí),只需更改Podfile中的版本號(hào),再pod install)。
11、pod update
若果Podfile中指定的依賴庫(kù)版本不是寫死的,當(dāng)對(duì)應(yīng)的依賴庫(kù)有了更新,無(wú)論有沒(méi)有Podfile.lock文件都會(huì)去獲取Podfile文件描述的允許獲取到的最新依賴庫(kù)版本。
pod'AFNetworking'//不顯式指定依賴庫(kù)版本,表示每次都獲取最新版本(<spanstyle="color:rgb(50,62,50);font-family:Arial;font-size:14px;line-height:26px;">11、</span><spanstyle="color:rgb(50,62,50);font-family:Arial;font-size:14px;line-height:26px;">podupdate</span>)
pod'AFNetworking','2.0'//只使用2.0版本
pod'AFNetworking','>2.0'//使用高于2.0的版本
pod'AFNetworking','>=2.0'//使用大于或等于2.0的版本
pod'AFNetworking','<2.0'//使用小于2.0的版本
pod'AFNetworking','<=2.0'//使用小于或等于2.0的版本
pod'AFNetworking','~>0.1.2'//使用大于等于0.1.2但小于0.2的版本
pod'AFNetworking','~>0.1'//使用大于等于0.1但小于1.0的版本
pod'AFNetworking','~>0'//使用最新版本,與不顯示指定依賴庫(kù)版本相同
總結(jié)
以上是生活随笔為你收集整理的iOS pods集成与使用介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Compaction介绍
- 下一篇: Linux下安装StarDict(星际译