CocoaPods總結(jié)

一、預(yù)備知識(shí)

1、Rvm介紹:全稱 Ruby Version Manager,是安裝和管理ruby的一種工具。(下面用X.X.X表示ruby的版本)
#常用命令:
rvm list                                 # 查詢已安裝的版本
rvm info                                 # 查詢當(dāng)前版本
rvm use X.X.X --default                  # 選擇默認(rèn)版本
rvm remove X.X.X  [--docs]  [--gems]     # 刪除該ruby版本,后面的可選項(xiàng)分別表示同時(shí)刪除文檔、gems
2、Ruby介紹: 是一種面向?qū)ο蟮哪_本語(yǔ)言,簡(jiǎn)單易用,功能強(qiáng)大。能跨平臺(tái)、可移植性好。
  • Ruby的軟件源使用的亞馬遜云服務(wù),國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境下載時(shí)易超時(shí),可以將官方ruby源換成國(guó)內(nèi)源。
  • 淘寶ruby源( https://ruby.taobao.org/ ) 2016.06后暫停維護(hù)了。
  • China ruby源( https://gems.ruby-china.org/ ),所以現(xiàn)在只能換成這個(gè)源了。
3、Gem介紹:是一個(gè)管理Ruby庫(kù)的程序的標(biāo)準(zhǔn)包,它通過Ruby Gem源來查找、安裝、升級(jí)和卸載軟件包,非常便捷。
#常用命令:
gem -v                          # ruby的版本號(hào)
gem sources                     # ruby鏡像
gem sources --add XXX           # 增加配置源(例如增加China ruby,源有效才能被add上)
gem sources --remove XXX        # 刪除配置源(例如刪除默認(rèn)ruby源)
gem install XXX                 # 安裝XXX包
gem uninstall XXX               # 卸載XXX包
gem clean up                    # 清楚所有包的舊版本,但會(huì)保留最新版本
gem list [XXX]                  # 列出本地的包,可選參數(shù)表示,列出本地以XXX開頭的包
sudo gem install cocoapods [--pre]       # 安裝CocoaPods最新版[至預(yù)覽版]
sudo gem update cocoapods [--pre]        # 更新CocoaPods至最新版[至預(yù)覽版]
sudo gem uninstall cocoapods -v X.X.X    # 卸載X.X.X版本的CocoaPods
sudo gem install cocoapods -v X.X.X  #安裝指定版本的CocoaPods
# 如果更新不成功,按錯(cuò)誤提示清空該目錄下的緩存包
4、CocoaPods介紹:是iOS最常用的第三方庫(kù)管理工具,通過ruby實(shí)現(xiàn),必須有ruby環(huán)境才能使用。OS X系統(tǒng)默認(rèn)已經(jīng)可以運(yùn)行ruby。但是ruby版本過低時(shí),CocoaPods無法正常使用,所以需要先安裝更新升級(jí)rvm和ruby,pod倉(cāng)庫(kù),和git一樣,本地有個(gè)pod repo,和github上的版本對(duì)應(yīng)。

查看本地是否存在pod索引庫(kù),執(zhí)行以下命令:

  • 首先 cd [~] 切換到當(dāng)前用戶的根目錄。
  • 再執(zhí)行 cd .cocoapods 命令。(注意,這里cocoapods文件是隱藏文件)
  • 然后執(zhí)行 open . 打開當(dāng)前目錄,查看repos目錄下是否有許多索引文件。
  • 否則需要執(zhí)行 pod setup安裝索引,它會(huì)將CocoaPods master repo索引的信息下載到~/.cocoapods目錄下。下載過程中可以cd到改目錄du -sh *查看下載進(jìn)度。(這個(gè)過程會(huì)比較久)
#常用命令:
pod --version                               # 檢查CocoaPods的版本(未安裝則無效)
pod init                                    # 在新建的項(xiàng)目根目錄運(yùn)行該命令,為當(dāng)前項(xiàng)目新建podfile文件
pod install                                 # 下載和配置podfile里定義的項(xiàng)目依賴(但不包括已經(jīng)下載和配置的項(xiàng)目依賴),(新建podfile.lock文件)并將每個(gè)依賴庫(kù)的版本信息記錄在podfile.lock文件中。為項(xiàng)目新建.xcworkspace文件。如果有Podfile.lock文件而且對(duì)應(yīng)的Podfile文件未被修改,則會(huì)根據(jù)Podfile.lock文件指定的版本安裝。(使用時(shí)機(jī):第一次安裝、添加依賴庫(kù)、移除依賴庫(kù)是需要pods)
pod update  [--verbose --no-repo-update]    # 若Podfile中指定的依賴庫(kù)版本不是固定的(即一個(gè)范圍),當(dāng)對(duì)應(yīng)的依賴庫(kù)有了更新,無論有沒有Podfile.lock文件都會(huì)去獲取Podfile文件描述的允許獲取到的最新依賴庫(kù)版本。
pod setup                                   # 在當(dāng)前用戶的.cocoapods/目錄下
pod search  XXX                             # 搜索某個(gè)庫(kù)(前提是必須pod setup后,在本地建立了索引,不然搜索不到)
pod repo update                             # 在本地索引庫(kù)已經(jīng)存在的情況下,如果search不到XXX庫(kù)時(shí),就執(zhí)行該命令來更新索引。否則先pod setup
pod cache list                              #會(huì)列出本地緩存的所有三方庫(kù)
pod cache clean XXX                         #清除某個(gè)緩存的三方庫(kù)
pod repo-rsync update                       #同步源

二、CocoaPods的安裝與卸載

有了前面的準(zhǔn)備,這里安裝cocoaPods就很簡(jiǎn)單了(原來看第一部分的說明)

1、更換Ruby源
  • 移除Ruby默認(rèn)源
$ gem sources --remove https://rubygems.org/ 
  • 使用新的源
$ gem sources -a https://gems.ruby-china.org/ 
  • 驗(yàn)證Ruby源是否更換成功
$ gem sources
2、安裝CocoaPods
  • 檢查gem版本(因?yàn)間em版本過低,可能會(huì)導(dǎo)致安裝出現(xiàn)問題)
$ gem -v 
  • 如果gem需要升級(jí)的話執(zhí)行
$ sudo gem update --system
  • 有了上面關(guān)鍵幾部后,執(zhí)行安裝
$ sudo gem install cocoapods 
$ pod setup
3、卸載CocoaPods

如果想要完全卸載一個(gè)cocoapods庫(kù),如要做一下處理:

  • 執(zhí)行$ which pod命令,如果安裝過cocoapods的話,會(huì)找到一個(gè)XXX/.../XXX/pod的目錄,那么使用$ rm -rf 該目錄將之刪除。然后再執(zhí)行$ which pod查看是否還有pod的目錄,有的話統(tǒng)統(tǒng)刪除。
  • 執(zhí)行$ rm -rf ~/.cocoapods/刪除該目錄
  • 執(zhí)行$ rm -rf ~/Library/Caches/CocoaPods/刪除該目錄
  • 注意:上面的這幾點(diǎn)都不會(huì)通過gem中的卸載命令刪除。
  • 執(zhí)行$ gem list,會(huì)列出gem中安裝的所有軟件,找到cocoapods相關(guān)的軟件,下圖中顯示的挨個(gè)刪除即可。例如(sudo gem uninstall cocoapods),下面是我電腦中需要?jiǎng)h除的所有cocoapods相關(guān)的東西(這里不要擔(dān)心,安裝cocoapods時(shí),只需執(zhí)行$ gem install cocoapods,下圖中的cocoapods-xxx這些都會(huì)被重寫的安裝下來,如果做完全刪除的話,這些東西都不會(huì)重新安裝,電腦里會(huì)只安裝個(gè)cocopods,這些cocoapods-xxx還是用的原來的。)
