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ā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)在打開項目不是點擊 PodTest.xodeproj了,而是點擊?PodTest.xcworkspace

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

第三方庫會被編譯成靜態(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點即可:

使用?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.itdecent.cn/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就有點麻煩了,或許有其他方法。

另外,如果在編輯工程時不小心刪除了某個文件,如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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容