入门
我们将使用pod lib create指令来展示创建一个完整的Pods的引导过程。所以让我们从初始命令开始:
pod lib create MyLibrary
注意:你可以通过在--template-url=URL后面添加包含可用模板的git仓库的URL使用你自己的 pod-template。
第二个注意:你可以点击回车来选择默认的选择(也就是下划线标注的选择)。
Objective-C 或者 Swift
你被询问的第一个问题是你想要在pod编译中使用什么语言。对于所有的选择,CocoaPods都将会将你的library配置为framework。
制作一个Demo应用
模板将会为你的library生成一个Xcode工程项目。这意味着你不用在Xcode上创建新项目了。
如果你想要有一个pod try MyLib指令能运行的示例工程,或者需要拥有能在应用里测试你自己library(交互检验,自定义字体等等)的,你应该说Yes。一个很好的标准就是“这个pod是否包含一个屏幕截图”。那么,你需要有一个Demo。
选择一个测试的framework
你应该测试你的library。测试要保证人们使用你的library的稳定性。在开源库中这意味着人们可以改变来达到他们内心的期望。我们推荐使用一个测试framework而不是指望苹果的,虽然他也包含测试。在Objective-C中我们列入了两个流行的测试framework: Specta/Expecta 和 Kiwi。如果你不能决定,使用Specta/Expecta。
Specta/Expecta
一个轻量级的TDD / BDD framework 适用于 Objective-C 和 Cocoa。
GitHub repo
Kiwi
Kiwi是iOS开发的行为驱动开发库。目标是提供一个设置和使用非常简单的BDD库。
GitHub repo
主要的区别在于Kiwi是一个Stubs/Mocks/Expectations一体化的方式,然而Specta/Expecta是一个通过不同Podspecs模块化的方式。我们列入了所有必需的星系,以及配置你的测试framework到MyLib-Tests.pch,因此你不用将它们列入各个文件。
在Swift中,我们只提供了Quick/Nimble,因为他是最主流的测试库。
基于视图的测试
根据你编译的库,你会发现基于快照的测试是一种聪明的方式来验证在你页面上不同操作的结果(different actions on your views官方推荐在这里的库)。我们推荐使用FBSnapShotTestCase。如果您正在使用Specta / Expecta,那么我们会添加一个Pod来改进语法。
Objective-C的前缀
通过包围住一个Objective-C项目让我们来知道你的前缀。这意味着我们可以使CocoaPods生成的所有类都适合您的样式,所有从Xcode内部生成的类都将以您的前缀开头。我们知道苹果公司正在弃用前缀,但实际上它们仍然在Objective-C代码库中占有一席之地。
Pod库创建模板
有了这些问题,我们在新创建的项目上运行pod安装。 我们来看看结果:
$ tree MyLib -L 2
MyLib
├── .travis.yml
├── _Pods.xcproject
├── Example
│ ├── MyLib
│ ├── MyLib.xcodeproj
│ ├── MyLib.xcworkspace
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ └── Tests
├── LICENSE
├── MyLib.podspec
├── Pod
│ ├── Assets
│ └── Classes
│ └── RemoveMe.[swift/m]
└── README.md
我们试图将根文件夹中的数量保持在最小限度,您将看到以下文件:
- .travis.yml - travis-ci的一个配置文件。
- _Pods.xcproject - 你Pod的项目与Carthage支持的符号连接
- LICENSE - 证书 MIT License.
- MyLib.podspec - 你的library的Podspec.
- README.md - 默认的markdown的README文件.
- RemoveMe.swift/m - 保证初始化编译工作的文件.
以及接下来的文件:
- Pod - 你library的类的地方
- Example - 生成的Demo项目 & 测试包
将你的Library放在一起
CocoaPods将直接打开你的项目;从这里你能编辑所有CocoaPods生成的文件。让我们来看一下一个版本的Xcode:
- 您可以编辑您的Podspec元数据,这样可以更改您的README和Podspec。
- 这是一个Demo Library,如果你不对这个说Yes,你将会失去它。
- 这是你之前选择后创建的测试Spec。
- 这是Pods开发部分,是你Library实际工作的地方。看它下面的更多的信息。
- Pods用于配置项目的地方
这里值得一提的是,人们经常需要注意的一点,Swift的Library需要将其类声明为公开,以便在您的示例库中查看它们。
Pods的开发
开发Pods与正常的CocoaPods不同,因为它们是符号链接的文件,所以对它们进行编辑会改变原始文件,所以你可以从Xcode里对Library工作。你的Demo & 测试将需要使用#import <MyLib / XYZ.h>格式列出对头文件的引用。
添加Travis CI
模板包含一个.travis.yml文件,将会运行项目内包含的默认的测试。如果您有GitHub的开源代码,请在Travis CI上打开您的 profile,并打开库的开关。
部署你的Library
所以你的Library准备好了。首先你应该检查是否Podspec正确,因为你部署的时候不能有错误。这可以有两种方法做到,pod lib lint 和 pod spec lint。两个指令的不同点在于pod lib lint不用访问网路,而pod spec lint检查外部repo和相关标签。如果您正在将一个开源库部署到trunk上,则不能有CocoaPods警告。你Xcode内部可以有警告。您应该继续开始根据getting started with trunk 指导来部署到公众。
如果您正在部署到一个私人的Specs repo,您将需要添加repo。请参阅Private Specs Repos的指南来进行设置。 如果要部署到现有的私人Repo,请使用此命令进行部署
pod repo push SPEC_REPO *.podspec --verbose
完成
👍
网友评论