The 坑 of Xcode集成POD

哈哈哈?

首先說一下關于pod的命令語句

1. 在命令行中進入到當前的工程的文件夾

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

cd + 空格 + 文件名 = 進入文件夾

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

pwd 查看當前目錄

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

3.進行編輯模式:vi?Podfile ??按下“i”,進入編輯模式,把光標移動到需要的位置,輸入下面的指令

例如:

target '你的項目名' do

pod 'AFNetworking', '~> 2.6'

pod 'ORStackView', '~> 3.0'

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

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

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

一:正文

1.為什么需要CocoaPods

在進行iOS開發的時候,總免不了使用第三方的開源庫,比如SBJson、AFNetworking、Reachability等等。使用這些庫的時候通常需要:

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

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

解決開源庫和開源庫以及開源庫和工程之間的依賴關系、檢查重復添加的framework等問題

如果開源庫有更新的時候,還需要將工程中使用的開源庫刪除,重新執行前面的三個步驟,頓時頭都大了。。。

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

2.什么是CocoaPods

CocoaPods是一個用來幫助我們管理第三方依賴庫的工具。它可以解決庫與庫之間的依賴關系,下載庫的源代碼,同時通過創建一個Xcode的workspace來將這些第三方庫和我們的工程連接起來,供我們開發使用。

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

3.核心組件

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

Cocoapods意義體現在兩個方面。第一,在引入第三方庫時它可以自動為我們完成各種各樣的配置,包括配置編譯階段、連接器選項、甚至是ARC環境下的-fno-objc-arc配置等。第二,使用CocoaPods可以很方便地查找新的第三方庫,這些類庫是比較“標準的”,而不是網上隨便找到的,這樣可以讓我們找到真正好用的類庫。

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

CocoaPods的核心組件

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

CocoaPods在解析執行過程中最重要的幾個包的路徑分別是:CocoaPods/CocoaPods、CocoaPods/Core和CocoaPods/Xcodeproj。

CocoaPods / CocoaPod:這是面向用戶的組件,每當執行一個pod命令時,這個組件將被激活。它包括了所有實用CocoaPods的功能,并且還能調用其他gem包來執行任務。

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

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

Podspec:該文件描述了一個庫將怎樣被添加進工程中。.podspec文件可以標識該第三方庫所需要的源碼文件、依賴庫、編譯選項,以及其他第三方庫需要的配置。

CocoaPods / Xcodeproj:這個包負責處理工程文件,它能創建以及修改.xcodeproj文件和.xcworkspace文件。它也可以作為一個獨立的包使用,當你要編寫修改項目文件的腳本時,可以考慮使用CocoaPods/Xcodeproj。

二、安裝

由于網上的教程基本都大同小異,但細節之處還不是很完善,所以借機會在這里補充下:

注:要使用CocoaPods,那就要下載安裝它,而下載安裝CocoaPods需要Ruby環境

1、Ruby環境搭建

當前安裝環境為Mac mini 10.8.5。Mac ?OS本身自帶Ruby,但還是更新一下保險,因為我第一次安裝在沒有更新Ruby的情況下就失敗了。

a 查看下當前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,進入編輯模式,輸入

platform :ios, '7.0'

pod 'MBProgressHUD', '~> 0.8'

然后按Esc,并且輸入“ :”號進入vim命令模式,然后在冒號后邊輸入wq

注意:鍵盤輸入 :后,才能輸入wq。回車后發現PodTest項目總目錄中多一個Podfile文件

首先進入工程根目錄,然后執行pod install命令,CocoaPods就開始為我們做下載源碼、配置依賴關系、引入需要的framework等一些列工作,命令的執行結果打印出來如下:

查看項目根目錄:

注意:現在打開項目不是點擊 PodTest.xodeproj了,而是點擊?PodTest.xcworkspace

對于工程發生的變化,有幾點需要說明:

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

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

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

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

原來的工程設置已經被更改了,這時候我們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進行項目管理。

打開項目后看到項目結構并且測試一下:

在項目中引用剛才添加的第三方庫的頭文件,執行編譯操作,果斷成功!

運行結果:

補充:

1、CocoaPods的基本安裝及使用都詳細的說明了,但還有一些補充,當需要同時導入多個第三方時候怎么辦 ?

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

例如:

platform :ios

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

pod 'AFNetworking',? '~> 2.0'

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

終端輸入命令:pod search UI

瘋了了,我怎么查找這么大眾的關鍵字,好多庫~~

然后重新編輯Podfile文件,按照之前的步驟,把更多的庫都導入項目!

錯誤總結

1.執行"pod install (如果終端出現updating local specs repositories,那么請用ctrl+c強制結束命令進程,然后執行?pod install --verbose --no-repo-update?或者?pod install --no-repo-update"

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

2. 現在,你的所有第三方庫都已經下載完成并且設置好了編譯參數和依賴,你只需要記住如下?2點即可:

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

每次更改了?Podfile文件,你需要重新執行一次"pod update命令。(如果終端出現updating local specs repositories,那么請用ctrl+c強制結束命令進程,然后執行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.命令行運行

# -rf ~/.cocoapods/repos

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

2.更新ruby

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

安裝rvm:命令行里運行

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

等待,運行

$ 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',

根據一篇文章,我又繼續了,命令行里

$ sudo port -v selfupdate

結果有出錯了,$ 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.重新運行

$? pod setup

成功

關注:http://www.lxweimin.com/p/dfe970588f95

錯誤總結

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

先運行

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

不行再運行

sudo chmod +rx /usr/local/bin

在項目中移除CocoaPods

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

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.完成,編譯運行,無錯通過。

總結

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

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

學習參考資源:https://www.cnblogs.com/oc-bowen/p/5251668.html

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374

推薦閱讀更多精彩內容

  • 項目組件化、平臺化是技術公司的共同目標,越來越多的技術公司推崇使用pod管理第三方庫以及私有組件,一方面使項目架構...
    swu_luo閱讀 22,058評論 0 39
  • CocoaPods 是什么? CocoaPods 是一個負責管理 iOS 項目中第三方開源庫的工具。CocoaPo...
    朝洋閱讀 25,730評論 3 51
  • Ruby 安裝 要安裝cocospods 首先需要安裝ruby,可以先安裝xcode,再安裝macport ,最后...
    山天大畜閱讀 1,881評論 0 1
  • 世界讀書日,與蔣方舟姐姐合個影。
    wbsy001閱讀 159評論 0 3
  • 對于春風十里這首歌,沉醉。醉于深情卻模凌兩可的歌詞,醉在心中的旋律,醉在無人能解讀的歲月。 回到家中,望著已經94...
    沉默的牛牛閱讀 172評論 0 1