http://product.hubspot.com/blog/architecting-a-large-ios-app-with-cocoapods
如果你希望将自己的代码以库的形式对外提供,或在团队内部使用,那么可以考虑创建自己的 Pods。
初始化项目
如果不是已有的项目,那么可以考虑使用 pod lib create [pod name] 命令来初始化项目,它会构建一个设计良好的类库工程目录并包含一些必要的文件。
pod lib create MyLibrary
通过参数--template-url=URL
可以指定自己的模板 git 仓库。
开发
开发 Pod 时,可以在测试应用工程中,直接安装本地的 Pod 进行调试。此时 Pod 的 source 为指定的路径,而不是 podspec 文件的 source
pod 'Name', :path => '~/code/Pods/'
当 Pod 的工程提交到 git 仓库后,也可以从 git 仓库中安装 Pod
pod 'Name', :git => 'https://example.com/URL/to/repo/NAME.git'
当在开发中的 Pod 加入文件或者更新 podspec 后,需要重新执行pod install
或pod update
命令。
发布
当开发和测试工作完成之后,就可以准备发布 Pod 了。在发布之前,首先要检查 Pod 的描述文件 [pod name].podspec 是否合法。可以使用命令pod lib lint
或pod spec lint
,两个命令的区别是,pod lib lint
只会在本地检查,而pod spec lint
会检查需要联网的内容。例如,发布的 Pod 必须在 .podspec 文件中指定拉取代码的 tag,如果未指定,在pod lib lint
检查时就会报错,但当 .podspec 文件指定的 tag 在远程仓库并不存在时,pod lib lint
的验证结果会是合法的,而pod spec lint
则可以检测到这种错误。所以在发布 Pod 前,最好可以通过pod spec lint
命令的检查。
之后你可以选择将 Pod 提交到公共仓库供其他人使用,或者提交到你自己的私有仓库供内部使用。
开源 Pod
提交到开源仓库使用pod trunk
命令,首先通过邮箱在当前设备上开启一个会话。之后根据提示需要在注册的邮箱中确认邮件。
pod trunk register [email protected] 'Orta Therox' --description='macbook air'
可以通过pod trunk me
命令查看开启的会话。接着就可以将 Pod 提交到公共仓库。
pod trunk push [NAME.podspec]
Getting setup with Trunk
私有 Pod
在提交私有 Pod 前,首先你要有一个 git 仓库作为自己私有的 Pods spec 仓库。接着将这个仓库加入到 CocoaPods 中。
pod repo add REPO_NAME SOURCE_URL
另外,可以使用命令pod repo remove REPO_NAME
来删除Pods spec 仓库。
然后使用以下命令将 Pod 加入到私有仓库中
pod repo push REPO_NAME SPEC_NAME.podspec
之后使用时,可以在 Podfile 中加入该仓库source 'URL_TO_REPOSITORY'
。
Private Pods
验证已发布的 Pod
发布 Pods 后,添加该 Pod 如果pod install
失败,则需要更新 Specs 仓库。
pod repo update
如果pod search
失败,则需要删除本地的搜索索引后重新执行搜索命令。
rm ~/Library/Caches/CocoaPods/search_index.json
版本号
一个标准的有意义的版本号,可以让使用者更容易的选择某一版本的类库,关于版本号的设置,可以参考这篇文章:语义化版本
LICENSE
提交到 CocoaPods 中的类库必须有 LICENSE,不同 LICENSE 的区别可以看这篇文章:如何选择开源许可证?,还有这篇:Pick a License, Any License。
文档
公共的类库当然要提供完善的文档以让别人知道如何使用它们。CocoaPods 可以通过 appledoc 解析并生成文档。所以,一定要在头文件中加上规范的文档注释。
.podspec
所有的 Pod 都会有其对应的 [pod name].podspec 文件,.podspec 文件描述了该 Pod 某一版本的所有信息,包括从哪里拉去代码,拉去哪些文件等。提交或更新一个 Pod 就是把这些信息提交到 Pods 仓库,然后安索引保存起来。通过命令pod lib create [pod name]
初始化工程时,会同时创建 .podspec 模板,也可以通过命令pod spec create
单独创建。
Specs and the Specs Repo
Podspec Syntax
资料
Making CocoaPods
Videos