? ? ? ?當在開發(fā)iOS應用時,會經(jīng)常使用到很多的第三方開源類庫,一般的方法是直接從GitHub下載,然后拖到項目中使用,如果該開源類庫不依賴其他的類庫,就可以直接使用;如果該開源類庫還依賴一些其他的類庫,則需要我們手動導入并配置,顯得十分麻煩。此時第三方開源類庫管理工具CocoaPods就顯得十分重要了。接下來,就帶大家看看CocoaPods的安裝及使用:
一、下載和安裝CocoaPods(使用終端)
? ? ? 在安裝CocoaPods之前,首先要在本地安裝好Ruby環(huán)境,默認情況下,Mac自帶Ruby環(huán)境。因為Ruby的默認源rubygems.org使用的是亞馬遜的云服務,在國內(nèi)使用會被墻,所以需要更換一下Ruby的源,將其更換為國內(nèi)淘寶的源。
1.移除現(xiàn)有Ruby默認源
$gem sources --remove https://rubygems.org/
2.使用新的源
$gem sources -a https://gems.ruby-china.org
這部分內(nèi)容可以訪問RubyGems鏡像網(wǎng)站
3.驗證新源是否替換成功
$gem sources -l
新源替換成功如下圖:
4.安裝CocoaPods(分Mac系統(tǒng)進行)
(1)Mac系統(tǒng):OS X EL Capitan(2015年9月29號發(fā)布)及之后
<1>$sudo gem install -n?/usr/local/bin cocoapods
<2>$pod setup
(2)Mac系統(tǒng):OS X 10.10 Yosemite(2014年6月3號發(fā)布)及之前
<1>$sudo gem install cocoapods
<2>$pod setup
注意:輸入pod setup之后可能會一直卡頓在Setting up CocoaPods master
repo處,原因是CocoaPods版本升級到1.0.1版本后,其文件有800多兆大,需要慢慢下載。為了查看安裝進度,可以另開啟一個終端
(1)輸入cd ~/.cocoapods;
(2)進入.cocoapods之后,輸入du –sh查看已下載文件的大小。
5.更新gem
$sudo gem update --system
備注:在輸入上面的命令后需要輸入密碼(Mac電腦的開機密碼),直接輸入就好,上面的光標不會變化,輸入完成后直接確定即可。
更新完成后顯示如下圖所示:
二、CocoaPods的使用
1.測試CocoaPods的功能
? ? ? 當上面的步驟都做完,需要查看一下CocoaPods是否安裝成功(一般會安裝成功,不過也不排除一些意外),這時只需在終端輸入pod search +開源類庫的名字(pod search AFNetworking)回車即可。
如果安裝成功則如下圖所示,會顯示出相關的所有第三方開源類庫。
如果安裝失敗,點擊回車后會報一行紅色錯誤,一般遇到這種情況最笨的辦法就是重新安裝。
2.簡單實用CocoaPods(以一個例子來說明)
(1)在桌面上創(chuàng)建一個工程Demo(以Xcode7.3.1創(chuàng)建)。它的文件構成如下:
(2)在這個工程中創(chuàng)建一個Podfile文件(注意:名字必須是Podfile)
<1>使用終端創(chuàng)建Podfile文件
a.使用終端找到當前這個工程文件夾
$cd Desktop/Demo
b.創(chuàng)建空白的Podfile文件
$touch Podfile
<2>使用高級記事本(如:Sublime Text 2)創(chuàng)建Podfile文件
創(chuàng)建一個空白文件并保存,文件名為Podfile(后面不跟任何字符)
此時的文件結構如下:
(3)在Podfile文件中寫入要使用的第三方框架,這里以AFNetworking為例。打開終端,輸入pod search AFNetworking回車,如下圖所示,里面顯示了AFNetworking這個開源類庫的一些基本信息。
打開工程文件夾,選擇Podfile文件,右擊選擇文本編輯或者高級記事本打開。
<1>CocoaPods版本為1.0.1之前
只需要將Podfile文件中書寫的那句復制并粘貼到Podfile文件中即可
<2>CocoaPods版本為1.0.1及之后書寫如下圖所示:
解釋:
第一行:platform:ios, '8.0' ----->開源類庫支持的項目最低系統(tǒng)版本;
第二行和第四行:這是CocoaPods升級1.0.1版本后新增的,單引號中間填寫項目工程名,其書寫時固定格式,兩行中間是開源類庫的配置信息;
第三行:這行信息是告訴CocoaPods去下載AFNetworking類庫和它的3. 1.0版本,是一條配置信息。
(4)將開源類庫導入工程中
<1>使用終端找到當前這個工程文件夾
$cd Desktop/Demo
<2>安裝第三方開源類庫(跟新類庫可使用$pod update)
$pod install
安裝完成如下圖所示
注意:上面綠色的兩行內(nèi)容意思是說:請關閉任何當前Xcode會話和使用的演示,從現(xiàn)在起使用“Demo.xcworkspace”這個項目。
這時再次打開項目文件就會發(fā)現(xiàn)多了三個文件,如下圖所示:
此時按照提示雙擊Demo.xcworkspace這個文件(不再使用Demo.xcodeproj文件)打開項目,觀察右側導航面板有兩個工程,第一個Demo工程是我們正常的開發(fā)工程,第二個Pods工程是開源類庫依賴工程(使用CocoaPods導入的第三方開源類庫都在這里面),如下圖所示:
它的文件結構還是很明顯的,我們需要特別注意的是AFNetworking已經(jīng)在項目中了,并且測試是可以使用的(筆者使用Xcode7.3.1開發(fā)測試的,鑒于這個版本的提示比較坑,所以在使用時使用<>導入時有提示,但使用””導入時沒有提示,不過此時使用何種導入方式都可以,都可以使用AFNetworking類庫了,建議使用””導入)。
(5)總結CocoaPods的使用
<1>在終端搜索相應的開源類庫,命令為:$pod search +開源類庫;
<2>打開Podfile文件,修改其中的信息;
<3>安裝(更新)即可,命令為:$pod install(或$pod update)。
3.使用CocoaPods的注意點
(1)從現(xiàn)在起,我們只需要使用后綴名為.xcworkspace的文件來開發(fā);
(2)第三方類庫會被編譯成靜態(tài)庫供我們的工程使用,我們可以打開查看源碼,但是不能做任何修改;
(3)筆者在此演示的是一個第三方開源類庫的導入,其實多個第三方開源類庫的導入是同樣的操作,Podfile文件中的書寫如下圖所示:
(4)使用CocoaPods刪除不用的類庫
前面給大家演示了使用CocoaPods如何導入類庫,如果不想使用其中某個類庫怎么辦呢?其實很簡單,只要在Podfile文件中將不想用的類庫的配置信息刪除,并且在終端執(zhí)行一次pod update命令即可,重新打開就會發(fā)現(xiàn)對應的類庫已經(jīng)被移除了。
(5)第三方開源類庫版本號的各種寫法與含義
pod?'AFNetworking'?//不顯式指定依賴庫版本,表示每次都獲取最新版本
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的版本,相當于>=0.1.2并且<0.2.0
pod?'AFNetworking',?'~>0.1'?//使用大于等于0.1但小于1.0的版本
pod?'AFNetworking',?'~>0'?//高于0的版本,寫這個限制和什么都不寫是一個效果,都表示使用最新版本
(6)每次更改了Podfile文件后都需要執(zhí)行一次$pod
update命令(此時如果新添加了類庫,CocoaPods會下載新添加的類庫,并且更新有新版本的類庫)。
(7)CocoaPods的重新安裝或者版本更新
這個有點繁瑣,必須先卸載原先的CocoaPods,然后重新執(zhí)行安裝命令即可。其卸載命令為:
$?sudo gem uninstall CocoaPods
4.使用CocoaPods導入頭文件的常見問題及解決辦法
(1)CocoaPods找不到頭文件
問題描述:使用CocoaPods時,import找不到頭文件。
問題原因:這是因為還沒設置頭文件的目錄。
解決辦法:在項目的Target的里設置一下,添加CocoaPods頭文件目錄:目錄路徑直接寫:${SRCROOT},后邊選擇recursive(會在相應的目錄遞歸搜索文件) ,就可以了。
注意:是在User Header Search Paths里添加,不是上面的Header Search Paths.
如下圖:
(2)CocoaPods導入頭文件不提示
問題描述:使用CocoaPods時,import導入頭文件時,不提示文件名。
問題原因:這是因為還沒設置頭文件的目錄。
解決辦法:在項目的Target的里設置一下,添加CocoaPods頭文件目錄:目錄路徑直接寫:$(PODS_ROOT),后邊選擇recursive (會在相應的目錄遞歸搜索文件),就可以了。
注意:是在User Header Search Paths里添加,不是上面的Header Search Paths.
如下圖:
經(jīng)過上面兩步操作,接下來在類中導入相關類庫時,只需要#import “” 即可,不使用#import <> 也可以;當然有些第三方庫,必須使用#import <> 導入,例如:友盟分享的第三方庫 <UShareUI/UShareUI.h> 就必須使用#import <UShareUI/UShareUI.h> 導入,使用#import “” 會出現(xiàn)無限遞歸,一直找不到對應類庫的問題。
寫在最后:當今社會競爭中想要脫穎而出,人必須有一技之長,而且萬里挑一。 每個人都有不同的選擇,有時一個正確的選擇比奮斗本身更重要。 做你喜歡的事情,做你擅長的事情。 沒有七十二變,豈能大鬧天宮?