cocoapods-安裝 使用 說(shuō)明

目錄

CocoaPods簡(jiǎn)介

一、CocoaPods 的安裝

1、更換 Gem 的源

2、更新升級(jí) Gem 版本

3、安裝CocoaPods

4、更換repo鏡像為國(guó)內(nèi)服務(wù)器

二、CocoaPods 的使用(圖和文字有細(xì)微的出入)

1、新建 Podfile 文件

2、編輯 Podfile 文件

3、執(zhí)行導(dǎo)入命令

4、第三方庫(kù)更新

三、遭遇到的問(wèn)題

四、原理和說(shuō)明

五、更多

1、pod install提速

2、關(guān)于Podfile文件編輯時(shí),第三方庫(kù)版本號(hào)的各種寫(xiě)法

CocoaPods簡(jiǎn)介

每種語(yǔ)言發(fā)展到一個(gè)階段,就會(huì)出現(xiàn)相應(yīng)的依賴管理工具,例如Java語(yǔ)言的Maven,nodejs的npm。隨著iOS開(kāi)發(fā)者的增多,業(yè)界也出現(xiàn)了為iOS程序提供依賴管理的工具,它的名字叫做:CocoaPods。

CocoaPods項(xiàng)目的源碼在Github上管理。該項(xiàng)目開(kāi)始于2011年8月12日,經(jīng)過(guò)多年發(fā)展,現(xiàn)在已經(jīng)成為iOS開(kāi)發(fā)事實(shí)上的依賴管理標(biāo)準(zhǔn)工具。開(kāi)發(fā)iOS項(xiàng)目不可避免地要使用第三方開(kāi)源庫(kù),CocoaPods的出現(xiàn)使得我們可以節(jié)省設(shè)置和更新第三方開(kāi)源庫(kù)的時(shí)間。

在我開(kāi)發(fā)猿題庫(kù)客戶端時(shí),其使用了24個(gè)第三方開(kāi)源庫(kù)。在沒(méi)有使用CocoaPods以前,我需要:

把這些第三方開(kāi)源庫(kù)的源代碼文件復(fù)制到項(xiàng)目中,或者設(shè)置成git的submodule。

對(duì)于這些開(kāi)源庫(kù)通常需要依賴系統(tǒng)的一些framework,我需要手工地將這些framework一一增加到項(xiàng)目依賴中,比如通常情況下,一個(gè)網(wǎng)絡(luò)庫(kù)就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。

對(duì)于某些開(kāi)源庫(kù),我還需要設(shè)置-licucore或者 -fno-objc-arc等編譯參數(shù)管理這些依賴包的更新。

這些體力活雖然簡(jiǎn)單,但毫無(wú)技術(shù)含量并且浪費(fèi)時(shí)間。在使用CocoaPods之后,我只需要將用到的第三方開(kāi)源庫(kù)放到一個(gè)名為Podfile的文件中,然后執(zhí)行pod install。CocoaPods就會(huì)自動(dòng)將這些第三方開(kāi)源庫(kù)的源碼下載下來(lái),并且為我的工程設(shè)置好相應(yīng)的系統(tǒng)依賴和編譯參數(shù)。

一、CocoaPods 的安裝

CocoaPods是用Ruby實(shí)現(xiàn)的,要想使用它首先需要有Ruby的環(huán)境。幸運(yùn)的是OS X系統(tǒng)默認(rèn)的已經(jīng)可以運(yùn)行Ruby了,因此我們只需要執(zhí)行以下命令。

1、更換 Gem 的源

Gem是一個(gè)管理Ruby庫(kù)和程序的標(biāo)準(zhǔn)包,它通過(guò)Ruby Gem(如http://rubygems.org/)源來(lái)查找、安裝、升級(jí)和卸載軟件包

// 1.移除掉原有的源(服務(wù)器在國(guó)外,速度較慢)- gem sources --remove https://rubygems.org/// 2.等有反應(yīng)之后再敲入以下命令(添加國(guó)內(nèi)的源,原先是 http://ruby.taobao.org/ ,現(xiàn)在淘寶上的ruby鏡像換成https了)- gem sources -a https://ruby.taobao.org/// 3.驗(yàn)證是否替換成功- gem sources -l

1-更換 Gem 的源為國(guó)內(nèi)源.png

2、更新升級(jí) Gem 版本

Gem是管理Ruby庫(kù)和程序的標(biāo)準(zhǔn)包,如果它的版本過(guò)低也可能導(dǎo)致安裝失敗,解決方案自然是升級(jí)Gem,執(zhí)行下述命令即可:

// 更新升級(jí)gem- sudo gemupdate--system

2.1-更新升級(jí) Gem 版本.png

2.2-更新升級(jí) Gem 版本結(jié)果.png

3、安裝CocoaPods

// 安裝CocoaPods(OS X 10.11以前)- sudo geminstallcocoapods// 安裝CocoaPods(10.11后蘋(píng)果升級(jí)了安全策略)- sudo geminstall-n/usr/local/bincocoapods

3.1-安裝 CocoaPods.png

3.2-安裝 CocoaPods 結(jié)果.png

4、更換repo鏡像為國(guó)內(nèi)服務(wù)器

所有的項(xiàng)目的Podspec文件都托管在https://github.com/CocoaPods/Specs。第一次執(zhí)行podsetup時(shí),CocoaPods會(huì)將這些podspec索引文件更新到本地的 ~/.cocoapods/目錄下,這個(gè)索引文件比較大,有80M左右。所以第一次更新時(shí)非常慢,筆者(唐巧)就更新了將近1個(gè)小時(shí)才完成。

一個(gè)叫akinliu的朋友在gitcafe和oschina上建立了CocoaPods索引庫(kù)的鏡像,因?yàn)間itcafe和oschina都是國(guó)內(nèi)的服務(wù)器,所以在執(zhí)行索引更新操作時(shí),會(huì)快很多。如下操作可以將CocoaPods設(shè)置成使用gitcafe鏡像:

