CocoaPods使用

前言

在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中配置的寫法 , 下面我們來看一下搜索返回的信息:

Pods搜索AFNetworking

如果你搜索的庫不存在 則會提示 :

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

下面還有一大坨相關搜索到的庫的信息這里就不一一列舉了.
在這些信息中 我們一會要用到的就是這一句 :
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í)行安裝命令 , 下面我們一步一步來講 (這里我們演示的是終端下的操作流程) :

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

這時CocoaPods會根據(jù)Podfile文件中配置的信息去下載安裝相應的庫. 就算你需要用到一萬個庫 也只需要這一行命令就可以全部自動下載安裝配置完成 是不是很方便呢 ?

工程根目錄下的Podfile文件

還有一點要說明一下 , 當你第一次使用CocoaPods安裝庫時 , 會在你工程的根目錄生成一個與你工程名相同的包 .
以后你必須要通過這個.xcworkspace文件來打開你的工程 .
你必須要通過這個.xcworkspace文件來打開你的工程 .
必須要通過這個.xcworkspace文件來打開你的工程 .
[重要的事重復三遍]

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

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

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

終端更新操作
4.刪除庫

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

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

假如我們的工程不想再使用CocoaPods了 那么我們怎么將安裝好的CocoaPods從我們的工程中移除呢?

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

高級使用

以上所描述的是最常用的基礎使用方法 , 下面為擴展的高級使用

多個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文件內(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 , 如果喜歡記得關注哦 親 ~ 么了個噠 ?

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚁趁,一起剝皮案震驚了整個濱河市裙盾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌他嫡,老刑警劉巖番官,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钢属,居然都是意外死亡徘熔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門淆党,熙熙樓的掌柜王于貴愁眉苦臉地迎上來近顷,“玉大人,你說我怎么就攤上這事宁否≈仙” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵慕匠,是天一觀的道長饱须。 經(jīng)常有香客問我,道長台谊,這世上最難降的妖魔是什么蓉媳? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮锅铅,結果婚禮上酪呻,老公的妹妹穿的比我還像新娘。我一直安慰自己盐须,他們只是感情好玩荠,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般阶冈。 火紅的嫁衣襯著肌膚如雪闷尿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天女坑,我揣著相機與錄音填具,去河邊找鬼。 笑死匆骗,一個胖子當著我的面吹牛劳景,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碉就,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼盟广,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铝噩?” 一聲冷哼從身側響起衡蚂,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤窿克,失蹤者是張志新(化名)和其女友劉穎骏庸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體年叮,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡具被,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了只损。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片一姿。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖跃惫,靈堂內(nèi)的尸體忽然破棺而出叮叹,到底是詐尸還是另有隱情,我是刑警寧澤爆存,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布蛉顽,位于F島的核電站,受9級特大地震影響先较,放射性物質(zhì)發(fā)生泄漏携冤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一闲勺、第九天 我趴在偏房一處隱蔽的房頂上張望曾棕。 院中可真熱鬧,春花似錦菜循、人聲如沸翘地。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽子眶。三九已至瀑凝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間臭杰,已是汗流浹背粤咪。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渴杆,地道東北人寥枝。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像磁奖,于是被迫代替她去往敵國和親囊拜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容