目錄
CocoaPods簡介
1、CocoaPods 的安裝
一、更換 Gem 的源
二、更新升級 Gem 版本
三、安裝CocoaPods
四、更換repo鏡像爲國內服務器node2、CocoaPods 的使用(圖和文字有細微的出入)
一、新建 Podfile 文件
二、編輯 Podfile 文件
三、執行導入命令
四、第三方庫更新git3、遭遇到的問題
4、原理和說明
5、更多
一、pod install提速
二、關於Podfile文件編輯時,第三方庫版本號的各類寫法github
CocoaPods簡介
每種語言發展到一個階段,就會出現相應的依賴管理工具,例如Java語言的Maven,nodejs的npm。隨着iOS開發者的增多,業界也出現了爲iOS程序提供依賴管理的工具,它的名字叫作:CocoaPods。
CocoaPods項目的源碼在Github上管理。該項目開始於2011年8月12日,通過多年發展,如今已經成爲iOS開發事實上的依賴管理標準工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得咱們能夠節省設置和更新第三方開源庫的時間。npm在我開發猿題庫客戶端時,其使用了24個第三方開源庫。在沒有使用CocoaPods之前,我須要:安全
把這些第三方開源庫的源代碼文件複製到項目中,或者設置成git的submodule。
對於這些開源庫一般須要依賴系統的一些framework,我須要手工地將這些framework一一增長到項目依賴中,好比一般狀況下,一個網絡庫就須要增長如下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。
對於某些開源庫,我還須要設置-licucore或者 -fno-objc-arc等編譯參數管理這些依賴包的更新。
這些體力活雖然簡單,但毫無技術含量而且浪費時間。在使用CocoaPods以後,我只須要將用到的第三方開源庫放到一個名爲Podfile的文件中,而後執行pod install。CocoaPods就會自動將這些第三方開源庫的源碼下載下來,而且爲個人工程設置好相應的系統依賴和編譯參數。ruby
1、CocoaPods 的安裝
CocoaPods是用Ruby實現的,要想使用它首先須要有Ruby的環境。幸運的是OS X系統默認的已經能夠運行Ruby了,所以咱們只須要執行如下命令。bash
一、更換 Gem 的源
Gem是一個管理Ruby庫和程序的標準包,它經過Ruby Gem(如 http://rubygems.org/ )源來查找、安裝、升級和卸載軟件包服務器
// 1.移除掉原有的源(服務器在國外,速度較慢) - gem sources --remove https://rubygems.org/ // 2.等有反應以後再敲入如下命令(添加國內的源,原先是 http://ruby.taobao.org/ ,如今淘寶上的ruby鏡像換成https了) - gem sources -a https://ruby.taobao.org/ // 3.驗證是否替換成功 - gem sources -l
二、更新升級 Gem 版本
Gem是管理Ruby庫和程序的標準包,若是它的版本太低也可能致使安裝失敗,解決方案天然是升級Gem,執行下述命令便可:網絡
// 更新升級gem - sudo gem update --system
三、安裝CocoaPods
// 安裝CocoaPods(OS X 10.11之前) - sudo gem install cocoapods // 安裝CocoaPods(10.11後蘋果升級了安全策略) - sudo gem install -n /usr/local/bin cocoapods
四、更換repo鏡像爲國內服務器
全部的項目的Podspec文件都託管在https://github.com/CocoaPods/Specs。第一次執行pod setup時,CocoaPods會將這些podspec索引文件更新到本地的 ~/.cocoapods/目錄下,這個索引文件比較大,有80M左右。因此第一次更新時很是慢,筆者(唐巧)就更新了將近1個小時才完成。
一個叫akinliu的朋友在gitcafe和oschina上創建了CocoaPods索引庫的鏡像,由於gitcafe和oschina都是國內的服務器,因此在執行索引更新操做時,會快不少。以下操做能夠將CocoaPods設置成使用gitcafe鏡像:工具
// 1.移除原有服務器 - pod repo remove master // 2.添加境內服務器(建議使用第一個) - pod repo add master https://gitcafe.com/akuandev/Specs.git - pod repo add master http://git.oschina.net/akuandev/Specs.git(開源中國較慢)
2、CocoaPods 的使用(圖和文字有細微的出入)
一、新建 Podfile 文件
使用時須要在你的項目根目錄下新建一個名爲Podfile的文件,將依賴的庫名字依次列在文件中便可
//進入你的工程目錄 $ cd /Users/peikua/Desktop/CocoaPodsDemo //建立Pods文件 $ touch Podfile
二、編輯 Podfile 文件
假設咱們想導入 AFNetworking ,進入http://cocoapods.org,搜索AFNetworking
三、執行導入命令
$ cd /Users/peikua/Desktop/CocoaPodsDemo
$ pod install
pod install命令執行成功後,會看到工程目錄下多出CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。再看看剛纔執行完pod install命令打印出來的內容的最後一行:
From now on use CocoaPodsDemo.xcworkspace.
提示咱們從如今起,咱們須要使用CocoaPodsTest.xcworkspace文件來開發。
四、第三方庫更新
只須要在Podfile文件中添加相應的第三方庫信息,執行pod update命令便可。
3、遭遇到的問題
//之後使用CocoaPods過程當中出現了莫名其妙的問題,執行下面命令
- sudo gem update --system
- sudo gem install cocoapods
- pod setup
,執行下面命令 - sudo gem update --system - sudo gem install cocoapods - pod setup
4、原理和說明
一、第三方庫會被編譯成.a靜態庫供咱們真正的工程使用。
CocoaPods會將全部的第三方庫以target的方式組成一個名爲Pods的工程,該工程就放在剛纔新生成的Pods目錄下。整個第三方庫工程會生成一個名稱爲libPods.a的靜態庫提供給咱們本身的CocoaPodsTest工程使用。
對於資源文件,CocoaPods提供了一個名爲Pods-resources.sh的bash腳本,該腳本在每次項目編譯的時候都會執行,將第三方庫的各類資源文件複製到目標目錄中。
二、咱們的工程和第三方庫所在的工程會由一個新生成的workspace管理
爲了方便咱們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是咱們剛纔看到的CocoaPodsTest.xcworkspace文件。
三、原來的工程設置已經被更改了,這時候咱們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進行項目管理。
四、CocoaPods經過一個名爲Pods.xcconfig的文件來在編譯時設置全部的依賴和參數。
5、更多
一、pod install提速
每次執行pod install
和pod update
的時候,cocoapods都會默認更新一次spec倉庫。這是一個比較耗時的操做。在確認spec版本庫不須要更新時,給這兩個命令加一個參數跳過spec版本庫更新,能夠明顯提升這兩個命令的執行速度。
pod install --verbose --no-repo-update pod update --verbose --no-repo-update
二、關於Podfile文件編輯時,第三方庫版本號的各類寫法
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的版本,寫這個限制和什麼都不寫是一個效果,都表示使用最新版本