一.前提条件
如果你想要创建一个pod库,除了需要.podspec,还需要一个LICENSE。Pod远端不接受一个没有LICENSE的pod库,关于LICENSE,你可以参考this article on CodingHorror or tl;dr Legal.
二.开始创建
- 使用
pod lib create MyLibrary
来创建你的pod库(可以使用模板库)
- To use your own pod-template you can add the parameter
--template-url=URL
where URL is the git repo containing a compatible template - 模板将会为你的库创建一个xcode工程
- 创建完成后,你需要使用GitHub repo -A light-weight TDD / BDD framework for Objective-C & Cocoa 来进行单元测试,防止用户遇到bug。
或者使用Kiwi这个BDD库GitHub repo - 或者使用这个库来测试UIFBSnapShotTestCase
- Due to a Development Pods implementation detail, when you add new/existing files to MyLib/Classes or MyLib/Assets or update your podspec, you should run pod install or pod update.
- It's worth mentioning here, as this catches people quite often, a Swift library needs to have its classes declared as public for you to see them in your example library.
三.部署你的库
- 使用
pod lib lint
andpod spec lint
来测试你的库,没有错误的情况下才能进行部署。
他俩的区别是:pod lib lint
不会联网,pod spec lint
会联网检查外部的仓库和tag。 - 如果你部署的是私有库,使用
pod repo push SPEC_REPO *.podspec --verbose
三.CocoaPods Trunk(仓库)
- CocoaPods Trunk是一个提供了认真和接口的服务库,想要向trunk提交公开的库必须进行注册。
- 你可以使用
pod trunk
来部署和管理你的库,使用pod trunk [command] --help
- 注册一个账户
$ pod trunk register 18519187150@163.com 'Water' --description='macbook air'
然后点击邮箱收到的信息 - 部署你的库
1.使用pod trunk push [NAME.podspec]
将库发布到pod trunk上让其他人看到(公共库)
2.如果你部署的是私有库,使用pod repo push SPEC_REPO *.podspec --verbose
- 把其他人加入到contributors
pod trunk add-owner ARAnalytics kyle@cocoapods.org
四.Development Pods
- 在pod里面更改代码
如果你在pods里面直接更改代码,那是不对的。
因为pod认为它对pod里面的代码拥有唯一的控制权,如果你直接更改了代码,然后使用了pod update
,那么pod会将你的代码直接丢弃掉。 - 正确的做法 使用Development Pods
如果你想使用pod的代码pod 'AwesomeView', '~> 1.42.0'
如果你想编辑pod的代码pod 'AwesomeView', :path => '/Users/yourusername/path/to/pod/repo/AwesomeView'
- 使用了本地路径,你就可以安全的更改本地代码了
五.Private Pods
- 添加一个私有仓库
pod repo add REPO_NAME SOURCE_URL
- 检查是否创建成功
cd ~/.cocoapods/repos/REPO_NAME
pod repo lint .
- 把你的库添加到仓库
pod repo push REPO_NAME SPEC_NAME.podspec
. - 图片.png
- 官方详解 https://guides.cocoapods.org/making/private-cocoapods.html
五.Specs and the Specs Repo
- Podspec 或 Spec,描述了 Pod 库的一个版本。
- Specs Repo是网络上的一个存储库,里面包含了所有的pod库;每个pod库都有一个单独文件夹,其中包含该 Pod 可用版本的子文件夹。
- Subspecs 是一种分割 Podspec 功能的方法,允许人们安装你的库的一个子集。
- How do I update an existing Pod?
pod trunk push NAME.podspec