CocoaPods使用

前言

在iOS項(xiàng)目中使用第三方類庫(kù)可以說是非常常見的事 , 但是要正確地配置 和更新他們有時(shí)候是非常繁瑣的事情 , 幸運(yùn)的是CocoaPods是一個(gè)很好的解決方案.

介紹

CocoaPods是OS X和iOS下的一個(gè)第三類庫(kù)管理工具 , 通過CocoaPods工具我們可以為項(xiàng)目添加被稱為“Pods”的依賴庫(kù) (這些類庫(kù)必須是CocoaPods本身所支持的) , 并且可以輕松管理其版本.

Cocoapods意義體現(xiàn)在兩個(gè)方面.
第一 : 在引入第三方庫(kù)時(shí)它可以自動(dòng)為我們完成各種各樣的配置 , 包括配置編譯階段、連接器選項(xiàng)、甚至是ARC環(huán)境下的-fno-objc-arc配置等.
第二 : 使用CocoaPods可以很方便地查找新的第三方庫(kù) , 這些類庫(kù)是比較"標(biāo)準(zhǔn)的" , 而不是網(wǎng)上隨便找到的 , 這樣可以讓我們找到真正好用的類庫(kù).


安裝

要想使用CocoaPods工具 首先我們要先下載安裝 , 而在下載安裝CocoaPods之前 我們要先有它的運(yùn)行環(huán)境 Ruby.
MAC 的OS X自帶Ruby , 但是我們使用之前 還是要更新一下為好 , 避免版本過低導(dǎo)致安裝失敗 .

1.更新Ruby環(huán)境

首先我們要先查看Ruby的版本 在終端輸入以下命令:
ruby -v
你會(huì)看到例如這樣的信息 :

ruby 2.0.0p643 (2015-02-25 revision 49749) [x86_64-darwin14.4.0]

從這條信息中我們可以得知當(dāng)前Ruby的版本號(hào) 以及更新日期 , 通過這些信息 我們可以檢驗(yàn)接下來的更新是否成功了.
下面我們開始更新Ruby , 在終端輸入以下命令:
gem update —system
如果執(zhí)行后出現(xiàn)類似這樣的提示 那說明你沒有足夠的權(quán)限去操作:

