目錄
CocoaPods簡介
常用命令一覽
一、CocoaPods 的安裝
1、更換 Gem 的源
2、更新升級 Gem 版本
3、安裝CocoaPods
4、更換repo鏡像為國內服務器
二、CocoaPods 的使用(圖和文字有細微的出入)
1、新建 Podfile 文件
2、編輯 Podfile 文件
3、執行導入命令
4、第三方庫更新
三、遭遇到的問題
四、原理和說明
五、更多
1、pod install提速
2、關于Podfile文件編輯時,第三方庫版本號的各種寫法
CocoaPods簡介
每種語言發展到一個階段,就會出現相應的依賴管理工具,例如Java語言的Maven,nodejs的npm。隨著iOS開發者的增多,業界也出現了為iOS程序提供依賴管理的工具,它的名字叫做:CocoaPods。
CocoaPods項目的源碼在Github上管理。該項目開始于2011年8月12日,經過多年發展,現在已經成為iOS開發事實上的依賴管理標準工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設置和更新第三方開源庫的時間。
在沒有使用CocoaPods以前,我需要:
把這些第三方開源庫的源代碼文件復制到項目中,或者設置成git的submodule。
對于這些開源庫通常需要依賴系統的一些framework,我需要手工地將這些framework一一增加到項目依賴中,比如通常情況下,一個網絡庫就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。
對于某些開源庫,我還需要設置-licucore或者 -fno-objc-arc等編譯參數管理這些依賴包的更新。
這些體力活雖然簡單,但毫無技術含量并且浪費時間。在使用CocoaPods之后,我只需要將用到的第三方開源庫放到一個名為Podfile的文件中,然后執行pod install。CocoaPods就會自動將這些第三方開源庫的源碼下載下來,并且為我的工程設置好相應的系統依賴和編譯參數。
常用命令一覽
1.先升級Gem? ? sudo gemupdate--system2.切換cocoapods的數據源? ? 【先刪除,再添加,查看】? ? gem sources--remove https://rubygems.org/gem sources -ahttp://ruby.taobao.org/? ? gem sources -l3.安裝cocoapods? ? sudo geminstallcocoapods4.將Podspec文件托管地址從github切換到國內的oschina? ? 【先刪除,再添加,再更新】? ? pod repo removemasterpod repoaddmasterhttp://git.oschina.net/akuandev/Specs.git? ? pod repoaddmasterhttps://gitcafe.com/akuandev/Specs.git? ? pod repoupdate5.設置pod倉庫? ? pod setup6.測試? ? 【如果有版本號,則說明已經安裝成功】? ? pod--version7.利用cocoapods來安裝第三方框架01進入要安裝框架的項目的.xcodeproj同級文件夾02在該文件夾中新建一個文件Podfile03在文件中告訴cocoapods需要安裝的框架信息? ? ? ? a.該框架支持的平臺? ? ? ? b.適用的iOS版本c.框架的名稱d.框架的版本8.安裝podinstall--no-repo-updatepodupdate--no-repo-update
一、CocoaPods 的安裝
CocoaPods是用Ruby實現的,要想使用它首先需要有Ruby的環境。幸運的是OS X系統默認的已經可以運行Ruby了,因此我們只需要執行以下命令。
1、更換 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
1-更換 Gem 的源為國內源.png
2、更新升級 Gem 版本
Gem是管理Ruby庫和程序的標準包,如果它的版本過低也可能導致安裝失敗,解決方案自然是升級Gem,執行下述命令即可:
// 更新升級gem- sudo gemupdate--system
2.1-更新升級 Gem 版本.png
2.2-更新升級 Gem 版本結果.png
3、安裝CocoaPods
// 安裝CocoaPods(OS X 10.11以前)- sudo geminstallcocoapods// 安裝CocoaPods(10.11后蘋果升級了安全策略)- sudo geminstall-n/usr/local/bincocoapods
3.1-安裝 CocoaPods.png
3.2-安裝 CocoaPods 結果.png
4、更換repo鏡像為國內服務器
所有的項目的Podspec文件都托管在https://github.com/CocoaPods/Specs。第一次執行podsetup時,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(開源中國較慢)
4.1-移除原有的 repo 鏡像服務器.png
4.2-添加 repo 鏡像國內服務器.png
4.3-更換repo鏡像為國內服務器結果.png
二、CocoaPods 的使用(圖和文字有細微的出入)
1、新建 Podfile 文件
使用時需要在你的項目根目錄下新建一個名為Podfile的文件,將依賴的庫名字依次列在文件中即可
//進入你的工程目錄$ cd /Users/peikua/Desktop/CocoaPodsDemo//創建Pods文件$ touch Podfile
5.1-在項目根目錄新建 Podfile 文件.png
2、編輯 Podfile 文件
假設我們想導入 AFNetworking ,進入http://cocoapods.org,搜索AFNetworking
5.2-查詢網站上的信息.png
5.3-根據信息編輯 Podfile 文件.png
3、執行導入命令
$cd /Users/peikua/Desktop/CocoaPodsDemo$pod install
5.4-打開 Podfile 目錄執行導入命令.png
5.5-成功導入第三方庫的信息和一個 Warning.png
pod install命令執行成功后,會看到工程目錄下多出CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。再看看剛才執行完pod install命令打印出來的內容的最后一行:From now on use CocoaPodsDemo.xcworkspace.提示我們從現在起,我們需要使用CocoaPodsTest.xcworkspace文件來開發。
4、第三方庫更新
只需要在Podfile文件中添加相應的第三方庫信息,執行pod update命令即可。
6.1-假設已有兩個庫,新增一個庫.png
6.2-執行 pod update 命令進行更新.png
Podfile 文件的使用方法官方已經更新,格式如下
platform:ios,"9.0"use_frameworks!target'BSBDJ'dopod"AFNetworking"pod"SDWebImage"pod"MJExtension"end
5、文件和指令說明
Podfile.lock文件
最后一次更新Pods時, 所有第三方框架的版本號
常用指令的區別
pod install
會根據Podfile.lock文件中列舉的版本號來安裝第三方框架
如果一開始Podfile.lock文件不存在, 就會按照Podfile文件列舉的版本號來安裝第三方框架
安裝框架之前, 默認會執行pod repo update指令
pod update
將所有第三方框架更新到最新版本, 并且創建一個新的Podfile.lock文件
安裝框架之前, 默認會執行pod repo update指令
pod install --no-repo-update
pod update --no-repo-update
安裝框架之前, 不會執行pod repo update指令
三、遭遇到的問題
出現錯誤提示.png
錯誤解決方法.png
//以后使用CocoaPods過程中出現了莫名其妙的問題,執行下面命令-sudo gem update --system-sudo gem install cocoapods-pod setup
四、原理和說明
1、第三方庫會被編譯成.a靜態庫供我們真正的工程使用。
CocoaPods會將所有的第三方庫以target的方式組成一個名為Pods的工程,該工程就放在剛才新生成的Pods目錄下。整個第三方庫工程會生成一個名稱為libPods.a的靜態庫提供給我們自己的CocoaPodsTest工程使用。
對于資源文件,CocoaPods提供了一個名為Pods-resources.sh的bash腳本,該腳本在每次項目編譯的時候都會執行,將第三方庫的各種資源文件復制到目標目錄中。
2、我們的工程和第三方庫所在的工程會由一個新生成的workspace管理
為了方便我們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是我們剛才看到的CocoaPodsTest.xcworkspace文件。
3、原來的工程設置已經被更改了,這時候我們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進行項目管理。
4、CocoaPods通過一個名為Pods.xcconfig的文件來在編譯時設置所有的依賴和參數。
五、更多
1、pod install提速
每次執行pod install和pod update的時候,cocoapods都會默認更新一次spec倉庫。這是一個比較耗時的操作。在確認spec版本庫不需要更新時,給這兩個命令加一個參數跳過spec版本庫更新,可以明顯提高這兩個命令的執行速度。
podinstall--verbose --no-repo-updatepodupdate--verbose --no-repo-update
2、關于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.0pod ‘AFNetworking’, ‘~>0.1′//使用大于等于0.1但小于1.0的版本pod ‘AFNetworking’, ‘~>0′//高于0的版本,寫這個限制和什么都不寫是一個效果,都表示使用最新版本
在學習CocoaPods和書寫這篇博文的過程我大量參考了唐巧的博客和這篇博文,大家也可以在唐巧的博客中學習到更多的內容,也可以去往官方學習