CocoaPods總結(jié)

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

1撩轰、Rvm介紹:全稱(chēng) Ruby Version Manager,是安裝和管理ruby的一種工具膀哲。(下面用X.X.X表示ruby的版本)
#常用命令:
rvm list                                 # 查詢(xún)已安裝的版本
rvm info                                 # 查詢(xún)當(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)包葫男,它通過(guò)Ruby Gem源來(lái)查找抱冷、安裝、升級(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開(kāi)頭的包
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ù)管理工具鸣剪,通過(guò)ruby實(shí)現(xiàn),必須有ruby環(huán)境才能使用丈积。OS X系統(tǒng)默認(rèn)已經(jīng)可以運(yùn)行ruby筐骇。但是ruby版本過(guò)低時(shí),CocoaPods無(wú)法正常使用桶癣,所以需要先安裝更新升級(jí)rvm和ruby拥褂,pod倉(cāng)庫(kù),和git一樣牙寞,本地有個(gè)pod repo,和github上的版本對(duì)應(yīng)饺鹃。

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

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

二研底、CocoaPods的安裝與卸載

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

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版本過(guò)低,可能會(huì)導(dǎo)致安裝出現(xiàn)問(wè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命令朽寞,如果安裝過(guò)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ì)通過(guò)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ì)被重寫(xiě)的安裝下來(lái),如果做完全刪除的話,這些東西都不會(huì)重新安裝加叁,電腦里會(huì)只安裝個(gè)cocopods倦沧,這些cocoapods-xxx還是用的原來(lái)的。)
Paste_Image.png

三它匕、CocoaPods的使用

1刀脏、三步創(chuàng)建一個(gè)帶有依賴(lài)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定義依賴(lài)(下面介紹一些簡(jiǎn)單語(yǔ)法创夜,詳細(xì)請(qǐng)查看官方文檔
  • 表示依賴(lài)為SSZipArchive最新版本
pod 'SSZipArchive'
  • 表示特定的依賴(lài)版本(這里就特指版本0.9)
pod 'Objection', '0.9'
  • 后面pod依賴(lài)版本具體填寫(xiě)方法
 = 0.1     // 特指版本為0.1  或者可以直接用數(shù)字(像上面的0.9寫(xiě)法一樣)
 > 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 (這種寫(xiě)法也較為常見(jiàn))
  • configurations語(yǔ)法
#表示PonyDebugger庫(kù)只在工程設(shè)置為Debug或者Beta依賴(lài)(使用多重配置的寫(xiě)法)
pod 'PonyDebugger', :configurations => ['Debug', 'Beta']  
#表示PonyDebugger庫(kù)只在工程設(shè)置為Debug時(shí)依賴(lài)(使用一種配置的寫(xiě)法)
pod 'PonyDebugger', :configuration => 'Debug'
  • subspecs語(yǔ)法
#表示只依賴(lài)QueryKit庫(kù)下的Attribute模塊(使用某個(gè)庫(kù)下的單個(gè)模塊寫(xiě)法)
pod 'QueryKit/Attribute'
#表示依賴(lài)QueryKit庫(kù)下的Attribute和QuerySet模塊(使用某個(gè)庫(kù)下的多個(gè)模塊寫(xiě)法)
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ǔ)法
#指定依賴(lài)的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ù)系奉,上面提過(guò)檬贰,有時(shí)可能會(huì)因?yàn)楸镜?code>pods索引庫(kù)不存在或者太舊導(dǎo) 致項(xiàng)目導(dǎo)致podfile中的某些依賴(lài)庫(kù)下載失敗。這時(shí)先通過(guò)pod search XXX 命令查找本地是否存在改庫(kù)缺亮。
    如果不存在改庫(kù)需要最好先執(zhí)行pod repo update 命令翁涤,更新本地索引庫(kù)。這個(gè)更新的過(guò)程比較漫長(zhǎng)萌踱,更新好之后葵礼,再執(zhí)行pod seach命令,這是如果你的庫(kù)無(wú)法搜索出來(lái)并鸵,那就是~/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)是最新的了,但是通過(guò)search_index.json這個(gè)還是索引不到粉铐,這就好比你買(mǎi)了一個(gè)第2016年的新字典疼约,但是還用著1998年老字典的查找目錄,新搜錄的東西根據(jù)老目錄肯定出不來(lái))蝙泼。這個(gè)庫(kù)索引Json文件比較大10多MB程剥,你可以刪除該Json。然后再執(zhí)行 pod search XXX,這樣就會(huì)自動(dòng)下載一個(gè)最新的庫(kù)索引文件了织鲸。 經(jīng)過(guò)上面的一些列操作后舔腾,基本不會(huì)出什么問(wèn)題了,如果發(fā)現(xiàn)工程因?yàn)橐驗(yàn)?code>pod庫(kù)的問(wèn)題還無(wú)法編譯通過(guò)搂擦,這是采用終極絕招稳诚,干掉podfile.lock文件、pods目錄瀑踢、.xcworkspace文件扳还,然后執(zhí)行pod install等待直到完成。
  • 沒(méi)有創(chuàng)建過(guò)pods索引庫(kù)需要pod repo setup橱夭。(可以到當(dāng)前用戶(hù)更目錄下的 .cocoapods目錄中查看是否存在 repo
  • Podfile.lock 它會(huì)記錄庫(kù)的版本信息氨距,當(dāng)pod update后版本庫(kù)的改動(dòng)會(huì)被記錄在這個(gè)文件中,當(dāng)然pod install執(zhí)行后如果本地庫(kù)沒(méi)有發(fā)生變化該文件是不會(huì)改變的棘劣,它可以防止第三方庫(kù)升級(jí)時(shí)造成的第三方庫(kù)版本不一致俏让。(協(xié)同開(kāi)發(fā)時(shí)很重要)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茬暇,隨后出現(xiàn)的幾起案子首昔,更是在濱河造成了極大的恐慌,老刑警劉巖糙俗,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勒奇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡臼节,警方通過(guò)查閱死者的電腦和手機(jī)撬陵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)网缝,“玉大人巨税,你說(shuō)我怎么就攤上這事》垭” “怎么了草添?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)扼仲。 經(jīng)常有香客問(wèn)我远寸,道長(zhǎng),這世上最難降的妖魔是什么屠凶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任驰后,我火速辦了婚禮,結(jié)果婚禮上矗愧,老公的妹妹穿的比我還像新娘灶芝。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布夜涕。 她就那樣靜靜地躺著犯犁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪女器。 梳的紋絲不亂的頭發(fā)上酸役,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音驾胆,去河邊找鬼涣澡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丧诺,可吹牛的內(nèi)容都是我干的暑塑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼锅必,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惕艳?” 一聲冷哼從身側(cè)響起搞隐,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎远搪,沒(méi)想到半個(gè)月后劣纲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谁鳍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年癞季,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倘潜。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绷柒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涮因,到底是詐尸還是另有隱情废睦,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布养泡,位于F島的核電站嗜湃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏澜掩。R本人自食惡果不足惜购披,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肩榕。 院中可真熱鬧刚陡,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哥童,卻和暖如春挺份,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贮懈。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工匀泊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朵你。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓各聘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抡医。 傳聞我的和親對(duì)象是個(gè)殘疾皇子躲因,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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

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