cocoapods 使用教學
TRANSCRIPT
CocoaPods(可可豆莢)
第三方套件相依管理工具
2014/03/31
HappyMan
話說前言
• 在開發iOS App時,我們從Xcode開始創建專案,使用Apple提供輔助開發的Framework套件外,總是會發現有許多功能開發不易,於是時常需要引用第三方開發的Open Source套件來輔助。
• 使用第三方Open Source套件要注意到授權的規範、版本的演進、目前有或沒有哪些功能、以及目前待辦事項。
遇到問題
• 當我們確定要引用某一第三方Library時,我們一直都是這麼做:選擇某一版本Library,直接下載回去本機端,放置在自己的專案中。
• 這種方式的缺點是,與原來的版本控管失去連結,未來若想升級Library,每次都必須重新下載,如此才能完成更新。
• 未來我們想要用某版本Library,還要花時間去搜尋。
CocoaPods起源
• 每種語言發展到某一階段,就會出現相應的依賴管理工具,或者是中央程式碼倉庫。比如:
– Java: maven, Ivy
– Ruby: gems
– Python: pip, easy_install
– Nodejs: npm
• 隨著iOS開發者的增多,業界也出現了為iOS開發提供依賴管理的工具,這個工具就是:CocoaPods。
CocoaPods起源
• CocoaPods是一個負責管理iOS專案中第三方開源程式碼的工具。CocoaPods專案的源碼在Github上管理。該專案開始於2011/08/12,經過兩年半的發展,現在提交數已經超過3000次,並且活躍地持續更新中。
• 開發iOS專案難免會需要使用第三方開源庫,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'
• 方法二:資料夾
• 路徑:專案母目錄
在資料夾中
安裝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
接著出現
更新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
使用有用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.
運作原理
• 研究CocoaPods的原理,它是將所有的依賴庫都放到一個名為Pods資料夾中,然後讓專案依賴Pods資料夾,如此,源碼管理工作都從專案移到了Pods資料夾中。技術細節有:
– Pods資料夾最終會編譯成一個名為libPods.a的文件,專案只需要依賴這個.a檔即可。
– 對於資源文件,CocoaPods提供了一個名為Pods-resources.sh的bash腳本,該腳本在每次專案編譯的時候都會執行,將第三方庫的各種資源文件複製到目標目錄中。
– CocoaPods通過一個名為Pods.xcconfig檔來在編譯時設置所有的依賴和參數。
參考資料
• 官方網站http://cocoapods.org/
• CocoaPods:管理 Objective-C 專案裡頭各種 Library 關聯性最棒的方式http://tw.polydice.com/2012/07/04/cocoapods/
• 使用CocoaPods來做iOS程序的包依賴管理http://blog.devtang.com/blog/2012/12/02/use-cocoapod-to-manage-ios-lib-dependency/
參考資料
• 套件管理工具CocoaPods介紹http://claire-chang.com/1693-套件管理工具cocoapods介紹
• CocoaPods:一個Objective-C第三方庫的管理利器http://www.cocoachina.com/newbie/basic/2012/1123/5168.html
• CocoaPodshttp://tom19830924.blogspot.tw/2013/04/cocoapods.html
參考資料
• Cocoapods 好用的第三方套件管理http://4tyone.blogspot.tw/2013/09/cocoapods_4.html