Skip to content

Instantly share code, notes, and snippets.

@ccabanero
Last active April 1, 2023 04:43
Show Gist options
  • Save ccabanero/e792492221c5347a4d4f to your computer and use it in GitHub Desktop.
Save ccabanero/e792492221c5347a4d4f to your computer and use it in GitHub Desktop.
How to Create a Cocoa Pod
Notes for Creating a Cocoa Pod
Pod Version: 0.39.0
OS: OS X El Capitain (10.11.3)
- - - - - - - - - - - - - - - - - - - - - - -
1. Install CocoaPods (https://guides.cocoapods.org/using/getting-started.html)
2. Create Xcode project to author the Pod
In Terminal, cd to a directory of choice and execute the following:
$ pod lib create YourPodName
What is your name? (This is added to the .podspec)
Bilbo Baggins
What is your email? (this will be added to the .podspec)
[email protected]
What language do you want to use?
Swift
Would you like to include a demo application with your library? (Will create an example project for your Pod)
Yes
Which testing frameworks will you use? (Note: Choosing None will use XCTest)
None
Would you like to do view based testing? (Note: Choosing Yes did not add XCTest's UITesting)
No
3. Create/Update Pod Spec
When Xcode opens, expand the 'Podspec Metadata' folder and open the .podspec file (YourPodName.podspec) and change the following:
s.name
Confirm this is the correct name to be used when publishing your Pod
s.version
Change to appropriate version e.g. "1.0.0"
s.summary
Change to a one sentence description
s.description
Move mouse cursor at the end of <<-DESC, press enter, and add description between <<-DESC and DESC.
Use pod lib lint Your.podspec to make sure this is formatted correctly.
s.homepage
It is stubbed with: "https://github.com/<GITHUB_USERNAME>/PodName"
Explicitly set the homepage to be the GitHub repo URL e.g. "https://github.com/ccabanero/PodName"
Note, you will create this repo in GitHub later (see step 4 below).
s.source
It is stubbed with: { :git => "https://github.com/<GITHUB_USERNAME>/PodName.git", :tag => s.version.to_s }
Explicitly set the username. e.g. { :git => "https://github.com/ccabanero/PodName.git", :tag => s.version.to_s }
Note, you will create this repo in GitHub later (see step 4 below).
s.social_media_url
It is commented out, so I removed the comment.
It is stubbed with a placeholder user name.
Explicitly set user name. e.g. 'https://twitter.com/clintcabanero'
s.platform
It is stubbeed with 8.0
In Xcode, I made sure my deployment target was 8.0 (i.e. the lowest supported OS)
s.framework
It is commented out, so I removed the comment.
It is stubbed with # s.frameworks = 'UIKit', 'MapKit'
Explicitly change as needed e.g. s.frameworks = 'UIKit', 'QuartzCore'
s.dependency
It is commented out. Because I have no dependencies on other pods, I left this commented out.
During all pod spec updates, use the following to Lint the .podspec to ensure you didn't mess it up ;):
$ pod lib lint YourPodName.podspec
4. Create the Pod's Remote Git Repo (on GitHub) and Push
Go to GitHub and create a repo.
Note, that the URL should match what you declared for s.source and s.homepage above.
Note, no need to add a MIT License file, its already in the Xcode workspace.
Note, no need to add a README file, there is a starter README in the Xcode workspace.
Note, no need to add a .gitignore, there is a starter in the Xcode workspace.
Then push the project to GitHub with the following:
$ git add .
$ git commit -m 'Initial commit'
$ git remote add origin https://github.com/ccabanero/yourpodname.git
$ git push -u origin master
xxxxx$ git push --set-upstream origin master
5. Add Code for your Custom Pod
In Xcode, expand Pods -> Development Pods -> YourPodNameFolder -> Pod -> Classes -> ReplaceMe.swift.
Delete the ReplaceMe.swift and add your custom library code (or start developing it).
NOTE! Your Swift library needs to have it's class(es) declared as 'public' for you to see them in the example project!!!
Install the pod in the example project.
$ cd Example
$ pod install
In Xcode, use the pod and Run in a simulator to test. Continue devloping and testing your pod.
6. Pod README
In Xcode, expand your pod target -> Podspec Metadata -> README.md
Note, when you executed 'pod lib created ...' it started the README.md
Create a animated gif of your library if it is a UIControl.
a. Record simulator using Quick Time Player.
b. Use Photoshop (or other tools) to export as animated .gif
7. Publishing the Pod
Tag your pod (should be the same as what is declared in your .podspec)
$ git tag 1.0.0
$ git push origin --tags
Validate your pod
$ pod spec lint MyPod.podspec
Push to the Public Specs Repository
Register a session to push
$ pod trunk register [email protected] 'Bilbo Baggins' --description='mac book pro'
Open your email client - and click the link in it. You will then be informed you're ready to push.
Push it
$ pod trunk push MyPod.podspec
Source: These notes are based on the great web article located at this URL: http://code.tutsplus.com/tutorials/creating-your-first-cocoapod--cms-24332
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment