【iOS開(kāi)發(fā)筆記】使用CocoaPods管理第三方

今年是我畢業(yè)的第一個(gè)年頭,現(xiàn)在的我還有夢(mèng)想腺怯,只是卻很少有時(shí)間再做夢(mèng),上半年開(kāi)發(fā)的新項(xiàng)目上線了一段時(shí)間了川无,前幾個(gè)周做了幾次更新呛占,最近總算開(kāi)始有些時(shí)間,想著把之前的東西總結(jié)一下懦趋,至少在以后給自己提供一些幫助晾虑,只是時(shí)間隔了這么久,很多東西的感覺(jué)和領(lǐng)悟也記不得了仅叫,想起什么寫什么帜篇,權(quán)當(dāng)給以后的自己留下一份小工具單了。

現(xiàn)在來(lái)寫第一部分诫咱,俗話說(shuō)笙隙,萬(wàn)事開(kāi)頭難,思來(lái)想去確實(shí)不知道從哪里開(kāi)始寫坎缭,剛好上周末時(shí)候蛋蛋來(lái)找我問(wèn)CocoaPods的使用竟痰,實(shí)在他來(lái)的突然签钩,也沒(méi)給他說(shuō)明白,就從這里開(kāi)始入手吧凯亮。

1.關(guān)于CocoaPods
我們?cè)陂_(kāi)發(fā)過(guò)程中肯定會(huì)用到很多第三方庫(kù)边臼,這些庫(kù)或者框架還有可能會(huì)依賴于其他的庫(kù)和框架,每次都要手動(dòng)導(dǎo)入假消,還要注意版本兼容性柠并,有時(shí)還需要配置環(huán)境變量,實(shí)在是麻煩富拗,還有可能會(huì)出錯(cuò)導(dǎo)致編譯失敗臼予,實(shí)在是惡心。
但是沒(méi)有啥辦法啃沪,大神們也許都是自己封裝庫(kù)和框架粘拾,但是對(duì)于我這種小菜,還是需要使用大量的第三方來(lái)增加我的開(kāi)發(fā)效率创千。
好在有了CocoaPods來(lái)做項(xiàng)目依賴工具缰雇。

2.安裝CocoaPods
開(kāi)始學(xué)習(xí)使用的時(shí)候,網(wǎng)上書上都說(shuō)了好多東西追驴,更新Ruby環(huán)境械哟,換源之類的,我實(shí)際使用時(shí)倒是很少遇到此類問(wèn)題殿雪,所以簡(jiǎn)單記錄一下使用暇咆。

第一步:找到終端這個(gè)自帶的應(yīng)用打開(kāi)。
第二步:執(zhí)行指令:$ sudo gem install cocoapods
第三步:上一指令運(yùn)行成功后丙曙,執(zhí)行指令:$ pod setup

這樣其實(shí)就可以了爸业,等著從CocoaPods的GitHub庫(kù)下載就可以了。
執(zhí)行第二步的時(shí)候亏镰,書上說(shuō)有的會(huì)出現(xiàn)報(bào)錯(cuò)扯旷,雖然沒(méi)遇到過(guò),不過(guò)萬(wàn)一哪天就見(jiàn)鬼了呢索抓,所以還是記錄一下薄霜。
換源指令:
$ sudo gem source --remove https://rubygems.org/
$ sudo gem source -a https://ruby.taobao.org/

3.使用CocoaPods搜索庫(kù)
這個(gè)大概兩種方法吧,一個(gè)是去網(wǎng)站上搜索纸兔,另一個(gè)就是再終端直接執(zhí)行命令搜索惰瓜。

第一種:網(wǎng)站搜索
網(wǎng)址:https://cocoapods.org/

搜索界面

直接復(fù)制提示框的內(nèi)容到項(xiàng)目里的Podfile文件里就可以了。

第二種:終端搜索
執(zhí)行指令:$ pod search AFNetworking
然后下面就把版本和要寫到Podfile的東西顯示出來(lái)了汉矿。

4.使用CocoaPods
使用網(wǎng)上都是通過(guò)終端或者自己在項(xiàng)目里新建一個(gè)Podfile出來(lái)崎坊,然后按照格式寫,再安裝洲拇,我習(xí)慣讓系統(tǒng)創(chuàng)建出來(lái)奈揍。

