前言
在iOS項目中使用第三方類庫可以說是非常常見的事 , 但是要正確地配置 和更新他們有時候是非常繁瑣的事情 , 幸運的是CocoaPods是一個很好的解決方案.
介紹
CocoaPods是OS X和iOS下的一個第三類庫管理工具 , 通過CocoaPods工具我們可以為項目添加被稱為“Pods”的依賴庫 (這些類庫必須是CocoaPods本身所支持的) , 并且可以輕松管理其版本.
Cocoapods意義體現(xiàn)在兩個方面.
第一 : 在引入第三方庫時它可以自動為我們完成各種各樣的配置 , 包括配置編譯階段、連接器選項狮斗、甚至是ARC環(huán)境下的-fno-objc-arc配置等.
第二 : 使用CocoaPods可以很方便地查找新的第三方庫 , 這些類庫是比較"標準的" , 而不是網(wǎng)上隨便找到的 , 這樣可以讓我們找到真正好用的類庫.
安裝
要想使用CocoaPods工具 首先我們要先下載安裝 , 而在下載安裝CocoaPods之前 我們要先有它的運行環(huán)境 Ruby.
MAC 的OS X自帶Ruby , 但是我們使用之前 還是要更新一下為好 , 避免版本過低導致安裝失敗 .
1.更新Ruby環(huán)境
首先我們要先查看Ruby的版本 在終端輸入以下命令:
ruby -v
你會看到例如這樣的信息 :
ruby 2.0.0p643 (2015-02-25 revision 49749) [x86_64-darwin14.4.0]
從這條信息中我們可以得知當前Ruby的版本號 以及更新日期 , 通過這些信息 我們可以檢驗接下來的更新是否成功了.
下面我們開始更新Ruby , 在終端輸入以下命令:
gem update —system
如果執(zhí)行后出現(xiàn)類似這樣的提示 那說明你沒有足夠的權限去操作:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don‘t have write permissions for the
/Library/Ruby/Gems/2.0.0 directory.`
這時我們可以使用以下命令去完成更新:
sudo gem update —system
如果你的Ruby版本是最新的 那么你將看到
Updating installed gems
Nothing to update
現(xiàn)在更新成功Ruby后 我們就可以開始下載安裝CocoaPods了 , 但在開始前 我們還需要做一步操作 , 更改Ruby的鏡像 :
安裝CocoaPods時我們要訪問cocoapods.org,該網(wǎng)站可能被我們大天朝墻了,這樣下載安裝可能會是灰常慢的,不過我們可以用淘寶的Ruby鏡像來訪問該網(wǎng)站 , 具體操作如下:
gem sources --remove https://rubygems.org/
等有反應之后再輸入以下命令
gem sources -a https://ruby.taobao.org/
通過以上2個命令 我們先移除原有的鏡像 再添加淘寶的鏡像 這樣就完成了更改 , 為了確保更改成功 在終端輸入一下命令可以查看當前鏡像:
gem sources -l
2.安裝CocoaPods
在終端輸入執(zhí)行: sudo gem install cocoapods
開始下載安裝.
注意 : 這個時候會提示你輸入密碼 . PS:在終端輸入密碼不會有提示 , 光標也不會移動 , 一定要注意!
使用
這里我們說一些平時常用的使用方法 , 例如搜索懂诗、安裝赢乓、更新、刪除等操作 .
1.搜索庫
使用CocoaPods搜索的命令如下:
pod search 你要搜索的庫名(支持模糊查詢)
舉個例子
pod search afnetworking
我們搜索AFNetworking庫 , 只要CocoaPods支持的庫都可以搜索到 , 搜索成功后終端會返回這個庫的所有類庫版本和描述信息 , 以及在Podfile中配置的寫法 , 下面我們來看一下搜索返回的信息:
如果你搜索的庫不存在 則會提示 :
下面還有一大坨相關搜索到的庫的信息這里就不一一列舉了.
在這些信息中 我們一會要用到的就是這一句 :
pod 'AFNetworking', '~> 3.0.4'
這句話后面我們要添加到Podfile文件中 , 那么什么是Podfile呢?
這里我們介紹一下 , Podfile是CocoaPods重要的組件之一 , 該文件用于配置項目所需要的第三方庫贪薪,它可以被高度定制 . 其實你也可以把它看成一張購物清單 , 我們所需要的庫的都列在這個清單上 , CocoaPods就會根據(jù)這個清單上的庫去做相應的操作 .
實例 :
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的版本眠副,寫這個限制和什么都不寫是一個效果画切,都表示使用最新版本
2.安裝庫
安裝庫之前 我們首先要創(chuàng)建一個Podfile文件 , 然后在Podfile文件中添加我們要安裝的庫信息 , 最后在終端執(zhí)行安裝命令 , 下面我們一步一步來講 (這里我們演示的是終端下的操作流程) :
- 找到你想要使用CocoaPods工程的根目錄
- 使用終端命令進入該目錄 :
cd 你的目錄地址
- 進入到該目錄后 終端輸入 :
vim Podfile
來創(chuàng)建Podfile文件 - 接下來就進入了Podfile文件的編輯模式 , 這時我們只需要把我們要添加的庫的配置信息寫進去就可以了 , 當然還是建議直接復制粘貼 避免手打出現(xiàn)錯誤.
- 配置信息添加好后 , 點擊鍵盤ESC鍵 退出編輯模式 , 然后輸入保存并退出的命令 :
:wq
就結束Podfile文件的編輯了 (如果不想用終端操作 也可以通過記事本打開Podfile文件添加信息) . - 此時我們會發(fā)現(xiàn)我們工程根目錄下會多出一個名為Podfile的文件 , 打開后你會看到剛剛你添加的庫配置信息 , 現(xiàn)在有了一個配置好的Podfile文件后 我們就可以執(zhí)行最后一步操作了 , 執(zhí)行安裝命令:
pod install
這時CocoaPods會根據(jù)Podfile文件中配置的信息去下載安裝相應的庫. 就算你需要用到一萬個庫 也只需要這一行命令就可以全部自動下載安裝配置完成 是不是很方便呢 ?
還有一點要說明一下 , 當你第一次使用CocoaPods安裝庫時 , 會在你工程的根目錄生成一個與你工程名相同的包 .
以后你必須要通過這個.xcworkspace文件來打開你的工程 .
你必須要通過這個.xcworkspace文件來打開你的工程 .
必須要通過這個.xcworkspace文件來打開你的工程 .
[重要的事重復三遍]
如果你依然點錯的話..
"( *?ω?)?╰ひ╯ 那么我們可以聊聊人生
3.更新庫
要想更新已經(jīng)安裝好的庫 其實非常簡單 只需要一行命令就可以搞定 :
pod update
CocoaPods會自動根據(jù)Podfile文件中的配置信息對可以更新的庫進行更新操作 .
4.刪除庫
如果我們安裝好的庫不想要了 怎么辦呢 ? 非常簡單 , 我們只需要在Podfile文件中刪除對應的庫的配置信息 (為了演示 我注釋掉了它) , 然后再執(zhí)行一次安裝命令就可以了
5.移除CocoaPods
假如我們的工程不想再使用CocoaPods了 那么我們怎么將安裝好的CocoaPods從我們的工程中移除呢?
- 刪除工程文件夾下的Podfile、Podfile.lock及Pods文件夾
- 刪除xcworkspace文件
- 使用xcodeproj文件打開工程囱怕,刪除Frameworks組下的Pods.xcconfig及l(fā)ibPods.a引用
- 在工程設置中的Build Phases下刪除Check Pods Manifest.lock及Copy Pods Resources
高級使用
以上所描述的是最常用的基礎使用方法 , 下面為擴展的高級使用
多個target中使用相同的Pods依賴庫
比如 , 名稱為CocoaPodsDemo的target和Second的target都需要使用FMDB霍弹、SDAutoLayout毫别、AFNetworking三個Pods依賴庫 , 可以使用link_with關鍵字來實現(xiàn) , 將Podfile寫成如下方式:
link_with 'CocoaPodsDemo', 'Second'
platform :ios
pod 'SDAutoLayout', '~> 1.3'
pod 'FMDB'
platform :ios, '7.0' //庫支持的IOS最低版本
pod 'AFNetworking', '~> 3.0'
不同的target使用完全不同的Pods依賴庫
CocoaPodsTest這個target使用的是FMDB、SDAutoLayout典格、AFNetworking三個依賴庫岛宦,但Second這個target只需要使用YYKit這一個依賴庫,這時可以使用target關鍵字耍缴,Podfile的描述方式如下:
target :'CocoaPodsDemo' do
platform :ios
pod 'SDAutoLayout', '~> 1.3'
pod 'FMDB'
platform :ios, '7.0'
pod 'AFNetworking', '~> 3.0'
end
target :'Second' do
pod 'YYKit'
end
Podfile.lock文件的作用
在使用CocoaPods , 執(zhí)行完pod install之后 , 會生成一個Podfile.lock文件 . 這個文件看起來跟我們關系不大 , 實際上絕對不應該忽略它.
該文件用于保存已經(jīng)安裝的Pods依賴庫的版本 , 通過CocoaPods安裝了FMDB砾肺、SDAutoLayout、AFNetworking三個Pods依賴庫以后對應的Podfile.lock文件內(nèi)容如下:
Podfile.lock文件最大得用處在于多人開發(fā) , 當團隊中的某個人執(zhí)行完pod install命令后 , 生成的Podfile.lock文件就記錄下了當時最新Pods依賴庫的版本 , 這時團隊中的其它人check下來這份包含Podfile.lock文件的工程以后 , 再去執(zhí)行pod install命令時 , 獲取下來的Pods依賴庫的版本就和最開始獲取到的版本一致 . 如果沒有Podfile.lock文件防嗡,后續(xù)所有用戶執(zhí)行pod install命令都會獲取最新版本的AFNetworking , 這就有可能造成同一個團隊使用的依賴庫版本不一致变汪,這對團隊協(xié)作來說絕對是個災難!
鑒于Podfile.lock文件對團隊協(xié)作如此重要 , 我們需要將它添加到版本管理中.
更新
關于1.1.0版本的一些小改動 , 在1.1.0之前的版本就不做介紹了 , 語法和1.1.0是由區(qū)別的 所以更新了 cocoaPods之后還是需要做一些細微的修改.
主要是修改你的Podfile 文件 如下示例:
platform :ios, '7.0'
target 'cocoaPodTest' do
pod 'AFNetworking', '~> 3.1.0'
end
結構如下:
platform 的意思是系統(tǒng)支持的最低版本
target是你的工程名
do開始
你pod的庫
你pod的庫
你pod的庫
你pod的庫
end結束
我是LEE , 一枚有信仰的果粉Coder , 如果喜歡記得關注哦 親 ~ 么了個噠 ?