Paste_Image.png

三、CocoaPods的使用

1、三步創(chuàng)建一個(gè)帶有依賴pods項(xiàng)目
  • 新建項(xiàng)目,在項(xiàng)目根目錄執(zhí)行pod init命令。會(huì)在根目錄自動(dòng)生成profile文件。
  • 編輯profile文件。
  • 執(zhí)行pod install (注意這里是install,不是update),因?yàn)榈谝淮?code>pod install之后會(huì)為項(xiàng)目生成podfile.lock文件,以及.xcwokspace文件。
2、編輯profile定義依賴(下面介紹一些簡(jiǎn)單語(yǔ)法,詳細(xì)請(qǐng)查看官方文檔
  • 表示依賴為SSZipArchive最新版本
pod 'SSZipArchive'
  • 表示特定的依賴版本(這里就特指版本0.9)
pod 'Objection', '0.9'
  • 后面pod依賴版本具體填寫方法
 = 0.1     // 特指版本為0.1  或者可以直接用數(shù)字(像上面的0.9寫法一樣)
 > 0.1     // 任何版本只要0.1
 >= 0.1    // 任何版本大于或等于0.1  
 < 0.1   // 任何版本小于0.1
 <= 0.1  // 任何版本小于等于0.1
 ~>0.1.2 // 0.1.2 <= 版本 < 0.2.0 (這種寫法也較為常見)
  • configurations語(yǔ)法
#表示PonyDebugger庫(kù)只在工程設(shè)置為Debug或者Beta依賴(使用多重配置的寫法)
pod 'PonyDebugger', :configurations => ['Debug', 'Beta']  
#表示PonyDebugger庫(kù)只在工程設(shè)置為Debug時(shí)依賴(使用一種配置的寫法)
pod 'PonyDebugger', :configuration => 'Debug'
  • subspecs語(yǔ)法
#表示只依賴QueryKit庫(kù)下的Attribute模塊(使用某個(gè)庫(kù)下的單個(gè)模塊寫法)
pod 'QueryKit/Attribute'
#表示依賴QueryKit庫(kù)下的Attribute和QuerySet模塊(使用某個(gè)庫(kù)下的多個(gè)模塊寫法)
pod 'QueryKit', :subspecs => ['Attribute', 'QuerySet']
  • path語(yǔ)法
pod 'AFNetworking', :path => '~/Documents/AFNetworking'
  • git語(yǔ)法
#倉(cāng)庫(kù)中的master分支(默認(rèn))
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
#倉(cāng)庫(kù)中的dev分支
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'
#倉(cāng)庫(kù)中某次tag下的代碼
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
#倉(cāng)庫(kù)下某次具體提交的代碼
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'
  • podspec語(yǔ)法
#指定依賴的podspec(一般為團(tuán)隊(duì)內(nèi)的私有庫(kù))
pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'
3、注意事項(xiàng):
  • pod installpod update執(zhí)行時(shí)一般都比較慢,因?yàn)樗鼈儠?huì)默認(rèn)更新一次podspec索引,可以再后面添加--no-repo-update參數(shù)不讓更新索引。
  • pods 索引庫(kù),上面提過,有時(shí)可能會(huì)因?yàn)楸镜?code>pods索引庫(kù)不存在或者太舊導(dǎo) 致項(xiàng)目導(dǎo)致podfile中的某些依賴庫(kù)下載失敗。這時(shí)先通過pod search XXX 命令查找本地是否存在改庫(kù)。
    如果不存在改庫(kù)需要最好先執(zhí)行pod repo update 命令,更新本地索引庫(kù)。這個(gè)更新的過程比較漫長(zhǎng),更新好之后,再執(zhí)行pod seach命令,這是如果你的庫(kù)無法搜索出來,那就是~/Library/Caches/CocoaPods/search_index.json庫(kù)索引是舊的(這個(gè)一般是因?yàn)镃ocoaPods升級(jí)導(dǎo)致,如果你想升級(jí)Cocopods記得先卸載,再執(zhí)行升級(jí),否者search_index.json還是舊的,雖然pod repo已經(jīng)是最新的了,但是通過search_index.json這個(gè)還是索引不到,這就好比你買了一個(gè)第2016年的新字典,但是還用著1998年老字典的查找目錄,新搜錄的東西根據(jù)老目錄肯定出不來)。這個(gè)庫(kù)索引Json文件比較大10多MB,你可以刪除該Json。然后再執(zhí)行 pod search XXX,這樣就會(huì)自動(dòng)下載一個(gè)最新的庫(kù)索引文件了。 經(jīng)過上面的一些列操作后,基本不會(huì)出什么問題了,如果發(fā)現(xiàn)工程因?yàn)橐驗(yàn)?code>pod庫(kù)的問題還無法編譯通過,這是采用終極絕招,干掉podfile.lock文件、pods目錄、.xcworkspace文件,然后執(zhí)行pod install等待直到完成。
  • 沒有創(chuàng)建過pods索引庫(kù)需要pod repo setup。(可以到當(dāng)前用戶更目錄下的 .cocoapods目錄中查看是否存在 repo
  • Podfile.lock 它會(huì)記錄庫(kù)的版本信息,當(dāng)pod update后版本庫(kù)的改動(dòng)會(huì)被記錄在這個(gè)文件中,當(dāng)然pod install執(zhí)行后如果本地庫(kù)沒有發(fā)生變化該文件是不會(huì)改變的,它可以防止第三方庫(kù)升級(jí)時(shí)造成的第三方庫(kù)版本不一致。(協(xié)同開發(fā)時(shí)很重要)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評(píng)論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,541評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,356評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,555評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,769評(píng)論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評(píng)論 1 295
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,289評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,516評(píng)論 2 379

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

  • CocoaPods 是什么? CocoaPods 是一個(gè)負(fù)責(zé)管理 iOS 項(xiàng)目中第三方開源庫(kù)的工具。CocoaPo...
    朝洋閱讀 25,735評(píng)論 3 51
  • 項(xiàng)目組件化、平臺(tái)化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫(kù)以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 22,102評(píng)論 0 39
  • 一、什么是CocoaPods? 前言: 思考如何引入一個(gè)第三方框架。 例如: 百度地圖SDK、友盟、ShareSD...
    092d567e5c1c閱讀 493評(píng)論 0 4
  • 南方的冬天來的太慢,當(dāng)北方已經(jīng)供起暖氣,穿起棉衣,我們這依舊秋風(fēng)颯爽,涼氣席席。總給人一股稍不注意,冬天就會(huì)悄悄流...
    看我瞳孔在發(fā)光閱讀 367評(píng)論 0 0
  • 逗逼的可愛大男孩阿科你好 首先 你這幾天的一些莫名小情緒我感受到了,默默地跟你一起不開心難過了吧,沒說而已 其次 ...
    舒科舒科舒科閱讀 173評(píng)論 1 1