// 1.移除原有服務(wù)器- pod repo remove master// 2.添加境內(nèi)服務(wù)器(建議使用第一個(gè))- pod repo add master https://gitcafe.com/akuandev/Specs.git- pod repo add master http://git.oschina.net/akuandev/Specs.git(開(kāi)源中國(guó)較慢)

4.1-移除原有的 repo 鏡像服務(wù)器.png

4.2-添加 repo 鏡像國(guó)內(nèi)服務(wù)器.png

4.3-更換repo鏡像為國(guó)內(nèi)服務(wù)器結(jié)果.png

二、CocoaPods 的使用(圖和文字有細(xì)微的出入)

1、新建 Podfile 文件

使用時(shí)需要在你的項(xiàng)目根目錄下新建一個(gè)名為Podfile的文件,將依賴的庫(kù)名字依次列在文件中即可

//進(jìn)入你的工程目錄$ cd /Users/peikua/Desktop/CocoaPodsDemo//創(chuàng)建Pods文件$ touch Podfile

5.1-在項(xiàng)目根目錄新建 Podfile 文件.png

2、編輯 Podfile 文件

假設(shè)我們想導(dǎo)入 AFNetworking ,進(jìn)入http://cocoapods.org,搜索AFNetworking

5.2-查詢網(wǎng)站上的信息.png

5.3-根據(jù)信息編輯 Podfile 文件.png

3、執(zhí)行導(dǎo)入命令

$cd /Users/peikua/Desktop/CocoaPodsDemo$pod install

5.4-打開(kāi) Podfile 目錄執(zhí)行導(dǎo)入命令.png

5.5-成功導(dǎo)入第三方庫(kù)的信息和一個(gè) Warning.png

pod install命令執(zhí)行成功后,會(huì)看到工程目錄下多出CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。再看看剛才執(zhí)行完pod install命令打印出來(lái)的內(nèi)容的最后一行:From now on use CocoaPodsDemo.xcworkspace.提示我們從現(xiàn)在起,我們需要使用CocoaPodsTest.xcworkspace文件來(lái)開(kāi)發(fā)。

4、第三方庫(kù)更新

只需要在Podfile文件中添加相應(yīng)的第三方庫(kù)信息,執(zhí)行pod update命令即可。

6.1-假設(shè)已有兩個(gè)庫(kù),新增一個(gè)庫(kù).png

6.2-執(zhí)行 pod update 命令進(jìn)行更新.png

三、遭遇到的問(wèn)題

出現(xiàn)錯(cuò)誤提示.png

錯(cuò)誤解決方法.png

//以后使用CocoaPods過(guò)程中出現(xiàn)了莫名其妙的問(wèn)題,執(zhí)行下面命令-sudo gem update --system-sudo gem install cocoapods-pod setup

四、原理和說(shuō)明

1、第三方庫(kù)會(huì)被編譯成.a靜態(tài)庫(kù)供我們真正的工程使用。

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

對(duì)于資源文件,CocoaPods提供了一個(gè)名為Pods-resources.sh的bash腳本,該腳本在每次項(xiàng)目編譯的時(shí)候都會(huì)執(zhí)行,將第三方庫(kù)的各種資源文件復(fù)制到目標(biāo)目錄中。

2、我們的工程和第三方庫(kù)所在的工程會(huì)由一個(gè)新生成的workspace管理

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

3、原來(lái)的工程設(shè)置已經(jīng)被更改了,這時(shí)候我們直接打開(kāi)原來(lái)的工程文件去編譯就會(huì)報(bào)錯(cuò),只能使用新生成的workspace來(lái)進(jìn)行項(xiàng)目管理。

4、CocoaPods通過(guò)一個(gè)名為Pods.xcconfig的文件來(lái)在編譯時(shí)設(shè)置所有的依賴和參數(shù)。

五、更多

1、pod install提速

每次執(zhí)行pod install和pod update的時(shí)候,cocoapods都會(huì)默認(rèn)更新一次spec倉(cāng)庫(kù)。這是一個(gè)比較耗時(shí)的操作。在確認(rèn)spec版本庫(kù)不需要更新時(shí),給這兩個(gè)命令加一個(gè)參數(shù)跳過(guò)spec版本庫(kù)更新,可以明顯提高這兩個(gè)命令的執(zhí)行速度。

podinstall--verbose --no-repo-updatepodupdate--verbose --no-repo-update

2、關(guān)于Podfile文件編輯時(shí),第三方庫(kù)版本號(hào)的各種寫(xiě)法

pod ‘AFNetworking’//不顯式指定依賴庫(kù)版本,表示每次都獲取最新版本pod ‘AFNetworking’, ‘2.0’//只使用2.0版本pod ‘AFNetworking’, ‘>2.0′//使用高于2.0的版本pod ‘AFNetworking’, ‘>=2.0′//使用大于或等于2.0的版本pod ‘AFNetworking’, ‘<2.0′//使用小于2.0的版本pod ‘AFNetworking’, ‘<=2.0′//使用小于或等于2.0的版本pod ‘AFNetworking’, ‘~>0.1.2′//使用大于等于0.1.2但小于0.2的版本,相當(dāng)于>=0.1.2并且<0.2.0pod ‘AFNetworking’, ‘~>0.1′//使用大于等于0.1但小于1.0的版本pod ‘AFNetworking’, ‘~>0′//高于0的版本,寫(xiě)這個(gè)限制和什么都不寫(xiě)是一個(gè)效果,都表示使用最新版本

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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