ERROR:  While executing gem ... (Gem::FilePermissionError) 
You don‘t have write permissions for the 
/Library/Ruby/Gems/2.0.0 directory.`

這時(shí)我們可以使用以下命令去完成更新:
sudo gem update —system
如果你的Ruby版本是最新的 那么你將看到

Updating installed gems
Nothing to update

現(xiàn)在更新成功Ruby后 我們就可以開始下載安裝CocoaPods了 , 但在開始前 我們還需要做一步操作 , 更改Ruby的鏡像 :
安裝CocoaPods時(shí)我們要訪問cocoapods.org,該網(wǎng)站可能被我們大天朝墻了,這樣下載安裝可能會(huì)是灰常慢的,不過我們可以用淘寶的Ruby鏡像來訪問該網(wǎng)站 , 具體操作如下:
gem sources --remove https://rubygems.org/
等有反應(yīng)之后再輸入以下命令
gem sources -a https://ruby.taobao.org/
通過以上2個(gè)命令 我們先移除原有的鏡像 再添加淘寶的鏡像 這樣就完成了更改 , 為了確保更改成功 在終端輸入一下命令可以查看當(dāng)前鏡像:
gem sources -l

2.安裝CocoaPods

在終端輸入執(zhí)行: sudo gem install cocoapods 開始下載安裝.

注意 : 這個(gè)時(shí)候會(huì)提示你輸入密碼 . PS:在終端輸入密碼不會(huì)有提示 , 光標(biāo)也不會(huì)移動(dòng) , 一定要注意!


使用

這里我們說一些平時(shí)常用的使用方法 , 例如搜索、安裝、更新、刪除等操作 .

1.搜索庫(kù)

使用CocoaPods搜索的命令如下:
pod search 你要搜索的庫(kù)名(支持模糊查詢)
舉個(gè)例子
pod search afnetworking
我們搜索AFNetworking庫(kù) , 只要CocoaPods支持的庫(kù)都可以搜索到 , 搜索成功后終端會(huì)返回這個(gè)庫(kù)的所有類庫(kù)版本和描述信息 , 以及在Podfile中配置的寫法 , 下面我們來看一下搜索返回的信息:

Pods搜索AFNetworking

如果你搜索的庫(kù)不存在 則會(huì)提示 :

Pods搜索的內(nèi)容不存在

下面還有一大坨相關(guān)搜索到的庫(kù)的信息這里就不一一列舉了.
在這些信息中 我們一會(huì)要用到的就是這一句 :
pod 'AFNetworking', '~> 3.0.4'

這句話后面我們要添加到Podfile文件中 , 那么什么是Podfile呢?
這里我們介紹一下 , Podfile是CocoaPods重要的組件之一 , 該文件用于配置項(xiàng)目所需要的第三方庫(kù),它可以被高度定制 . 其實(shí)你也可以把它看成一張購(gòu)物清單 , 我們所需要的庫(kù)的都列在這個(gè)清單上 , CocoaPods就會(huì)根據(jù)這個(gè)清單上的庫(kù)去做相應(yīng)的操作 .

實(shí)例 :

  pod ‘AFNetworking’      //不顯式指定依賴庫(kù)版本,表示每次都獲取最新版本
  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的版本,寫這個(gè)限制和什么都不寫是一個(gè)效果,都表示使用最新版本
2.安裝庫(kù)

安裝庫(kù)之前 我們首先要?jiǎng)?chuàng)建一個(gè)Podfile文件 , 然后在Podfile文件中添加我們要安裝的庫(kù)信息 , 最后在終端執(zhí)行安裝命令 , 下面我們一步一步來講 (這里我們演示的是終端下的操作流程) :

  1. 找到你想要使用CocoaPods工程的根目錄
  2. 使用終端命令進(jìn)入該目錄 : cd 你的目錄地址
  3. 進(jìn)入到該目錄后 終端輸入 : vim Podfile 來創(chuàng)建Podfile文件
  4. 接下來就進(jìn)入了Podfile文件的編輯模式 , 這時(shí)我們只需要把我們要添加的庫(kù)的配置信息寫進(jìn)去就可以了 , 當(dāng)然還是建議直接復(fù)制粘貼 避免手打出現(xiàn)錯(cuò)誤.
  5. 配置信息添加好后 , 點(diǎn)擊鍵盤ESC鍵 退出編輯模式 , 然后輸入保存并退出的命令 : :wq 就結(jié)束Podfile文件的編輯了 (如果不想用終端操作 也可以通過記事本打開Podfile文件添加信息) .
  6. 此時(shí)我們會(huì)發(fā)現(xiàn)我們工程根目錄下會(huì)多出一個(gè)名為Podfile的文件 , 打開后你會(huì)看到剛剛你添加的庫(kù)配置信息 , 現(xiàn)在有了一個(gè)配置好的Podfile文件后 我們就可以執(zhí)行最后一步操作了 , 執(zhí)行安裝命令:
    pod install

這時(shí)CocoaPods會(huì)根據(jù)Podfile文件中配置的信息去下載安裝相應(yīng)的庫(kù). 就算你需要用到一萬(wàn)個(gè)庫(kù) 也只需要這一行命令就可以全部自動(dòng)下載安裝配置完成 是不是很方便呢 ?

工程根目錄下的Podfile文件

還有一點(diǎn)要說明一下 , 當(dāng)你第一次使用CocoaPods安裝庫(kù)時(shí) , 會(huì)在你工程的根目錄生成一個(gè)與你工程名相同的包 .
以后你必須要通過這個(gè).xcworkspace文件來打開你的工程 .
你必須要通過這個(gè).xcworkspace文件來打開你的工程 .
必須要通過這個(gè).xcworkspace文件來打開你的工程 .
[重要的事重復(fù)三遍]

如果你依然點(diǎn)錯(cuò)的話..
"( *?ω?)?╰ひ╯ 那么我們可以聊聊人生

.xcworkspace文件
使用CocoaPods的工程目錄
3.更新庫(kù)

要想更新已經(jīng)安裝好的庫(kù) 其實(shí)非常簡(jiǎn)單 只需要一行命令就可以搞定 :
pod update
CocoaPods會(huì)自動(dòng)根據(jù)Podfile文件中的配置信息對(duì)可以更新的庫(kù)進(jìn)行更新操作 .

終端更新操作
4.刪除庫(kù)

如果我們安裝好的庫(kù)不想要了 怎么辦呢 ? 非常簡(jiǎn)單 , 我們只需要在Podfile文件中刪除對(duì)應(yīng)的庫(kù)的配置信息 (為了演示 我注釋掉了它) , 然后再執(zhí)行一次安裝命令就可以了

注釋掉的配置信息
再次執(zhí)行安裝命令
5.移除CocoaPods

假如我們的工程不想再使用CocoaPods了 那么我們?cè)趺磳惭b好的CocoaPods從我們的工程中移除呢?

  1. 刪除工程文件夾下的Podfile、Podfile.lock及Pods文件夾
  2. 刪除xcworkspace文件
  3. 使用xcodeproj文件打開工程,刪除Frameworks組下的Pods.xcconfig及l(fā)ibPods.a引用
  4. 在工程設(shè)置中的Build Phases下刪除Check Pods Manifest.lock及Copy Pods Resources
Build Phases下

高級(jí)使用

以上所描述的是最常用的基礎(chǔ)使用方法 , 下面為擴(kuò)展的高級(jí)使用

多個(gè)target中使用相同的Pods依賴庫(kù)

比如 , 名稱為CocoaPodsDemo的target和Second的target都需要使用FMDB、SDAutoLayout、AFNetworking三個(gè)Pods依賴庫(kù) , 可以使用link_with關(guān)鍵字來實(shí)現(xiàn) , 將Podfile寫成如下方式:

    link_with 'CocoaPodsDemo', 'Second'
    platform :ios
    pod 'SDAutoLayout', '~> 1.3'
    pod 'FMDB'
    platform :ios, '7.0' //庫(kù)支持的IOS最低版本
    pod 'AFNetworking', '~> 3.0'
不同的target使用完全不同的Pods依賴庫(kù)

CocoaPodsTest這個(gè)target使用的是FMDB、SDAutoLayout、AFNetworking三個(gè)依賴庫(kù),但Second這個(gè)target只需要使用YYKit這一個(gè)依賴庫(kù),這時(shí)可以使用target關(guān)鍵字,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之后 , 會(huì)生成一個(gè)Podfile.lock文件 . 這個(gè)文件看起來跟我們關(guān)系不大 , 實(shí)際上絕對(duì)不應(yīng)該忽略它.
該文件用于保存已經(jīng)安裝的Pods依賴庫(kù)的版本 , 通過CocoaPods安裝了FMDB、SDAutoLayout、AFNetworking三個(gè)Pods依賴庫(kù)以后對(duì)應(yīng)的Podfile.lock文件內(nèi)容如下:

Podfile.lock文件內(nèi)容

Podfile.lock文件最大得用處在于多人開發(fā) , 當(dāng)團(tuán)隊(duì)中的某個(gè)人執(zhí)行完pod install命令后 , 生成的Podfile.lock文件就記錄下了當(dāng)時(shí)最新Pods依賴庫(kù)的版本 , 這時(shí)團(tuán)隊(duì)中的其它人check下來這份包含Podfile.lock文件的工程以后 , 再去執(zhí)行pod install命令時(shí) , 獲取下來的Pods依賴庫(kù)的版本就和最開始獲取到的版本一致 . 如果沒有Podfile.lock文件,后續(xù)所有用戶執(zhí)行pod install命令都會(huì)獲取最新版本的AFNetworking , 這就有可能造成同一個(gè)團(tuán)隊(duì)使用的依賴庫(kù)版本不一致,這對(duì)團(tuán)隊(duì)協(xié)作來說絕對(duì)是個(gè)災(zāi)難!

鑒于Podfile.lock文件對(duì)團(tuán)隊(duì)協(xié)作如此重要 , 我們需要將它添加到版本管理中.

更新

關(guān)于1.1.0版本的一些小改動(dòng) , 在1.1.0之前的版本就不做介紹了 , 語(yǔ)法和1.1.0是由區(qū)別的 所以更新了 cocoaPods之后還是需要做一些細(xì)微的修改.
主要是修改你的Podfile 文件 如下示例:

platform :ios, '7.0'

target 'cocoaPodTest' do

pod 'AFNetworking', '~> 3.1.0'

end

結(jié)構(gòu)如下:

platform 的意思是系統(tǒng)支持的最低版本

target是你的工程名

do開始 

你pod的庫(kù)
你pod的庫(kù)
你pod的庫(kù)
你pod的庫(kù)

end結(jié)束

我是LEE , 一枚有信仰的果粉Coder , 如果喜歡記得關(guān)注哦 親 ~ 么了個(gè)噠 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容