Just a Computer Graphics Studio & My Life

專案越做越多、越做越大,肯定會使用到第三方套件,因為我們不想重新打造「輪子」,如此能夠加快開發速度,更能專注在專案核心需求上!

cocoapods13

於是我們想要有效率地使用第三方套件,就可以考慮使用CocoaPods這個工具。

話說前言

在開發iOS App時,我們從Xcode開始創建專案,使用Apple提供輔助開發的Framework套件外,總是會發現有許多功能開發不易,於是時常需要引用第三方開發的Open Source套件來輔助。 使用第三方Open Source套件要注意到授權的規範、版本的演進、目前有或沒有哪些功能、以及目前待辦事項。

遇到問題

當我們確定要引用某一第三方Library時,我們一直都是這麼做:選擇某一版本Library,直接下載回去本機端,放置在自己的專案中。這種方式的缺點是,與原來的版本控管失去連結,未來若想升級Library,每次都必須重新下載,如此才能完成更新。未來我們想要用某版本Library,還要花時間去搜尋。

cocoapods12

到GitHub搜尋並下載。

cocoapods11

放到本機端上專案資料夾中。

cocoapods10

拉至Xcode專案中使用。

CocoaPods起源

每種語言發展到某一階段,就會出現相應的依賴管理工具,或者是中央程式碼倉庫。比如:

  • Java: maven, Ivy
  • Ruby: gems
  • Python: pip, easy_install
  • Nodejs: npm

隨著iOS開發者的增多,業界也出現了為iOS開發提供依賴管理的工具,這個工具就是:CocoaPods

CocoaPods是一個負責管理iOS專案中第三方開源程式碼的工具。CocoaPods專案的源碼在Github上管理。該專案開始於2011/08/12,經過兩年半的發展,現在提交數已經超過3000次,並且活躍地持續更新中。

開發iOS專案難免會需要使用第三方開源庫,CocoaPods的發展使得我們可以節省設置和更新第三方開源庫的時間。

CocoaPods網站

http://cocoapods.org/

搜尋第三方套件是否在Cocoapods中。

搜尋第三方套件是否在Cocoapods中。

 如何使用

  • 開啓終端機
  • 輸入指令

$ [sudo] gem install cocoapods (安裝)
$ pod setup (設定)

  • 接著就能使用

$ pod help (幫助)

搜尋指令 [pod search]

  • $ pod search AFNetworking (搜尋AFNetworking)

-> AFNetworking (2.2.1) A delightful iOS and OS X networking framework. pod AFNetworking‘, ‘~> 2.2.1’
–Homepage: https://github.com/AFNetworking/AFNetworking
–Source: https://github.com/AFNetworking/AFNetworking.git
–Versions: 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 2.0.0, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0RC3, 1.0RC2, 1.0RC1, 1.0.1, 1.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1, 0.10.1, 0.10.0

建立指令檔 (Podfile)

方法一:終端機

$ vi Podfile

platform :ios, ‘6.0’ pod ‘AFNetworking’

cocoapods08

輸入所需資訊,注意格式要正確!

方法二:資料夾 路徑:專案母目錄

cocoapods07

資料夾中的Podfile檔。

cocoapods06

Xcode中專案原本的樣子。

安裝Library

  • $ pod install (安裝Library)

–Analyzing dependencies
–Downloading dependencies
–Installing AFNetworking (2.2.1)
–Generating Pods project
–Integrating client project
–[!] From now on use `HappyTest.xcworkspace`.

  • 之後必須開啟HappyTest.xcworkspace來開發專案
cocoapods05

資料夾中多出來的檔案。

cocoapods04

Xcode中專案多出許多項目,記得不要去動。

更新Library

  • $ pod outdated (檢查Library是否過期)

–No updates are available.

  • $ pod update (更新Library)

–Analyzing dependencies
–Downloading dependencies
–Using AFNetworking (2.2.1)
–Generating Pods project
–Integrating client project

增加Library & 改版Librabry

  • $ vi Podfile (使用VIM編輯名為Podfile的檔案)

–platform :ios, ‘6.0’
–pod ‘AFNetworking’, ‘~>2.1.0’
–pod ‘MBProgressHUD’

  • $ pod update (更新Library)

–Analyzing dependencies
–Downloading dependencies
–Installing AFNetworking (2.1.0)
–Using MBProgressHUD (0.8)
–Generating Pods project
–Integrating client project

cocoapods03

在Xcode中查看Podfile檔中的內容,確實出現更新的套件。

cocoapods02

Podfile.lock檔的內容,記錄著相依關係。

使用有用CocoaPods的開源

例:Canvas – Animate in Xcode without code

https://github.com/CanvasPod/Canvas
http://canvaspod.io/

說明:

The demo app in this project uses CocoaPods, please run pod install after you download this project, then open Canvas.xcworkspace.

cocoapods01

從GitHub下載,接著使用Cocoapods,到開啟專案編譯執行。

運作原理

研究CocoaPods的原理,它是將所有的依賴庫都放到一個名為Pods資料夾中,然後讓專案依賴Pods資料夾,如此,源碼管理工作都從專案移到了Pods資料夾中。技術細節有:

  • Pods資料夾最終會編譯成一個名為libPods.a的文件,專案只需要依賴這個.a檔即可。
  • 對於資源文件,CocoaPods提供了一個名為Pods-resources.sh的bash腳本,該腳本在每次專案編譯的時候都會執行,將第三方庫的各種資源文件複製到目標目錄中。
  • CocoaPods通過一個名為Pods.xcconfig檔來在編譯時設置所有的依賴和參數。

時常使用CocoaPods,你就會發現它相當方便呢!

投影片

2016/10/22更新:

不小心把Cocoapods更新到1.1.1,結果原本pod update指令就報錯,原來現在要加入Target的名字(例如:HappyTest),指令如下:

"

target :HappyTest do
end

post_install do |installer|
installer.pods_project.targets.each do |target|
puts #{target.name}
end
end

"

要加在哪呢?看這張圖試試看⋯⋯

Cocoapods 1.1.1 command.png

參考資料

廣告

Comments on: "[iOS] 使用 CocoaPods 管理第三方套件" (8)

  1. […] 持續使用Cocoapods來管理第三方套件,主要還是以Objective C來開發專案的我,有時候需要使用Swift的Open Source,才發現靜態庫、動態庫、Framework的區別要好好了解一下:P~ […]

    按讚數

  2. […] 同學可以參考這裡, 載入 CocoaPods 管理程式. 檔案體積有點大(>3GB), 第一次下載會花一些時間. […]

    Liked by 1 person

  3. […] 此時若有使用Cocoapods來管理第三方套件, […]

    按讚數

  4. […] App已經變得更加複雜且龐大,使用使用 CocoaPods 管理第三方套件已成為必要之事,然而這樣還是不夠,因為我們一個專案 […]

    按讚數

  5. […] Library ,安裝與使用的方式網路上已有許多的資源,基本安裝與使用可以看使用 CocoaPods 管理第三方套件,想更深入的瞭解 CocoaPods […]

    按讚數

  6. 請問一下,我最近在使用pods時出現一些問題,platform :ios, ‘6.0’這個地方,如果說我現在使用ios 8或是最新版的Xcode那這裡要改成platform :ios, ‘8.0’嗎?因為我的app在大樹的模擬器上都可以正常運作,唯獨在ipad Retina和ipad 2,這兩個模擬器上邊議會失敗,請問這要如何解決呢?

    按讚數

    • pods跟模擬器應該沒什麼關係才是。

      這行platform :ios, ‘7.0’表示你的平台為ios 7以上。

      若編譯失敗應該有錯誤訊息,可以google錯誤訊息看看。

      按讚數

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: