cocoapods-安裝 使用 說明

目錄

CocoaPods簡介

一、CocoaPods 的安裝

1、更換 Gem 的源

2、更新升級 Gem 版本

3、安裝CocoaPods

4、更換repo鏡像為國內服務器

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

1、新建 Podfile 文件

2、編輯 Podfile 文件

3、執行導入命令

4、第三方庫更新

三、遭遇到的問題

四、原理和說明

五、更多

1、pod install提速

2、關于Podfile文件編輯時,第三方庫版本號的各種寫法

CocoaPods簡介

每種語言發展到一個階段,就會出現相應的依賴管理工具,例如Java語言的Maven,nodejs的npm。隨著iOS開發者的增多,業界也出現了為iOS程序提供依賴管理的工具,它的名字叫做:CocoaPods。

CocoaPods項目的源碼在Github上管理。該項目開始于2011年8月12日,經過多年發展,現在已經成為iOS開發事實上的依賴管理標準工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設置和更新第三方開源庫的時間。

在我開發猿題庫客戶端時,其使用了24個第三方開源庫。在沒有使用CocoaPods以前,我需要:

把這些第三方開源庫的源代碼文件復制到項目中,或者設置成git的submodule。

對于這些開源庫通常需要依賴系統的一些framework,我需要手工地將這些framework一一增加到項目依賴中,比如通常情況下,一個網絡庫就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。

對于某些開源庫,我還需要設置-licucore或者 -fno-objc-arc等編譯參數管理這些依賴包的更新。

這些體力活雖然簡單,但毫無技術含量并且浪費時間。在使用CocoaPods之后,我只需要將用到的第三方開源庫放到一個名為Podfile的文件中,然后執行pod install。CocoaPods就會自動將這些第三方開源庫的源碼下載下來,并且為我的工程設置好相應的系統依賴和編譯參數。

一、CocoaPods 的安裝

CocoaPods是用Ruby實現的,要想使用它首先需要有Ruby的環境。幸運的是OS X系統默認的已經可以運行Ruby了,因此我們只需要執行以下命令。

1、更換 Gem 的源

Gem是一個管理Ruby庫和程序的標準包,它通過Ruby Gem(如http://rubygems.org/)源來查找、安裝、升級和卸載軟件包

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

1-更換 Gem 的源為國內源.png

2、更新升級 Gem 版本

Gem是管理Ruby庫和程序的標準包,如果它的版本過低也可能導致安裝失敗,解決方案自然是升級Gem,執行下述命令即可:

// 更新升級gem- sudo gemupdate--system

2.1-更新升級 Gem 版本.png

2.2-更新升級 Gem 版本結果.png

3、安裝CocoaPods

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

3.1-安裝 CocoaPods.png

3.2-安裝 CocoaPods 結果.png

4、更換repo鏡像為國內服務器

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

一個叫akinliu的朋友在gitcafe和oschina上建立了CocoaPods索引庫的鏡像,因為gitcafe和oschina都是國內的服務器,所以在執行索引更新操作時,會快很多。如下操作可以將CocoaPods設置成使用gitcafe鏡像:

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

4.1-移除原有的 repo 鏡像服務器.png

4.2-添加 repo 鏡像國內服務器.png

4.3-更換repo鏡像為國內服務器結果.png

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

1、新建 Podfile 文件

使用時需要在你的項目根目錄下新建一個名為Podfile的文件,將依賴的庫名字依次列在文件中即可

//進入你的工程目錄$ cd /Users/peikua/Desktop/CocoaPodsDemo//創建Pods文件$ touch Podfile

5.1-在項目根目錄新建 Podfile 文件.png

2、編輯 Podfile 文件

假設我們想導入 AFNetworking ,進入http://cocoapods.org,搜索AFNetworking

5.2-查詢網站上的信息.png

5.3-根據信息編輯 Podfile 文件.png

3、執行導入命令

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

5.4-打開 Podfile 目錄執行導入命令.png

5.5-成功導入第三方庫的信息和一個 Warning.png

pod install命令執行成功后,會看到工程目錄下多出CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。再看看剛才執行完pod install命令打印出來的內容的最后一行:From now on use CocoaPodsDemo.xcworkspace.提示我們從現在起,我們需要使用CocoaPodsTest.xcworkspace文件來開發。

4、第三方庫更新

只需要在Podfile文件中添加相應的第三方庫信息,執行pod update命令即可。

6.1-假設已有兩個庫,新增一個庫.png

6.2-執行 pod update 命令進行更新.png

三、遭遇到的問題

出現錯誤提示.png

錯誤解決方法.png

//以后使用CocoaPods過程中出現了莫名其妙的問題,執行下面命令-sudo gem update --system-sudo gem install cocoapods-pod setup

四、原理和說明

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

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

對于資源文件,CocoaPods提供了一個名為Pods-resources.sh的bash腳本,該腳本在每次項目編譯的時候都會執行,將第三方庫的各種資源文件復制到目標目錄中。

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

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

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

4、CocoaPods通過一個名為Pods.xcconfig的文件來在編譯時設置所有的依賴和參數。

五、更多

1、pod install提速

每次執行pod install和pod update的時候,cocoapods都會默認更新一次spec倉庫。這是一個比較耗時的操作。在確認spec版本庫不需要更新時,給這兩個命令加一個參數跳過spec版本庫更新,可以明顯提高這兩個命令的執行速度。

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

2、關于Podfile文件編輯時,第三方庫版本號的各種寫法

pod ‘AFNetworking’//不顯式指定依賴庫版本,表示每次都獲取最新版本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的版本,相當于>=0.1.2并且<0.2.0pod ‘AFNetworking’, ‘~>0.1′//使用大于等于0.1但小于1.0的版本pod ‘AFNetworking’, ‘~>0′//高于0的版本,寫這個限制和什么都不寫是一個效果,都表示使用最新版本

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 項目組件化、平臺化是技術公司的共同目標,越來越多的技術公司推崇使用pod管理第三方庫以及私有組件,一方面使項目架構...
    swu_luo閱讀 22,264評論 0 39
  • Ruby 安裝 要安裝cocospods 首先需要安裝ruby,可以先安裝xcode,再安裝macport ,最后...
    山天大畜閱讀 1,897評論 0 1
  • 1.cd 你要上傳的項目的文件夾路徑 2.Git全局設置.git config --global user.nam...
    fighter0501閱讀 396評論 0 0
  • 自1月24日我從廣州坐高鐵回到長沙之后,感覺每天都在奔波,找不到什么方向。 說實話,現在城市與城市間的差別是越來越...
    呆鐘鐘閱讀 442評論 0 0