cocoa pods的安裝和使用

目錄

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的出現使得我們可以節省設置和更新第三方開源庫的時間。

在沒有使用CocoaPods以前,我需要:

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

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

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

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

常用命令一覽

1.先升級Gem? ? sudo gemupdate--system2.切換cocoapods的數據源? ? 【先刪除,再添加,查看】? ? gem sources--remove https://rubygems.org/gem sources -ahttp://ruby.taobao.org/? ? gem sources -l3.安裝cocoapods? ? sudo geminstallcocoapods4.將Podspec文件托管地址從github切換到國內的oschina? ? 【先刪除,再添加,再更新】? ? pod repo removemasterpod repoaddmasterhttp://git.oschina.net/akuandev/Specs.git? ? pod repoaddmasterhttps://gitcafe.com/akuandev/Specs.git? ? pod repoupdate5.設置pod倉庫? ? pod setup6.測試? ? 【如果有版本號,則說明已經安裝成功】? ? pod--version7.利用cocoapods來安裝第三方框架01進入要安裝框架的項目的.xcodeproj同級文件夾02在該文件夾中新建一個文件Podfile03在文件中告訴cocoapods需要安裝的框架信息? ? ? ? a.該框架支持的平臺? ? ? ? b.適用的iOS版本c.框架的名稱d.框架的版本8.安裝podinstall--no-repo-updatepodupdate--no-repo-update

一、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

Podfile 文件的使用方法官方已經更新,格式如下

platform:ios,"9.0"use_frameworks!target'BSBDJ'dopod"AFNetworking"pod"SDWebImage"pod"MJExtension"end

5、文件和指令說明

Podfile.lock文件

最后一次更新Pods時, 所有第三方框架的版本號

常用指令的區別

pod install

會根據Podfile.lock文件中列舉的版本號來安裝第三方框架

如果一開始Podfile.lock文件不存在, 就會按照Podfile文件列舉的版本號來安裝第三方框架

安裝框架之前, 默認會執行pod repo update指令

pod update

將所有第三方框架更新到最新版本, 并且創建一個新的Podfile.lock文件

安裝框架之前, 默認會執行pod repo update指令

pod install --no-repo-update

pod update --no-repo-update

安裝框架之前, 不會執行pod repo update指令

三、遭遇到的問題

出現錯誤提示.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的版本,寫這個限制和什么都不寫是一個效果,都表示使用最新版本

在學習CocoaPods和書寫這篇博文的過程我大量參考了唐巧的博客這篇博文,大家也可以在唐巧的博客中學習到更多的內容,也可以去往官方學習

深入理解 CocoaPodsCocoaPods最佳實踐探討

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

推薦閱讀更多精彩內容