CocoaPods是iOS項目的依賴管理工具,該項目源碼在Github上管理雄人。開發(fā)iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現(xiàn)使得我們可以節(jié)省設(shè)置和第三方開源庫的時間念赶。在使用CocoaPods后础钠,我們只需要把用到的開源庫放到一個名為Podfile的文件中,然后執(zhí)行pod install晶乔。Cocoapods就會自動將這些第三方開源庫的源碼下載下來珍坊,并且為我們的工程設(shè)置好響應(yīng)的系統(tǒng)依賴和編譯參數(shù)牺勾。
一正罢、CocoaPods原理。
CocoaPods的工作主要是通過ProjectName.xcworkspace來組織的驻民,在打開ProjectName.xcworkspace文件后翻具,發(fā)現(xiàn)Xcode會多出一個Pods工程履怯。
1.庫文件引入及配置:
庫文件的引入主要由Pods工程中的Pods-ProjectName-frameworks.sh腳本負責(zé),在每次編譯的時候裆泳,該腳本會幫你把預(yù)引入的所有三方庫文件打包的成ProjectName.a靜態(tài)庫文件叹洲,放在我們原Xcode工程中Framework文件夾下,供工程使用工禾。
2.Resource文件:
Resource資源文件主要由Pods工程中的Pods-ProjectName-resources.sh腳本負責(zé)运提,在每次編譯的時候,該腳本會幫你將所有三方庫的Resource文件copy到目標(biāo)目錄中闻葵。
3.依賴參數(shù)設(shè)置:
在Pods工程中的的每個庫文件都有一個相應(yīng)的SDKName.xcconfig民泵,在編譯時,CocoaPods就是通過這些文件來設(shè)置所有的依賴參數(shù)的槽畔,編譯后栈妆,在主工程的Pods文件夾下會生成兩個配置文件,Pods-ProjectName.debug.xcconfig厢钧、Pods-ProjectName.release.xcconfig鳞尔。
二、安裝CocoaPods
1早直、打開終端寥假,移除現(xiàn)有 Ruby 默認源(因為ruby 的軟件源 https://rubygems.org 使用的是亞馬遜的云服務(wù),所以被墻了莽鸿,需要更新一下 ruby 的源昧旨,使用下面2行代碼將官方的 ruby 源替換成國內(nèi)淘寶的源)。
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
2祥得、驗證新源是否替換成功
$ gem sources -l
如果替換成功兔沃,則顯示為:
*** CURRENT SOURCES ***
https://ruby.taobao.org/
注:此處為更新
由于淘寶的ruby源已經(jīng)好久沒更新了,感覺已經(jīng)被放棄级及,故我們可以用
gem sources -a https://gems.ruby-china.org/
3乒疏、安裝 CocoaPods
$ sudo gem install cocoapods
$ pod setup
注意:蘋果系統(tǒng)升級 OS X EI Capitan 后安裝改為:
$ sudo gem install -n /usr/local/bin cocoapods
$ pod setup
安裝可能遇到一下問題,下面列出幾個我遇到過的:
(1).
Performing a deep fetch of the `master` specs repo to improve future performance
因為pod steup的時候創(chuàng)建master這個庫饮焦,沒成功怕吴,之后就算移除鏡像重新安裝的話 默認是從matser庫里獲取,導(dǎo)致安裝不成功县踢。
解決辦法是移除master庫转绷,重新創(chuàng)建。
pod repo upadte --verbose
rm -rf ~/.cocoapods/repos/master
重新setup(需要較長時間)
pod setup
(2)
[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
Cloning into 'master'...
fatal: unable to access 'https://github.com/CocoaPods/Specs.git/': SSLRead() return error -9806
這個可能跟網(wǎng)絡(luò)有關(guān)吧硼啤,可以重新setup
pod setup
也可以直接通過連接clone
1.通過finder的前往文件夾進行查看? ? ? ~/.cocoapods/repos
2.通過終端议经,進入到? ~/.cocoapods/repos
3.然后通過? git clone https://github.com/CocoaPods/Specs.git
(3)
Cloning into 'master'...
remote: Counting objects: 1167221, done.
remote: Compressing objects: 100% (222/222), done.
error: RPC failed; curl 56 SSLRead() return error -36| 384.00 KiB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
終端輸入
xcode-select -p
查看Xcode本地路徑 (替換下面的)
sudo xcode-select -switch ?/Applications/Xcode 7.3.1.app/Contents/Developer
然后setup。
(4).
$ pod setup
Setting up CocoaPods master repo
[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master
Cloning into ‘master’…
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
試過以上所有解決辦法,還是沒有安裝成功煞肾,重新安裝(終極方法)咧织。
首先,刪除.cocoapods目錄籍救,在終端輸入以下命令:
sudo rm -rf ~/.cocoapods/
然后习绢,重新下載安裝,在終端輸入以下命令:
pod setup
(5)出現(xiàn)ERROR:? While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: cocoapods requires cocoapods-core (= 1.2.1), cocoapods-downloader (< 2.0, >= 1.1.3), cocoapods-trunk (< 2.0, >= 1.2.0), molinillo (~> 0.5.7), xcodeproj (< 2.0, >= 1.4.4), colored2 (~> 3.1), ruby-macho (~> 1.1)
執(zhí)行
sudo gem update --system
在終端中輸入:
sudo nvram boot-args="rootless=0"; sudo reboot
然后又出現(xiàn) ? ERROR:? While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/xcodeproj
然后你的電腦會重啟
之后再輸入
sudo?gem?install?cocoapods?-V
sudo gem install -n /usr/local/bin cocoapods
三蝙昙、CocoaPods的使用闪萄。
(1)可以用CocoaPods的搜索功能驗證一下。在終端中輸入:
pod search AFNetworking
(2)具體使用步驟(此處項目名稱為“podTest“):
方法一:
<1> cd 項目文件的位置奇颠;
<2> 在項目文件的根目錄下桃煎,執(zhí)行如下命令:
pod init
此命令會自動在項目文件的根目錄下,自動創(chuàng)建一個Podfile文件大刊。
然后为迈,在其中添加代碼
pod ‘AFNetworking’, ‘~>3.1.0’
<3> 執(zhí)行如下命令
pod install
方法2:
<1>.終端中,cd到項目總目錄
<2>.終端輸入 vim Podfile ,鍵盤輸入 i缺菌,進入編輯模式葫辐,輸入
platform :ios, '8.0'
pod ‘AFNetworking’, ‘~>3.1.0’
然后按Esc,并且輸入“ :”號進入vim命令模式伴郁,然后在冒號后邊輸入wq耿战,回車后發(fā)現(xiàn)PodTest項目總目錄中多一個Podfile文件。
<3>.終端cd到項目總目錄焊傅,然后輸入 pod install.
注:這時候可能會報錯剂陡,如
[!] The dependency `AFNetworking (~> 3.1.0)` is not used in any concrete target.
[!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.
修改方法很簡單,格式改為官網(wǎng)推薦的格式狐胎,打開Podfile文件鸭栖,改為以下兩種格式都可以。
寫法1:
platform :ios, '8.0'
#use_frameworks!個別需要用到它
target 'Podtest' do
pod 'AFNetworking', '~> 3.1.0''
end
寫法2:
platform :ios, '8.0'
#use_frameworks!個別需要用到它
def pods
pod 'AFNetworking', '~> 3.1.0''
end
target 'Podtest' do
pods
end