第一步:打開(kāi)終端
第二步:執(zhí)行指令:$ cd 你的項(xiàng)目的工程目錄
這里的工程目錄就是*.xcodeproj文件所在的地方曲尸,直接在文件夾找到這里,然后把上一級(jí)的文件夾直接拖到終端里男翰,路徑自己就出來(lái)了另患。
第三步:執(zhí)行指令:$ pod init
指令執(zhí)行成功后,會(huì)自動(dòng)生成一個(gè)Podfile文本文件蛾绎,可以直接打開(kāi)編輯昆箕。

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'Test' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for Test
  pod 'AFNetworking', '~> 3.0.4'

end

再do和end之間的地方寫你要導(dǎo)入的第三方的名稱和版本號(hào)就可以了,這里用的Objective-C租冠,所以就使用的靜態(tài)鏈接庫(kù)形勢(shì)鹏倘。
第四步:執(zhí)行指令:$ pod install
就可以了。

5.添加新的依賴庫(kù)
第一步:執(zhí)行指令:$ pod setup
習(xí)慣性先更新一下
第二步:打開(kāi)Podfile文件顽爹,修改do到end之間的內(nèi)容纤泵,保存。
第三步:執(zhí)行指令:$ pod install
又可以了镜粤。

6.其他的
1.使用CocoaPods之后以后記得打開(kāi)項(xiàng)目要打開(kāi)那個(gè)白色的*xcworkspace文件捏题。
2.如果項(xiàng)目中導(dǎo)入頭文件時(shí)候找不到的話,需要設(shè)置一下路徑
選擇工程Target -> Build Settings -> 搜索header,找到"User Header Search Paths" -> 新增一個(gè)值"$(PODS_ROOT)",并且選擇”recursive”肉渴,這樣X(jué)code就會(huì)在項(xiàng)目目錄中遞歸搜索文件且會(huì)自動(dòng)找到Pods文件,頭文件自動(dòng)補(bǔ)齊功能馬上就好使了公荧。

7.關(guān)于pod的install和update的問(wèn)題
對(duì)于初學(xué)者來(lái)說(shuō),使用 pod install 或者 pod update 并不會(huì)影響大局黄虱,所以有的人就習(xí)慣了一直沿用自己的更新方式。下面就簡(jiǎn)單介紹一下這兩種更新方式的區(qū)別庸诱。

(1)pod install:
這個(gè)是第一次在工程里面使用pods的時(shí)候使用捻浦,并且,也是每次你編輯你的Podfile(添加桥爽、移除朱灿、更新)的時(shí)候使用。

每次運(yùn)行pod install命令的時(shí)候钠四,在下載盗扒、安裝新的庫(kù)的同時(shí),也會(huì)把你安裝的每個(gè)庫(kù)的版本都寫在了Podfile.lock文件里面缀去。這個(gè)文件記錄你每個(gè)安裝庫(kù)的版本號(hào)侣灶,并且鎖定了這些版本。

當(dāng)你使用pod install它只解決了pods里面缕碎,但不在Podfile.lock文件里面的那些庫(kù)之間的依賴褥影。對(duì)于在Podfile.lock里面所列出的那些庫(kù),會(huì)下載在Podfile.lock里面明確的版本咏雌,并不會(huì)去檢查是否該庫(kù)有新的版本凡怎。

(2)pod outdated:
當(dāng)你運(yùn)行pod outdated命令校焦,CocoaPods會(huì)列出那些所有較Podfile.lock里面有新版本的庫(kù)(那些當(dāng)前被安裝著的庫(kù)的版本)。這個(gè)意思就是统倒,如果你運(yùn)行pod update PODNAME寨典,如果這個(gè)庫(kù)有新的版本,并且新版本仍然符合在Podfile里的限制房匆,它就會(huì)被更新耸成。

(3)pod update:
當(dāng)你運(yùn)行 pod update PODNAME 命令時(shí),CocoaPods會(huì)幫你更新到這個(gè)庫(kù)的新版本坛缕,而不需要考慮Podfile.lock里面的限制墓猎,它會(huì)更新到這個(gè)庫(kù)盡可能的新版本,只要符合Podfile里面的版本限制赚楚。

如果你運(yùn)行pod update毙沾,后面沒(méi)有跟庫(kù)的名字,CocoaPods就會(huì)更新每一個(gè)Podfile里面的庫(kù)到盡可能的最新版本宠页。

(4)總結(jié):
你應(yīng)該使用pod update PODNAME去只更新某個(gè)特定的庫(kù)(檢查是否有新版本左胞,并盡可能更新到新的版本)。對(duì)應(yīng)的举户,你應(yīng)該使用pod install烤宙,這個(gè)命令不會(huì)更新那些已經(jīng)安裝了的庫(kù)。

