在進行iOS開發的時候,總免不了使用第三方的開源庫,CocoaPods(GitHub)是一個用來幫助咱們管理第三方依賴庫的工具。ios
使用CocoaPods的目的是讓咱們能自動化的、集中的、直觀的管理第三方開源庫。git
CocoaPods是用Ruby實現的,要想使用它首先須要有Ruby的環境。幸運的是OS X系統默認的已經能夠運行Ruby了,所以咱們只須要執行如下命令:github
sudo gem install cocoapods
CocoaPods是以Ruby gem包的形式被安裝的。在安裝執行的過程當中,可能會問咱們是否是更新rake,輸入y便可。這是由於rake gem包會在安裝的過程當中檢查更細,若是有可用的新版本就會出現剛纔的選項。xcode
在安裝進程結束的時候,執行命令:ruby
pod setup
若是沒有報錯,就說明一切安裝就成功了!工具
(1).執行完install命令半天沒反應this
這有多是由於Ruby的默認源使用的是cocoapods.org,國內訪問這個網址有時候會有問題,網上的一種解決方案是將遠替換成淘寶的RubyGems鏡像,替換方式以下:spa
gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/ gem sources -l *** CURRENT SOURCES *** https://ruby.taobao.org # 請確保只有 ruby.taobao.org
(2).gem版本過老3d
gem是管理Ruby庫和程序的標準包,若是它的版本太低也可能致使安裝失敗,解決方案天然是升級gem,執行下述命令便可:code
sudo gem update --system
sudo gem install cocoapods
爲了演示這個過程,我建立了一個名爲CocoapodsTest的工程。
在CocoapodsTest工程的根目錄下執行命令,建立空白的Podfile文件:
pod init
pod search AFNetworking
查詢出多個項目,其中有一個是AFNetworking:
-> AFNetworking (3.1.0) A delightful iOS and OS X networking framework. pod 'AFNetworking', '~> 3.1.0' - Homepage: https://github.com/AFNetworking/AFNetworking - Source: https://github.com/AFNetworking/AFNetworking.git - Versions: 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3, 3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo] - Subspecs: - AFNetworking/Serialization (3.1.0) - AFNetworking/Security (3.1.0) - AFNetworking/Reachability (3.1.0) - AFNetworking/NSURLSession (3.1.0) - AFNetworking/UIKit (3.1.0)
(1).根據須要,咱們能夠在Podfile文件中寫入須要用到的第三方庫,以AFNetworking庫爲例:
# Uncomment this line to define a global platform for your project # platform :ios, '8.0' # Uncomment this line if you're using Swift # use_frameworks! target 'CocoapodsTest' do pod 'AFNetworking', '~> 3.0' end target 'CocoapodsTestTests' do end target 'CocoapodsTestUITests' do end
注:platform :ios, 8.0 表示iOS應用支持8.0以上版本
注:use_frameworks! 使用Swift寫APP的時候請開啓
(2).Podfile和target
(3).引入依賴庫時,須要顯示或隱式註明引用的依賴庫版本,具體寫法和表示含義以下:
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的版本 pod 'AFNetworking', '~>0.1' //使用大於等於0.1但小於1.0的版本 pod 'AFNetworking', '~>0' //高於0的版本,寫這個限制和什麼都不寫是一個效果,都表示使用最新版本
pod install
pod install命令執行成功後,會發現多出 CocoapodsTest.xcworkspace、Podfile.lock、Pods 文件。
咱們從如今起,咱們須要使用CocoapodsTest.xcworkspace文件來開發。
對於工程發生的變化,有幾點須要說明:
CocoaPods會將全部的第三方庫以target的方式組成一個名爲Pods的工程,該工程就放在剛纔新生成的Pods目錄下。整個第三方庫工程會生成一個名稱爲libPods.a的靜態庫提供給咱們本身的CocoaPodsTest工程使用。
爲了方便咱們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是咱們剛纔看到的CocoapodsTest.xcworkspace文件。
原來的工程設置已經被更改了,這時候咱們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進行項目管理。
(1).若還要使用其它第三方庫,如 Reachability:
target 'CocoapodsTest' do pod 'AFNetworking', '~> 3.0' pod 'Reachability' end
再執行命令:
pod update
(2).若要移除一個第三方庫,如 Reachability;只要刪除在Podfile文件中pod 'Reachability'這行:
target 'CocoapodsTest' do pod 'AFNetworking', '~> 3.0' end
再執行:
pod update
執行完pod install以後,會生成一個Podfile.lock文件。這個文件看起來跟咱們關係不大,實際上絕對不該該忽略它。
該文件用於保存已經安裝的Pods依賴庫的版本,經過CocoaPods安裝了AFNetworking這個pods依賴庫之後對應的Podfile.lock文件內容爲:
PODS: - AFNetworking (3.1.0): - AFNetworking/NSURLSession (= 3.1.0) - AFNetworking/Reachability (= 3.1.0) - AFNetworking/Security (= 3.1.0) - AFNetworking/Serialization (= 3.1.0) - AFNetworking/UIKit (= 3.1.0) - AFNetworking/NSURLSession (3.1.0): - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - AFNetworking/Reachability (3.1.0) - AFNetworking/Security (3.1.0) - AFNetworking/Serialization (3.1.0) - AFNetworking/UIKit (3.1.0): - AFNetworking/NSURLSession DEPENDENCIES: - AFNetworking SPEC CHECKSUMS: AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67 COCOAPODS: 0.39.0
Podfile.lock文件最大得用處在於多人開發。對於沒有在Podfile中指定Pods依賴庫版本的寫法,以下:
pod 'Reachability'
最近cocoapds發佈了1.0.1的版本了:
sudo gem install cocoapods
可是回有報錯信息:
Fetching: xcodeproj-1.1.0.gem (100%)
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/xcodeproj
解決方法:
sudo gem install -n /usr/local/bin cocoapods --pre