The 坑 of Xcode集成POD

哈哈哈?

首先說一下關(guān)于pod的命令語句

1. 在命令行中進(jìn)入到當(dāng)前的工程的文件夾

簡單說下命令行的幾個用法:

cd + 空格 + 文件名 = 進(jìn)入文件夾

cd + 空格 + .. = 返回上一級目錄

pwd 查看當(dāng)前目錄

2.打開?Podfile文件:open -e Podfile ?保存退出:commond+s

3.進(jìn)行編輯模式:vi?Podfile ??按下“i”吻贿,進(jìn)入編輯模式讥脐,把光標(biāo)移動到需要的位置梨睁,輸入下面的指令

例如:

target '你的項目名' do

pod 'AFNetworking', '~> 2.6'

pod 'ORStackView', '~> 3.0'

end(一定要加end,否則會報錯)

4.按下”esc”+”shift”+”;” ? ?或”esc”+“:” ?退出編輯模式

輸入“wq”,回車陶珠,退出vi編譯器

一:正文

1.為什么需要CocoaPods

在進(jìn)行iOS開發(fā)的時候,總免不了使用第三方的開源庫碉纺,比如SBJson徐裸、AFNetworking遣鼓、Reachability等等。使用這些庫的時候通常需要:

下載開源庫的源代碼并引入工程

向工程中添加開源庫使用到的framework

解決開源庫和開源庫以及開源庫和工程之間的依賴關(guān)系重贺、檢查重復(fù)添加的framework等問題

如果開源庫有更新的時候骑祟,還需要將工程中使用的開源庫刪除回懦,重新執(zhí)行前面的三個步驟,頓時頭都大了次企。怯晕。。

自從有了CocoaPods以后缸棵,這些繁雜的工作就不再需要我們親力親為了舟茶,只需要我們做好少量的配置工作,CocoaPods會為我們做好一切堵第!

2.什么是CocoaPods

CocoaPods是一個用來幫助我們管理第三方依賴庫的工具吧凉。它可以解決庫與庫之間的依賴關(guān)系,下載庫的源代碼型诚,同時通過創(chuàng)建一個Xcode的workspace來將這些第三方庫和我們的工程連接起來客燕,供我們開發(fā)使用鸳劳。

使用CocoaPods的目的是讓我們能自動化的狰贯、集中的、直觀的管理第三方開源庫赏廓。

3.核心組件

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

Cocoapods意義體現(xiàn)在兩個方面摸柄。第一,在引入第三方庫時它可以自動為我們完成各種各樣的配置既忆,包括配置編譯階段驱负、連接器選項、甚至是ARC環(huán)境下的-fno-objc-arc配置等患雇。第二跃脊,使用CocoaPods可以很方便地查找新的第三方庫,這些類庫是比較“標(biāo)準(zhǔn)的”苛吱,而不是網(wǎng)上隨便找到的酪术,這樣可以讓我們找到真正好用的類庫。

接下來我們將介紹CocoaPods的使用翠储。

CocoaPods的核心組件

CocoaPods是用Ruby寫的绘雁,并劃分成了若干個Gem包。

CocoaPods在解析執(zhí)行過程中最重要的幾個包的路徑分別是:CocoaPods/CocoaPods援所、CocoaPods/Core和CocoaPods/Xcodeproj庐舟。

CocoaPods / CocoaPod:這是面向用戶的組件,每當(dāng)執(zhí)行一個pod命令時住拭,這個組件將被激活挪略。它包括了所有實用CocoaPods的功能耻涛,并且還能調(diào)用其他gem包來執(zhí)行任務(wù)。

CocoaPods / Core:Core gem提供了與CocoaPods相關(guān)的文件(主要是podfile和podspecs)的處理瘟檩。

Podfile:該文件用于配置項目所需要的第三方庫抹缕,它可以被高度定制。本文中我們主要在這里做動作墨辛。

Podspec:該文件描述了一個庫將怎樣被添加進(jìn)工程中卓研。.podspec文件可以標(biāo)識該第三方庫所需要的源碼文件、依賴庫睹簇、編譯選項奏赘,以及其他第三方庫需要的配置。

