目錄
2016.08更新:Podfile 格式更新
CocoaPods簡介
常用指令一覽一、CocoaPods 的安裝
1、更換 Gem 的源
2、更新更新 Gem 版本
3、安裝CocoaPods
4、更換repo鏡像為國内伺服器
二、CocoaPods 的使用(圖和文字有細微的出入)
1、建立 Podfile 檔案
2、編輯 Podfile 檔案
3、執行導入指令
4、第三方庫更新
三、遭遇到的問題
四、原理和說明
五、更多
1、pod install提速
2、關于Podfile檔案編輯時,第三方庫版本号的各種寫法
2016.08更新:Podfile 格式更新
在1.0.0的 CocoaPods 版本更新後,Podfile 檔案的使用方法官方已經更新,格式如下
platform :ios, "9.0"
target 'BSBDJ' do pod "AFNetworking" pod "SDWebImage" pod "MJExtension" end
CocoaPods簡介
每種語言發展到一個階段,就會出現相應的依賴管理工具,例如Java語言的Maven,nodejs的npm。随着iOS開發者的增多,業界也出現了為iOS程式提供依賴管理的工具,它的名字叫做:CocoaPods。
CocoaPods項目的源碼在Github上管理。該項目開始于2011年8月12日,經過多年發展,現在已經成為iOS開發事實上的依賴管理标準工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設定和更新第三方開源庫的時間。
在我開發猿題庫用戶端時,其使用了24個第三方開源庫。在沒有使用CocoaPods以前,我需要:
把這些第三方開源庫的源代碼檔案複制到項目中,或者設定成git的submodule。
對于這些開源庫通常需要依賴系統的一些framework,我需要手工地将這些framework一一增加到項目依賴中,比如通常情況下,一個網絡庫就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。
對于某些開源庫,我還需要設定-licucore或者 -fno-objc-arc等編譯參數管理這些依賴包的更新。
這些體力活雖然簡單,但毫無技術含量并且浪費時間。在使用CocoaPods之後,我隻需要将用到的第三方開源庫放到一個名為Podfile的檔案中,然後執行pod install。CocoaPods就會自動将這些第三方開源庫的源碼下載下傳下來,并且為我的工程設定好相應的系統依賴和編譯參數。
常用指令一覽
1.先更新Gem
sudo gem update --system
一、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 gem update --system
2.1-更新更新 Gem 版本.png
2.2-更新更新 Gem 版本結果.png
3、安裝CocoaPods
// 安裝CocoaPods(OS X 10.11以前)
- sudo gem install cocoapods
// 安裝CocoaPods(
3.1-安裝 CocoaPods.png
3.2-安裝 CocoaPods 結果.png
4、更換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(開源中國較慢)
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、執行導入指令
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"
target 'BSBDJ' do pod "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版本庫更新,可以明顯提高這兩個指令的執行速度。
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
2、關于Podfile檔案編輯時,第三方庫版本号的各種寫法
pod ‘AFNetworking’ //不顯式指定依賴庫版本,表示每次都擷取最新版本
pod ‘AFNetworking’, ‘
在學習CocoaPods和書寫這篇博文的過程我大量參考了唐巧的部落格和這篇博文,大家也可以在唐巧的部落格中學習到更多的内容,也可以去往官方學習
深入了解 CocoaPods CocoaPods最佳實踐探讨
文/Vinc(簡書作者)
原文連結:http://www.jianshu.com/p/3086df14ed08
著作權歸作者所有,轉載請聯系作者獲得授權,并标注“簡書作者”。
轉載于:https://www.cnblogs.com/luqinbin/p/5944959.html