iOS使用CocoaPods
CocoaPods是什麼?
當你開發iOS應用時,會經常使用到很多第三方開源類庫,比如JSONKit,AFNetWorking等等。可能某個類庫又用到其他類庫,所以要使用它,必須得另外下載其他類庫,而其他類庫又用到其他類庫,手動一個個去下載所需類庫十分麻煩。另外一種常見情況是,你專案中用到的類庫有更新,你必須得重新下載新版本,重新加入到專案中,十分麻煩。
CocoaPods應該是iOS最常用最有名的類庫管理工具了,上述兩個煩人的問題,通過cocoaPods,只需要一行命令就可以完全解決,當然前提是你必須正確設定它。重要的是,絕大部分有名的開源類庫,都支援CocoaPods。所以,作為iOS程式設計師的我們,掌握CocoaPods的使用是必不可少的基本技能了。
CocoaPods的好處
1、在引入第三方庫時它可以自動為我們完成各種各樣的配置,包括配置編譯階段、聯結器選項、甚至是ARC環境下的-fno-objc-arc配置等。
2、使用CocoaPods可以很方便地查詢新的第三方庫,這些類庫是比較“標準的”,而不是網上隨便找到的,這樣可以讓我們找到真正好用的類庫。
CocoaPods的安裝
1:升級Ruby環境
sudo gem update --system
之後會提示輸入密碼,然後等待升級完成。
2:使用國內的RubyGems映象
因為那堵牆阻擋了cocoapods.org,我們可以用國內的Ruby映象來訪問cocoapods。按照下面的順序在終端中敲入依次敲入命令:
gem sources --remove https://rubygems.org/
//等有反應之後再敲入以下命令
gem sources -a https://ruby.taobao.org/
//或者
gem sources -a https://gems.ruby-china.com/
輸入以下命令檢視當前映象:
gem sources -l
只有在終端中出現下面文字才表明你上面的命令是成功的:
*** CURRENT SOURCES *** https://gems.ruby-china.com/
上面所有的命令完成之後,這時候,你在終端中執行:
sudo gem install -n /usr/local/bin cocoapods
sudo chmod +rx /usr/local/bin
等上十幾秒鐘,CocoaPods就可以在你本地下載並且安裝好了,不再需要其他設定。
如何使用CocoaPods
1:利用CocoaPods,在專案中匯入AFNetworking類庫
AFNetworking類庫在GitHub地址是:https://github.com/AFNetworking/AFNetworking
為了確定AFNetworking是否支援CocoaPods,可以用CocoaPods的搜尋功能驗證一下。在終端中輸入:
pod search AFNetworking
過幾秒鐘之後,你會在終端中看到關於AFNetworking類庫的一些資訊。
這說明,AFNetworking是支援CocoaPods,所以我們可以利用CocoaPods將AFNetworking匯入你的專案中。
首先,我們需要在我們的專案中加入CocoaPods的支援。先利用Xcode建立一個名字DemoExample的專案。
我們先建立PodFile檔案,然後在裡面新增你需要下載的類庫,這個檔案來控制CocoaPods該下載什麼,每個專案只需要一個Podfile檔案。
在終端中進入(cd命令)你專案所在目錄,然後在當前目錄下,利用vim建立Podfile,執行:
vim Podfile
然後在Podfile檔案中輸入以下文字:
platform :ios, ‘8.0’
pod "AFNetworking", "~> 3.0”
注意,這段文字不是憑空生成的,可以在AFNetworking的github頁面找到。這兩句文字的意思是,當前AFNetworking支援的iOS最高版本是iOS 8.0, 要下載的AFNetworking版本是3.0。
然後儲存退出。vim環境下,儲存退出命令是:
:wq
這時候,你會發現你的專案目錄中,出現一個名字為Podfile的檔案,而且檔案內容就是你剛剛輸入的內容。注意,Podfile檔案應該和你的工程檔案.xcodeproj在同一個目錄下。
這時候,你就可以利用CocoPods下載AFNetworking類庫了。還是在終端中的當前專案目錄下,執行以下命令:
pod install
執行上述命令之後,終端出現以下資訊:
$ pod install
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.0.2)
Generating Pods project
Integrating client project
[!] From now on use `DemoExample.xcworkspace`.
最後一句話意思是:以後開啟專案就用 DemoExample.xcworkspace 開啟,而不是之前的.xcodeproj檔案。
xcworkspace檔案是執行$ pod install命令產生的新檔案。除了這個檔案,你會發現還多了另外一個檔案“Podfile.lock”和一個資料夾“Pods”。
至此AFNetwoking已經成功匯入專案了。
可以稍微測試一下,在你的專案任意程式碼檔案中輸入:
#import <AFNetworking.h>
或者
#import "AFNetworking.h"
然後編譯,看看是否出錯。
總結一下就是:
- 先在專案中建立Podfile,Podfile的內容是你想匯入的類庫。一般類庫的原作者會告訴你匯入該類庫應該如何寫Podfile;
- 執行命令:$ pod install.
2:如何正確編譯執行一個包含CocoPods類庫的專案
當你去GitHub地址下載一份程式碼之後,開啟工程編譯,通常會發現Xcode報告一大堆錯誤,基本都是說你編譯的這份程式碼找不到某某標頭檔案,這就意味著你要成功編譯程式碼,必須先匯入一些第三方類庫。同時你會發現在工程資料夾下面有三個跟CocosPods相關的檔案(資料夾):Podfile,Podfile.lock和Pods。
這時候,開啟終端,進入工程所在的目錄,也就是和Podfile在同一目錄下,和場景1一樣,輸入以下命令(由於已經有Podfile,所以不需要再建立Podfile):
pod update
過幾秒(也許需要十幾秒,取決於你的網路狀況)之後,終端出現:
Analyzing dependencies
Fetching podspec for `DemoExample` from `../`
Downloading dependencies
Installing DemoExample (0.1.1)
Generating Pods project
Integrating client project
[!] From now on use `DemoExample.xcworkspace`.
這時候,再回到DemoExample資料夾,會看到多了一個檔案DemoExample.xcworkspace:
根據終端的資訊提示,你以後就需用新產生的DemoExample.xcworkspace來執行這個Example程式碼了。
開啟DemoExample.xcworkspace,編譯執行,成功!
【錯誤】執行pod search提示錯誤[!] Unable to find a pod with name, author, summary, or description matching
解決辦法:
(1)執行pod setup
(2)刪除~/Library/Caches/CocoaPods目錄下的search_index.json檔案
(3)執行pod search