CocoaPods / Xcodeproj:這個包負(fù)責(zé)處理工程文件太惠,它能創(chuàng)建以及修改.xcodeproj文件和.xcworkspace文件磨淌。它也可以作為一個獨(dú)立的包使用,當(dāng)你要編寫修改項目文件的腳本時凿渊,可以考慮使用CocoaPods/Xcodeproj梁只。

二、安裝

由于網(wǎng)上的教程基本都大同小異埃脏,但細(xì)節(jié)之處還不是很完善搪锣,所以借機(jī)會在這里補(bǔ)充下:

注:要使用CocoaPods,那就要下載安裝它彩掐,而下載安裝CocoaPods需要Ruby環(huán)境

1构舟、Ruby環(huán)境搭建

當(dāng)前安裝環(huán)境為Mac mini 10.8.5。Mac ?OS本身自帶Ruby堵幽,但還是更新一下保險狗超,因為我第一次安裝在沒有更新Ruby的情況下就失敗了。

a 查看下當(dāng)前ruby版本:打開終端輸入 ruby -v(確實安裝了朴下,不過用這個版本接下來工作失敗了努咐,所以更新下ruby)


ritekiMac-mini:PodTest?lucky$?ruby?-v

ruby1.8.7?(2012-02-08?patchlevel358)?[universal-darwin12.0]

ritekiMac-mini:PodTest?lucky$

b 更新ruby

終端輸入如下命令(把Ruby鏡像指向taobao,避免被墻桐猬,你懂得)

gem sources --remove https://rubygems.org/

gem sources -a https://ruby.taobao.org/

gem sources -l ?(用來檢查使用替換鏡像位置成功)


ritekiMac-mini:~?lucky$?gem?sources?--removehttps://rubygems.org/

https://rubygems.org/?removed?from?sources

ritekiMac-mini:~?lucky$?gem?sources?-ahttps://ruby.taobao.org/

https://ruby.taobao.org/?added?to?sources

ritekiMac-mini:~?lucky$?gem?sources?-l

***?CURRENTSOURCES?***

2麦撵、下載安裝CocoaPods

終端輸入:sudo gem install cocoapods


ritekiMac-mini:~?lucky$?sudo?gem?install?cocoapods

CHANGELOG:

##?0.32.1

#####?Bug?Fixes

*?Fixed?the?Podfile?`default_subspec`?attribute?in?nested?subspecs.

[Fabio?Pelosin][irrationalfab]

