入门
我们将通过使用 pod lib create
来创建一个完整的 pod 来引导过程。 所以让我们从最初的命令开始:
pod lib create MyLibrary
注意:要使用您自己的pod-template,您可以添加参数--template-url = URL,其中URL是包含兼容模板的git repo。
第二个注意:您可以按回车键选择默认(带下划线)选项。
Objective-C 或者 Swift
你被问到的第一个问题是你想要创建一个 pod 的语言。对于这两种选择,CocoaPods都会将你的库设置为一个框架。
制作演示应用程序
该模板将为您的库生成一个Xcode项目。 这意味着您不必在Xcode中创建新项目。
如果你想为 pod 尝试一个 MyLib 的示例项目,或者需要让你的库的测试在应用程序中运行(交互测试,自定义字体等), 一个很好的指标, 是这个 Pod 应该包含屏幕截图; 如果是这样,那么你应该有一个演示。
选择测试框架
你应该测试你的 Library .测试可以确保当你的 Library 被人使用时的稳定性. 在开放源代码库中,这意味着人们可以在知道自己没有违背隐含期望的情况下进行更改. 我们推荐使用测试框架,而不是紧紧依赖Apple的XCTest.在Objective-C中,我们包含两种流行测试框架的选择; Specta / Expecta和Kiwi . 如果您不能决定,请使用Specta / Expecta.
- Specta/Expecta : Objective-C和Cocoa的轻量级TDD / BDD框架。GitHub repo
- Kiwi : Kiwi是iOS开发的行为驱动开发库。 目标是提供一个安装和使用起来非常简单的BDD库。GitHub repo
主要区别在于Kiwi是一种对存 Stubs/Mocks/Expectations 的一体化方法,而Specta / Expecta是通过不同Podspecs的模块化方法。 我们在MyLib-Tests.pch中包含了所有必要的包含和设置,以便您不必将它们包含在每个文件中。
在Swift中,我们只提供Quick / Nimble选项,因为这看起来是主要的测试库。
基于视图的测试
根据您建立的库,您可能会发现基于快照的测试是验证视图上不同操作结果的智能方法。 我们建议使用FBSnapShotTestCase,如果您使用的是Specta / Expecta,那么我们会包含一个Pod来改进语法。
Objective-C的前缀
为了包装一个Objective-C项目,我们想知道你的类的前缀。 这意味着我们可以让所有由CocoaPods生成的类都适合您的样式,并且从Xcode内部生成的所有类都将以您的前缀开头。 我们知道Apple不赞成使用前缀,但实际上它们在Objective-C代码库中仍然占有一席之地。
Pod Lib创建模板
随着问题的结束,我们在新创建的Project上运行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
- a setup file for travis-ci. -
_Pods.xcproject
- a symlink to your Pod's project for Carthage support -
LICENSE
- defaulting to the MIT License. -
MyLib.podspec
- the Podspec for your Library. -
README.md
- a default README in markdown. -
RemoveMe.swift/m
- a single file to to ensure compilation works initially.
和以下文件夹:
- Pod - 这是你放置你的 Library 的类的地方
- Example - 这是生成的Demo&Testing包
把 Library 放在一起
CocoaPods会马上打开你的Xcode项目; 从那里你可以编辑由CocoaPods生成的所有文件。 我们来看看Xcode的扩展版本:
- 您可以编辑您的Podspec元数据,这可以让您更改自述文件和Podspec。
- 这是演示库,如果你没有对它作出肯定的回答,你会错过这个。
- 这是您之前选择的框架的一个残缺测试规范。
- 这是 Development Pods 部分,实际上您可以在 Library 工作。 请参阅下面的详细信息。
- 最后在设置项目时使用Pods。
在这里值得一提的是,因为这经常吸引人们,所以Swift库需要将它的类声明为public,以便在示例库中看到它们。
Development Pods
Development Pod与普通的CocoaPods不同,它们是符号链接的文件,所以编辑它们会改变原始文件,所以你可以在Xcode中使用你的库。 您的演示和测试需要使用#import <MyLib / XYZ.h>格式包含对标题的引用。
注意:由于Development Pod的实现细节,当您将新的/现有的文件添加到Pod / Classes或Pod / Assets或更新您的podspec时,应该运行pod install或pod update。
添加Travis CI
该模板包含一个.travis.yml文件,该文件将运行项目中包含的默认测试。 如果你在GitHub上有一个开源的 repo,打开Travis CI上的个人资料并开启库。
部署 Library
所以你已经准备好了 Library。 首先,您应该检查 Podspec 是否正确删除,因为您无法部署错误。 这可以用两种方法完成,即 pod lib lint 和 pod spec lint。 它们之间的区别在于 pod lib lint 不访问网络,而 pod spec lint 检查外部回购和相关标签。
如果您将开源库部署到 trunk,则不能有 CocoaPods 警告。 尽管你可以有 Xcode 警告。 您应该继续使用 trunk guide
开始部署给公众。
如果您正在部署到私人Specs repo,您需要添加 repo。 查看 Private Specs Repos 的指南来设置。 如果要部署到现有的Private Repo,请使用以下命令来部署:
pod repo push SPEC_REPO *.podspec --verbose