MAR 15, 2013
I've been using CocoaPods for the last month and so far it's really been a love/hate relationship (more on that later). Because it's still a young project, I wasn't able to find a good tutorial on how to make the switch, so hopefully this will be of help to some of you.
From your project's root:
$ gem install cocoapods $ pod setup
This pulls the CocoaPods/Specs repo into
In your project root, create a file named
Podfile with the pods that you would like to use. Here's mine for Shows:
platform :ios, '6.0' pod 'OBSlider' pod 'SVGeocoder', :head pod 'SVHTTPRequest', :head pod 'SVProgressHUD', '0.9' pod 'SVSegmentedControl', :head pod 'SVWebViewController', :head
Head over to the official CocoaPods Wiki for more advanced options. If you'd like to use a library that is not listed on CocoaPods/Specs, I suggest you either keep that component as a Git submodule or add the files manually to your project. Properly adding someone else's project to the CocoaPods/Spec repository is still extremely cumbersome (in my experience anyway) and deserves a blog post of its own.
Once your Podfile is all setup, open Terminal and run
pod install. In case you're unfamiliar with Bundler,
Podfile.lock will be created automatically. That file contains the pod commit SHAs that just got installed so that you can easily restore that exact environment later on other machines.
Towards the end of
pod install, CocoaPods might throw a few warnings about your project settings. Make sure you fix those.
What CocoaPods does is build a
libPods.a static library for your Xcode project to use. For that to work, it uses an Xcode workspace to incorporate both projects. If you weren't already using Xcode workspaces,
MyApp.xcworkspace is your new friend.
Depending on how you used to add 3rd party libraries before, CocoaPods might break code completion for your newly added Pods. To fix that, in my case I had to replace
Podfile.lock should both be added to version control. Also add
Pods/ if you want to be able to checkout the repository and build it without having to run
$ pod install
will install the pod versions specified in
Podfile.lock. If none is specified in there, it will install from
$ pod update
makes CocoaPods ignore your
Podfile.lock and installs from