天天看點

CocoaPods的安裝和使用

引言:

CocoaPods是一個可以幫你集中管理第三方庫的開源項目,運作在Ruby的環境下,基于GitHub托管優勢,你可以很友善的查閱目前依賴于CocoaPods的資源.

并且,CocoaPods是可靠,穩定,安全的.可以為你在使用第三方庫資源時節省大部分的配置和部署時間.更專心的專注于Coding!

部署的環境:

硬體:Retina Macbook Pro 

軟體:OS X Mountain Lion 10.10.1

Ruby版本:2.2.0

參考文章:

1:如何安裝Ruby(如果打不開請使用百度快照)

<a target="_blank" href="http://www.zikercn.com/node/41">http://www.zikercn.com/node/41</a>

2:如何使用CocoaPods

<a target="_blank" href="http://blog.devtang.com/blog/2012/12/02/use-cocoapod-to-manage-ios-lib-dependency/">http://blog.devtang.com/blog/2012/12/02/use-cocoapod-to-manage-ios-lib-dependency/</a>

3:Ruby中國針對2.0.0釋出文章:

<a target="_blank" href="http://ruby-china.org/topics/8896">http://ruby-china.org/topics/8896</a>

4:如果安裝失敗,請參考下面兩貼

<a target="_blank" href="http://stackoverflow.com/questions/9626729/how-do-you-install-build-ruby-1-9-3-on-osx-lion">http://stackoverflow.com/questions/9626729/how-do-you-install-build-ruby-1-9-3-on-osx-lion</a>

<a target="_blank" href="http://stackoverflow.com/questions/14592945/cannot-compile-ruby-1-9-3/14594287#14594287">http://stackoverflow.com/questions/14592945/cannot-compile-ruby-1-9-3/14594287#14594287</a>

5:Use CocoaPods With Swift (在 Swift 中使用 CocoaPods)

<a target="_blank" href="http://andelf.github.io/blog/2014/06/23/use-cocoapods-with-swift/">http://andelf.github.io/blog/2014/06/23/use-cocoapods-with-swift/</a>

第一步:安裝Brew

第二步:更新Ruby:

通過Brew将Ruby更新到最新版本,OS X 已經自帶了Ruby不過版本偏低.

更新成功以後重新開機終端,并執行以下指令來檢查一下Ruby和gem目前使用的版本:

CocoaPods的安裝和使用

第三步:通過gem安裝CocoaPods

接下來開始安裝CocoaPods.在安裝之前,還需要将XCode裡的Command line工具安裝好.如下圖所示:

CocoaPods的安裝和使用

安裝成功後以後回到Shell,輸入如下指令:

指令:sudo gem install cocoapods

指令:pod setup

CocoaPods的安裝和使用

pod setup指令執行後原理是将Spec項目複制到目前使用者的.cocoapods\master目錄下,以後的查找、安裝使用都是基于該本地目錄的.

安裝成功後,就可以嘗試使用了,以後更新新版本的Spec項目隻需要再次執行pod setup即可

使用Search指令來看看你需要的第三方庫是否存在!

指令:pod search SDWebImage 

到此,CocoaPods的安裝就完成了.

第四步,使用CocoaPods

接下來,你需要建立一個主工程.建立成功以後,再次啟動終端, 利用cd指令進入到工程檔案夾内,此時需要建立一個特殊的文本檔案,指令如下:

指令: touch Podfile 建立

指令: open -e Podfile 打開

此時,Mac應該是自動打開記事本. 接下來就開始加入我們要使用的庫了.

示例:

上面的代碼中:指定了平台最低支援的版本

pod通過Search查到的庫 如果沒有指定版本号,那麼配置出來的版本是最新版.

對這個文本檔案儲存以後,執行如下指令:

指令:pod install 

在每次執行前請確定終端所處于的檔案夾目錄已經是目前目錄. 否則将安裝失敗.

另外本次成功安裝以後,如果 SDWebImage 的作者更新了它的庫并送出到了CocoaPods裡面,此時我們也想在項目中使用新版本的SDWebImage. 這個時候需要執行如下指令:

指令:pod update 

和pod install指令一樣 需要将終端所處于的檔案夾目錄是目前Podfile檔案所在的目錄

執行後,CocoaPods首次會建立一個同工程名的工作空間(xcworkspace). 以後就打開這個工作空間來進行接下來的開發工作.

這裡也證明了一點,以後新項目啟動時,應該先配置和部署CocoaPods.

另外,如果指定了某個開源庫的版本号,此時pod update 會忽略版本号, 是以需要使用pod install來安裝指定的版本

總結:

CocoaPods的部署與配置還是較為繁瑣的,博文流程中記錄的每一天都要去執行.不然都有可能産生失敗.

可能遇到的問題:

Date:2013-05-13 23:24:47

今天用CocaPods的 pod install 指令時 出現如下錯誤:

The `master` repo requires CocoaPods 0.18.1

Date:2014-02-12 17:19:48

今天用CocoaPods的pod update指令時 出現如下錯誤:

CocoaPods的安裝和使用

CocoaPods官方團隊對于此問題,專門寫了一篇文章來解決這個問題.

<a target="_blank" href="http://blog.cocoapods.org/Repairing-Our-Broken-Specs-Repository/">http://blog.cocoapods.org/Repairing-Our-Broken-Specs-Repository/</a>

Date:2014-03-13 12:33:46

The `master` repo requires CocoaPods 0.29.0

解決方案:

更新Gem,在終端輸入如下指令:

參考:

<a target="_blank" href="http://www.cnblogs.com/so-magic/p/3580100.html">http://www.cnblogs.com/so-magic/p/3580100.html</a>

Date:2014-04-14 21:47:08

今天在編譯真機版本調試時遇到了關于64位架構編譯不過去的問題.

參考以下資料解決問題:

<a target="_blank" href="http://stackoverflow.com/questions/18881986/integration-error-with-cocoapods-and-xcode5">http://stackoverflow.com/questions/18881986/integration-error-with-cocoapods-and-xcode5</a>

<a target="_blank" href="http://cameronspickert.com/2014/01/20/remove-the-arm64-architecture-from-cocoapods-targets.html">http://cameronspickert.com/2014/01/20/remove-the-arm64-architecture-from-cocoapods-targets.html</a>

題外話:

簡單的說,Spec就是每個包在CocoaPods中的配置檔案,其中包括Package的名字,版本号,每個版本對應的下載下傳位址,編譯時的參數等等。

在頁面上有介紹如何創新新的包,可以Fork該項目,然後通過pull request送出所建的新包。

附上一篇詳細的教程

<a target="_blank" href="http://ishalou.com/blog/2012/10/16/how-to-create-a-cocoapods-spec-file/">http://ishalou.com/blog/2012/10/16/how-to-create-a-cocoapods-spec-file/</a>

關于生成代碼文檔

詳細見我的另外一篇教程:

<a target="_blank" href="http://blog.csdn.net/ysy441088327/article/details/7661785">http://blog.csdn.net/ysy441088327/article/details/7661785</a>