當(dāng)你在你的Podfile里面添加了一個(gè)庫(kù)的時(shí)候俭嘁,你應(yīng)該使用pod install躺枕,而不是pod update,這樣既安裝了這個(gè)庫(kù)供填,也不需要去更新其它的已安裝庫(kù)拐云。

你應(yīng)該使用pod update去更新某個(gè)特定的庫(kù),或者所有的庫(kù)(在Podfile的限制中)近她。

同時(shí)叉瘩,記得在commit提交代碼到遠(yuǎn)程倉(cāng)庫(kù)時(shí),帶上Podfile.lock文件粘捎。

8.更新Ruby
有時(shí)候使用 ''pod install''時(shí)會(huì)出現(xiàn)問(wèn)題薇缅。

-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory

很簡(jiǎn)單,我們更新下Ruby環(huán)境就好了攒磨。
打開(kāi)終端泳桦,然后:
(1)查看當(dāng)前Ruby版本。

ruby -v

(2)更新Ruby娩缰。

gem sources --remove https://rubygems.org/ 
gem sources -a https://gems.ruby-china.com/ (把Ruby鏡像指向taobao蓬痒,避免被墻,現(xiàn)已更新為最新)
gem sources -l  (用來(lái)檢查使用替換鏡像位置成功)

(3)下載安裝CocoaPods。

sudo gem install cocoapods
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梧奢,一起剝皮案震驚了整個(gè)濱河市狱掂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亲轨,老刑警劉巖趋惨,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異惦蚊,居然都是意外死亡器虾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門蹦锋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)兆沙,“玉大人,你說(shuō)我怎么就攤上這事莉掂「鹌裕” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵憎妙,是天一觀的道長(zhǎng)库正。 經(jīng)常有香客問(wèn)我,道長(zhǎng)厘唾,這世上最難降的妖魔是什么褥符? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮抚垃,結(jié)果婚禮上喷楣,老公的妹妹穿的比我還像新娘。我一直安慰自己鹤树,他們只是感情好铣焊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著魂迄,像睡著了一般粗截。 火紅的嫁衣襯著肌膚如雪惋耙。 梳的紋絲不亂的頭發(fā)上捣炬,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音绽榛,去河邊找鬼湿酸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛灭美,可吹牛的內(nèi)容都是我干的推溃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼届腐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼铁坎!你這毒婦竟也來(lái)了蜂奸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤硬萍,失蹤者是張志新(化名)和其女友劉穎扩所,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體朴乖,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祖屏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了买羞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袁勺。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖畜普,靈堂內(nèi)的尸體忽然破棺而出期丰,到底是詐尸還是另有隱情,我是刑警寧澤漠嵌,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布咐汞,位于F島的核電站,受9級(jí)特大地震影響儒鹿,放射性物質(zhì)發(fā)生泄漏化撕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一约炎、第九天 我趴在偏房一處隱蔽的房頂上張望植阴。 院中可真熱鬧,春花似錦圾浅、人聲如沸掠手。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喷鸽。三九已至,卻和暖如春灸拍,著一層夾襖步出監(jiān)牢的瞬間做祝,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工鸡岗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留混槐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓轩性,卻偏偏與公主長(zhǎng)得像声登,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 項(xiàng)目組件化悯嗓、平臺(tái)化是技術(shù)公司的共同目標(biāo)件舵,越來(lái)越多的技術(shù)公司推崇使用pod管理第三方庫(kù)以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 21,485評(píng)論 0 39
  • 一. CocoaPods的介紹 什么是CocoaPods脯厨?CocoaPods是一個(gè)負(fù)責(zé)管理iOS項(xiàng)目中第三方開(kāi)源庫(kù)...
    輝712閱讀 3,913評(píng)論 0 7
  • 兔小白是白小兔閱讀 130評(píng)論 0 0
  • 男:笨蛋才會(huì)這么熱的天來(lái)找你 女:那你就不要來(lái)啊 男:笨蛋才會(huì)一直等你 女:那你就不要等啊 男:笨蛋才會(huì)不停地打電...
    小痞子一個(gè)閱讀 369評(píng)論 0 3
  • 還記得上次在簡(jiǎn)書上寫東西也是在深夜芦圾,這次也是在深夜。也許是因?yàn)槲腋矚g有月光的地方俄认,也許是因?yàn)橹挥型砩喜艜?huì)看到一閃...
    煙嵐出云岫閱讀 276評(píng)論 3 0