SlideShare a Scribd company logo
1 of 24
Download to read offline
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的發展使得我們可以節省設置和
更新第三方開源庫的時間。
CocoaPods網站
• http://cocoapods.org/
如何使用
• 開啓終端機
• 輸入指令
– $ [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/11
23/5168.html
• CocoaPods
http://tom19830924.blogspot.tw/2013/04/cocoapo
ds.html
參考資料
• Cocoapods 好用的第三方套件管理
http://4tyone.blogspot.tw/2013/09/cocoapods_4.ht
ml

More Related Content

Similar to CocoaPods 使用教學

Docker技术介绍
Docker技术介绍Docker技术介绍
Docker技术介绍LI jeanphorn
 
Keyboard Extension sharing
Keyboard Extension sharingKeyboard Extension sharing
Keyboard Extension sharingGrady Zhuo
 
炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建Johnny Sung
 
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Justin Lin
 
Google app engine安裝教學
Google app engine安裝教學Google app engine安裝教學
Google app engine安裝教學勝億 曾
 
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 StartupSteve Luo
 
資訊科技報告 自由軟體與資訊產業的未來
資訊科技報告 自由軟體與資訊產業的未來資訊科技報告 自由軟體與資訊產業的未來
資訊科技報告 自由軟體與資訊產業的未來p085158
 
Phonegap入門
Phonegap入門Phonegap入門
Phonegap入門Roy Chen
 
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)My own sweet home!
 
Crashlytics 使用教學
Crashlytics 使用教學Crashlytics 使用教學
Crashlytics 使用教學ShengWen Chiou
 
120720 cosa software intro
120720 cosa software intro120720 cosa software intro
120720 cosa software introSitg Yao
 
App inventor 1
App inventor 1App inventor 1
App inventor 1Roy Wang
 
打造你專屬的Xcode plugin
打造你專屬的Xcode plugin打造你專屬的Xcode plugin
打造你專屬的Xcode pluginYuhua Chen
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理Shengyou Fan
 
Enterprise connect
Enterprise connectEnterprise connect
Enterprise connectthinkinlamp
 
J frog live demo ver4
J frog live demo   ver4J frog live demo   ver4
J frog live demo ver4Linktech
 

Similar to CocoaPods 使用教學 (20)

iOS
iOSiOS
iOS
 
AppleDoc 使用教學
AppleDoc 使用教學AppleDoc 使用教學
AppleDoc 使用教學
 
Docker技术介绍
Docker技术介绍Docker技术介绍
Docker技术介绍
 
Keyboard Extension sharing
Keyboard Extension sharingKeyboard Extension sharing
Keyboard Extension sharing
 
炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建
 
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
Google app engine安裝教學
Google app engine安裝教學Google app engine安裝教學
Google app engine安裝教學
 
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 Startup
 
資訊科技報告 自由軟體與資訊產業的未來
資訊科技報告 自由軟體與資訊產業的未來資訊科技報告 自由軟體與資訊產業的未來
資訊科技報告 自由軟體與資訊產業的未來
 
Phonegap入門
Phonegap入門Phonegap入門
Phonegap入門
 
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
 
Crashlytics 使用教學
Crashlytics 使用教學Crashlytics 使用教學
Crashlytics 使用教學
 
120720 cosa software intro
120720 cosa software intro120720 cosa software intro
120720 cosa software intro
 
App inventor 1
App inventor 1App inventor 1
App inventor 1
 
打造你專屬的Xcode plugin
打造你專屬的Xcode plugin打造你專屬的Xcode plugin
打造你專屬的Xcode plugin
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
Enterprise connect
Enterprise connectEnterprise connect
Enterprise connect
 
J frog live demo ver4
J frog live demo   ver4J frog live demo   ver4
J frog live demo ver4
 
Android工作坊
Android工作坊Android工作坊
Android工作坊
 

More from ShengWen Chiou

Xamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryXamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryShengWen Chiou
 
Xamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryXamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryShengWen Chiou
 
What’s New In watch OS
What’s New In watch OSWhat’s New In watch OS
What’s New In watch OSShengWen Chiou
 
Symbolicate Crash 使用教學
Symbolicate Crash 使用教學Symbolicate Crash 使用教學
Symbolicate Crash 使用教學ShengWen Chiou
 
Apple Watch Specifications
Apple Watch SpecificationsApple Watch Specifications
Apple Watch SpecificationsShengWen Chiou
 
Apple Watch UI Elements
Apple Watch UI ElementsApple Watch UI Elements
Apple Watch UI ElementsShengWen Chiou
 
Apple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesApple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesShengWen Chiou
 
Parental Gate 使用教學
Parental Gate 使用教學Parental Gate 使用教學
Parental Gate 使用教學ShengWen Chiou
 

More from ShengWen Chiou (19)

iOS Extension
iOS ExtensioniOS Extension
iOS Extension
 
FMDB 研究
FMDB 研究FMDB 研究
FMDB 研究
 
Realm 研究
Realm 研究Realm 研究
Realm 研究
 
DBAccess 研究
DBAccess 研究DBAccess 研究
DBAccess 研究
 
Xamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryXamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class Library
 
Xamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryXamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class Library
 
iBeacon 相關應用
iBeacon 相關應用iBeacon 相關應用
iBeacon 相關應用
 
Xamarin 研究
Xamarin 研究Xamarin 研究
Xamarin 研究
 
What’s New In watch OS
What’s New In watch OSWhat’s New In watch OS
What’s New In watch OS
 
Apple Watch Feature
Apple Watch FeatureApple Watch Feature
Apple Watch Feature
 
Symbolicate Crash 使用教學
Symbolicate Crash 使用教學Symbolicate Crash 使用教學
Symbolicate Crash 使用教學
 
Apple Watch Specifications
Apple Watch SpecificationsApple Watch Specifications
Apple Watch Specifications
 
Apple Watch UI Elements
Apple Watch UI ElementsApple Watch UI Elements
Apple Watch UI Elements
 
Apple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesApple Watch Human Interface Guidelines
Apple Watch Human Interface Guidelines
 
Quickblox Study
Quickblox StudyQuickblox Study
Quickblox Study
 
Auto layout 介紹
Auto layout 介紹Auto layout 介紹
Auto layout 介紹
 
iOS Touch ID 介紹
iOS Touch ID 介紹iOS Touch ID 介紹
iOS Touch ID 介紹
 
iOS Keychain 介紹
iOS Keychain 介紹iOS Keychain 介紹
iOS Keychain 介紹
 
Parental Gate 使用教學
Parental Gate 使用教學Parental Gate 使用教學
Parental Gate 使用教學
 

CocoaPods 使用教學

Editor's Notes

  1. 改進 ABCD相依圖 版本相依解說 編譯可變快
  2. Commands: * help Show help for the given command. * init Generate a Podfile for the current directory. - install Install project dependencies * ipc Inter-process communication * lib Develop pods * list List pods * outdated Show outdated project dependencies * push Push new specifications to a spec-repo * repo Manage spec-repositories * search Searches for pods * setup Setup the CocoaPods environment * spec Manage pod specs * try Try a Pod! * update Update outdated project dependencies Options: --silent Show nothing --version Show the version of CocoaPods --no-ansi Show output without ANSI codes --verbose Show more debugging information --help Show help banner of specified command
  3. -> 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 [master repo] - Sub specs: - AFNetworking/Serialization (2.2.1) - AFNetworking/Security (2.2.1) - AFNetworking/Reachability (2.2.1) - AFNetworking/NSURLConnection (2.2.1) - AFNetworking/NSURLSession (2.2.1) - AFNetworking/UIKit (2.2.1) -> AFNetworking+AutoRetry (0.0.2) Auto Retries for AFNetworking requests pod 'AFNetworking+AutoRetry', '~> 0.0.2' - Homepage: https://github.com/shaioz/AFNetworking-AutoRetry - Source: https://github.com/shaioz/AFNetworking-AutoRetry.git - Versions: 0.0.2, 0.0.1 [master repo] -> AFNetworking-MUJSONResponseSerializer (1.0.0) Automatically serialize JSON response to your object model pod 'AFNetworking-MUJSONResponseSerializer', '~> 1.0.0' - Homepage: https://github.com/Ulianko/AFNetworking-MUJSONResponseSerializer - Source: https://github.com/Ulianko/AFNetworking-MUJSONResponseSerializer.git - Versions: 1.0.0 [master repo] -> AFNetworking-RACExtensions (0.1.2) AFNetworking-RACExtensions is a delightful extension to the AFNetworking classes for iOS and Mac OS X. pod 'AFNetworking-RACExtensions', '~> 0.1.2' - Homepage: https://github.com/CodaFi/AFNetworking-RACExtensions - Source: https://github.com/CodaFi/AFNetworking-RACExtensions.git - Versions: 0.1.2, 0.1.1, 0.0.1 [master repo] -> AFNetworking-ReactiveCocoa (0.0.2) Make AFNetworking reactive. pod 'AFNetworking-ReactiveCocoa', '~> 0.0.2' - Homepage: https://github.com/uasi/AFNetworking-ReactiveCocoa - Source: https://github.com/uasi/AFNetworking-ReactiveCocoa.git - Versions: 0.0.2, 0.0.1 [master repo] -> AFNetworking-Synchronous (0.2.0) Synchronous requests for AFNetworking pod 'AFNetworking-Synchronous', '~> 0.2.0' - Homepage: https://github.com/paulmelnikow/AFNetworking-Synchronous - Source: https://github.com/paulmelnikow/AFNetworking-Synchronous.git - Versions: 0.2.0, 0.1.0 [master repo] -> AFNetworking2-RACExtensions (0.0.1) AFNetworking-RACExtensions is a delightful extension to the AFNetworking classes for iOS and Mac OS X. pod 'AFNetworking2-RACExtensions', '~> 0.0.1' - Homepage: https://github.com/knshiro/AFNetworking-RACExtensions - Source: https://github.com/knshiro/AFNetworking-RACExtensions.git - Versions: 0.0.1 [master repo]