\?[#2050](https://github.com/CocoaPods/CocoaPods/issues/2050)

Successfully?installed?cocoapods-0.32.1

Installing?ri?documentation?for?cocoapods-0.32.1

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280:?warning:?conflicting?chdir?during?another?chdir?block

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287:?warning:?conflicting?chdir?during?another?chdir?block

Done?installing?documentation?for?cocoapods?after?10?seconds

1?gem?installed

這樣就下載安裝好了CocoaPods

3、使用CocoaPods

a ?新建一個項目溃肪,名字PodTest

b ?終端中免胃,cd到項目總目錄(注意:包含PodTest文件夾、PodTest.xcodeproj惫撰、PodTestTest的那個總目錄)


cd?/Users/lucky/Desktop/PodTest

c ?建立Podfile(配置文件)

接著上一步羔沙,終端輸入?vim Podfile

鍵盤輸入 i,進(jìn)入編輯模式厨钻,輸入

platform :ios, '7.0'

pod 'MBProgressHUD', '~> 0.8'

然后按Esc扼雏,并且輸入“ :”號進(jìn)入vim命令模式坚嗜,然后在冒號后邊輸入wq

注意:鍵盤輸入 :后,才能輸入wq诗充〔允撸回車后發(fā)現(xiàn)PodTest項目總目錄中多一個Podfile文件

首先進(jìn)入工程根目錄,然后執(zhí)行pod install命令蝴蜓,CocoaPods就開始為我們做下載源碼碟绑、配置依賴關(guān)系、引入需要的framework等一些列工作茎匠,命令的執(zhí)行結(jié)果打印出來如下:

查看項目根目錄:

注意:現(xiàn)在打開項目不是點(diǎn)擊 PodTest.xodeproj了格仲,而是點(diǎn)擊?PodTest.xcworkspace

對于工程發(fā)生的變化,有幾點(diǎn)需要說明:

第三方庫會被編譯成靜態(tài)庫供我們正真的工程使用

CocoaPods會將所有的第三方庫以target的方式組成一個名為Pods的工程诵冒,該工程就放在剛才新生成的Pods目錄下凯肋。整個第三方庫工程會生成一個名稱為libPods.a的靜態(tài)庫提供給我們自己的CocoaPodsTest工程使用。

我們的工程和第三方庫所在的工程會由一個新生成的workspace管理

為了方便我們直觀的管理工程和第三方庫汽馋,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理侮东,也就是我們剛才看到的CocoaPodsTest.xcworkspace文件。

原來的工程設(shè)置已經(jīng)被更改了惭蟋,這時候我們直接打開原來的工程文件去編譯就會報錯苗桂,只能使用新生成的workspace來進(jìn)行項目管理药磺。

打開項目后看到項目結(jié)構(gòu)并且測試一下:

在項目中引用剛才添加的第三方庫的頭文件告组,執(zhí)行編譯操作,果斷成功癌佩!

運(yùn)行結(jié)果:

補(bǔ)充:

1木缝、CocoaPods的基本安裝及使用都詳細(xì)的說明了,但還有一些補(bǔ)充围辙,當(dāng)需要同時導(dǎo)入多個第三方時候怎么辦 我碟?

這就需要修改Podfile了,就是用vim編輯的那個保存在項目根目錄中的文件姚建,修改完了Podfile文件矫俺,需要重新執(zhí)行一次pod install命令。

例如:

platform :ios

pod 'JSONKit', ? ? ? '~> 1.4'

pod 'AFNetworking',? '~> 2.0'

2掸冤、CocoaPods可以查找你想要的第三方庫

終端輸入命令:pod search UI

瘋了了厘托,我怎么查找這么大眾的關(guān)鍵字,好多庫~~

然后重新編輯Podfile文件稿湿,按照之前的步驟铅匹,把更多的庫都導(dǎo)入項目!

錯誤總結(jié)

1.執(zhí)行"pod install (如果終端出現(xiàn)updating local specs repositories,那么請用ctrl+c強(qiáng)制結(jié)束命令進(jìn)程,然后執(zhí)行?pod install --verbose --no-repo-update?或者?pod install --no-repo-update"

#pragma mark -?注意如果在pod install之后出現(xiàn)Creating shallow clone of spec repo `master-1` from `https://github.com/CocoaPods/Specs.git`卡死情況,就在執(zhí)行pod install之前執(zhí)行pod setup

2. 現(xiàn)在饺藤,你的所有第三方庫都已經(jīng)下載完成并且設(shè)置好了編譯參數(shù)和依賴包斑,你只需要記住如下?2點(diǎn)即可:

使用?CocoaPods生成的?.xcworkspace文件來打開工程流礁,而不是以前的?.xcodeproj?文件。

每次更改了?Podfile文件罗丰,你需要重新執(zhí)行一次"pod update命令神帅。(如果終端出現(xiàn)updating local specs repositories,那么請用ctrl+c強(qiáng)制結(jié)束命令進(jìn)程,然后執(zhí)行pod update --verbose --no-repo-update或者pod update --no-repo-update"

"pod setup時報錯解決辦法"

出錯:pod setup的時候報錯,?argumenterror , syntax error on line 4, col 0: `min:0.29.0`

解決方法如下:

1.命令行運(yùn)行

# -rf ~/.cocoapods/repos

# pod setup(這個我還是沒成功萌抵,報錯ruby里什么找不到文件枕稀,于是我更新ruby,如果你成功了谜嫉,就不用了)

2.更新ruby

xcode->preference->download里安裝Command Line Tools

安裝rvm:命令行里運(yùn)行

$ curl -L get.rvm.io | bash -s stable

等待萎坷,運(yùn)行

$ source ~/.bashrc

$ source ~/.bash_profile

查看安裝

$ rvm -v

升級ruby:

$ rvm install ruby 2.1.1

ruby升級好了,查看版本?$ ruby -v

3.我ruby安裝又失敗了沐兰,于是谷歌

Error running 'requirements_osx_port_update_system ruby-2.1.1',

根據(jù)一篇文章哆档,我又繼續(xù)了,命令行里

$ sudo port -v selfupdate

結(jié)果有出錯了住闯,$ sudo:port:command not faund

于是一番搜索瓜浸,

$ export PATH=$PATH:/opt/local/bin

$ source .profile

升級macports

$sudo port -v selfupdate

終于可以升級ruby了,

$ rvm install 2.1.1

成功比原,于是插佛,下一步

$ sudo gem install cocoapods

成功

4.重新運(yùn)行

$? pod setup

成功

關(guān)注:http://www.reibang.com/p/dfe970588f95

錯誤總結(jié)

使用CocoaPod出現(xiàn)-bash: pod: command not found ”的問題,倘若不想移除一遍已安裝的CocoaPods

先運(yùn)行

sudo gem install -n /usr/local/bin cocoapods

不行再運(yùn)行

sudo chmod +rx /usr/local/bin

在項目中移除CocoaPods

如果你覺得CocoaPods讓你的項目出現(xiàn)了問題量窘,不好用甚至是惡心雇寇,想將其從項目中徹底移除,也有方法:

1.刪除工程文件夾下的Podfile蚌铜、Podfile.lock和Pods文件夾锨侯。

2.刪除xcworkspace文件。

3.打開xcodeproj文件冬殃,刪除項目中的Pods文件夾及Pods.xcconfig引用和libpods.a:

4.打開Build Phases選項囚痴,刪除Check Pods Manifest.lock和Copy Pods Resources,以及Embeded Pods Frameworks:

5.完成审葬,編譯運(yùn)行深滚,無錯通過。

總結(jié)

從項目中移除某個類庫直接修改" Podfile "文件即可涣觉,但是移除整個CocoaPods就有點(diǎn)麻煩了痴荐,或許有其他方法。

另外旨枯,如果在編輯工程時不小心刪除了某個文件蹬昌,如Podfile.lock,那么我們就要用上面的方法先移除整個CocoaPods攀隔,然后重新建立Podfile和使用pod install命令重裝CocoaPods皂贩。

學(xué)習(xí)參考資源:https://www.cnblogs.com/oc-bowen/p/5251668.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栖榨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子明刷,更是在濱河造成了極大的恐慌婴栽,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辈末,死亡現(xiàn)場離奇詭異愚争,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挤聘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門轰枝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人组去,你說我怎么就攤上這事鞍陨。” “怎么了从隆?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵诚撵,是天一觀的道長。 經(jīng)常有香客問我键闺,道長寿烟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任辛燥,我火速辦了婚禮筛武,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘购桑。我一直安慰自己畅铭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布勃蜘。 她就那樣靜靜地躺著,像睡著了一般假残。 火紅的嫁衣襯著肌膚如雪缭贡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天辉懒,我揣著相機(jī)與錄音阳惹,去河邊找鬼。 笑死眶俩,一個胖子當(dāng)著我的面吹牛莹汤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颠印,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼纲岭,長吁一口氣:“原來是場噩夢啊……” “哼抹竹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起止潮,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤窃判,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后喇闸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袄琳,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年燃乍,在試婚紗的時候發(fā)現(xiàn)自己被綠了唆樊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡刻蟹,死狀恐怖窗轩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情座咆,我是刑警寧澤痢艺,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站介陶,受9級特大地震影響堤舒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哺呜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一舌缤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧某残,春花似錦国撵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至澳厢,卻和暖如春环础,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背剩拢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工线得, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人徐伐。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓贯钩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子角雷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

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

  • 項目組件化祸穷、平臺化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件谓罗,一方面使項目架構(gòu)...
    swu_luo閱讀 21,581評論 0 39
  • CocoaPods 是什么粱哼? CocoaPods 是一個負(fù)責(zé)管理 iOS 項目中第三方開源庫的工具。CocoaPo...
    朝洋閱讀 25,662評論 3 51
  • Ruby 安裝 要安裝cocospods 首先需要安裝ruby檩咱,可以先安裝xcode揭措,再安裝macport ,最后...
    山天大畜閱讀 1,846評論 0 1
  • 世界讀書日刻蚯,與蔣方舟姐姐合個影绊含。
    wbsy001閱讀 155評論 0 3
  • 對于春風(fēng)十里這首歌,沉醉炊汹。醉于深情卻模凌兩可的歌詞躬充,醉在心中的旋律,醉在無人能解讀的歲月讨便。 回到家中充甚,望著已經(jīng)94...
    沉默的牛牛閱讀 158評論 0 1