天天看點

CocoaPods的介紹、安裝、使用和原理目錄

目錄

2016.08更新:Podfile 格式更新

CocoaPods簡介

常用指令一覽

一、CocoaPods 的安裝

1、更換 Gem 的源

2、更新更新 Gem 版本

3、安裝CocoaPods

4、更換repo鏡像為國内伺服器

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

1、建立 Podfile 檔案

2、編輯 Podfile 檔案

3、執行導入指令

4、第三方庫更新

三、遭遇到的問題

四、原理和說明

五、更多

1、pod install提速

2、關于Podfile檔案編輯時,第三方庫版本号的各種寫法

2016.08更新:Podfile 格式更新

在1.0.0的 CocoaPods 版本更新後,Podfile 檔案的使用方法官方已經更新,格式如下

platform :ios, "9.0"

target 'BSBDJ' do pod "AFNetworking" pod "SDWebImage" pod "MJExtension" end                

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就會自動将這些第三方開源庫的源碼下載下傳下來,并且為我的工程設定好相應的系統依賴和編譯參數。

常用指令一覽
1.先更新Gem
    sudo gem update --system
                

一、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
           
CocoaPods的介紹、安裝、使用和原理目錄

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

2、更新更新 Gem 版本
Gem是管理Ruby庫和程式的标準包,如果它的版本過低也可能導緻安裝失敗,解決方案自然是更新Gem,執行下述指令即可:
// 更新更新gem
- sudo gem update --system                
CocoaPods的介紹、安裝、使用和原理目錄

2.1-更新更新 Gem 版本.png

CocoaPods的介紹、安裝、使用和原理目錄

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

3、安裝CocoaPods
// 安裝CocoaPods(OS X 10.11以前)
- sudo gem install cocoapods
// 安裝CocoaPods(                
CocoaPods的介紹、安裝、使用和原理目錄

3.1-安裝 CocoaPods.png

CocoaPods的介紹、安裝、使用和原理目錄

3.2-安裝 CocoaPods 結果.png

4、更換repo鏡像為國内伺服器

所有的項目的Podspec檔案都托管在https://github.com/CocoaPods/Specs。第一次執行pod setup時,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(開源中國較慢)
           
CocoaPods的介紹、安裝、使用和原理目錄

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

CocoaPods的介紹、安裝、使用和原理目錄

4.2-添加 repo 鏡像國内伺服器.png

CocoaPods的介紹、安裝、使用和原理目錄

4.3-更換repo鏡像為國内伺服器結果.png

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

1、建立 Podfile 檔案
使用時需要在你的項目根目錄下建立一個名為Podfile的檔案,将依賴的庫名字依次列在檔案中即可
//進入你的工程目錄
$ cd /Users/peikua/Desktop/CocoaPodsDemo  
//建立Pods檔案
$ touch Podfile
           
CocoaPods的介紹、安裝、使用和原理目錄

5.1-在項目根目錄建立 Podfile 檔案.png

2、編輯 Podfile 檔案
假設我們想導入 AFNetworking ,進入http://cocoapods.org,搜尋AFNetworking
CocoaPods的介紹、安裝、使用和原理目錄
5.2-查詢網站上的資訊.png
CocoaPods的介紹、安裝、使用和原理目錄
5.3-根據資訊編輯 Podfile 檔案.png
3、執行導入指令
CocoaPods的介紹、安裝、使用和原理目錄

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

CocoaPods的介紹、安裝、使用和原理目錄

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指令即可。
CocoaPods的介紹、安裝、使用和原理目錄
6.1-假設已有兩個庫,新增一個庫.png
CocoaPods的介紹、安裝、使用和原理目錄
6.2-執行 pod update 指令進行更新.png

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

platform :ios, "9.0"

target 'BSBDJ' do pod "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指令

三、遭遇到的問題

CocoaPods的介紹、安裝、使用和原理目錄

出現錯誤提示.png

CocoaPods的介紹、安裝、使用和原理目錄

錯誤解決方法.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版本庫更新,可以明顯提高這兩個指令的執行速度。

pod install --verbose --no-repo-update
pod update --verbose --no-repo-update                
2、關于Podfile檔案編輯時,第三方庫版本号的各種寫法
pod ‘AFNetworking’ //不顯式指定依賴庫版本,表示每次都擷取最新版本
pod ‘AFNetworking’, ‘                

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

深入了解 CocoaPods
CocoaPods最佳實踐探讨

文/Vinc(簡書作者)

原文連結:http://www.jianshu.com/p/3086df14ed08

著作權歸作者所有,轉載請聯系作者獲得授權,并标注“簡書作者”。

轉載于:https://www.cnblogs.com/luqinbin/p/5944959.html