使用 Pod Lib Create

<开始

我们将使用 pod lib create 来引导整个 pod 的创建过程。因此,让我们从初始命令开始

pod lib create MyLibrary

注意:要使用您自己的 pod-template,您可以添加参数 --template-url=URL,其中 URL 是包含兼容模板的 git 存储库。

第二个注意:您可以按回车键选择默认(带下划线)选项。

<Objective-C 或 Swift

第一个问题是询问您想要使用哪种语言构建 pod。对于这两种选择,CocoaPods 都将把您的库设置为框架。

<制作演示应用程序

模板将为您的库生成一个 Xcode 项目。这意味着您不必在 Xcode 中创建新项目。

如果您想为 pod try MyLib 准备一个示例项目,或者需要在应用程序中运行库的测试(交互测试、自定义字体等),那么您应该回答“是”。一个好的衡量标准是“这个 Pod 是否应该包含屏幕截图?”;如果是,那么您应该有一个演示。

<选择测试框架

您应该测试您的库。测试可确保使用您的库的人员的稳定性。在开源库中,这意味着人们可以做出更改,同时知道他们没有破坏隐式期望。我们建议使用测试框架,而不是依赖于 Apple 的 XCTest,但它已包含在内。在 Objective-C 中,我们提供了两种流行的测试框架供您选择;Specta/Expecta 和 Kiwi。如果您无法决定,请使用 Specta/Expecta。

Specta/Expecta

适用于 Objective-C 和 Cocoa 的轻量级 TDD/BDD 框架。

GitHub 存储库

Kiwi

Kiwi 是适用于 iOS 开发的行为驱动开发库。目标是提供一个设置和使用都非常简单的 BDD 库。

GitHub 存储库

 

主要区别在于 Kiwi 是针对 Stub/Mock/Expectation 的一体化方法,而 Specta/Expecta 是通过不同的 Pod 规范实现的模块化方法。我们在 MyLib-Tests.pch 中包含了测试框架所需的所有必要内容和设置,这样您不必在每个文件中都包含它们。

在 Swift 中,我们只提供 Quick/Nimble 的选择,因为这看起来是占主导地位的测试库。

<基于视图的测试

根据您构建的库,您可能会发现基于快照的测试是验证 不同 操作 您的 视图 上的结果的明智方法。我们建议使用 FBSnapShotTestCase,如果您正在使用 Specta/Expecta,那么我们 包含一个 Pod 来改进语法。

<Objective-C 的前缀

为了封装一个 Objective-C 项目,我们想知道您的类前缀。这意味着我们能够让 CocoaPods 生成的所有类符合您的风格,而且从 Xcode 内部生成的所有类都将以您的前缀开头。我们知道 Apple 正在弃用前缀,但实际上它们在 Objective-C 代码库中仍然有其一席之地。

<Pod Lib 创建模板

在回答完问题后,我们在新创建的项目上运行 pod install。我们来看看结果

$ tree MyLib -L 2

  MyLib
  ├── .travis.yml
  ├── _Pods.xcproject
  ├── Example
  │   ├── MyLib
  │   ├── MyLib.xcodeproj
  │   ├── MyLib.xcworkspace
  │   ├── Podfile
  │   ├── Podfile.lock
  │   ├── Pods
  │   └── Tests
  ├── LICENSE
  ├── MyLib.podspec
  ├── MyLib
  │   ├── Assets
  │   └── Classes
  │     └── RemoveMe.[swift/m]
  └── README.md

我们已经尝试将根文件夹中的数量最小化,您将看到以下文件

  • .travis.yml - travis-ci 的设置文件。
  • _Pods.xcproject - 指向您的 Pod 项目的符号链接,用于 Carthage 支持
  • LICENSE - 默认为 MIT 许可证
  • MyLib.podspec - 您的库的 Pod 规范。
  • README.md - markdown 中的默认 README。
  • RemoveMe.swift/m - 确保最初编译正常工作的单个文件。

以及以下文件夹

  • MyLib - 这是您放置库的类的位置
  • Example - 这是生成的演示和测试包

<将您的库组合在一起

CocoaPods 会直接打开你的 Xcode 项目;在那里,你可以编辑 CocoaPods 生成的所有文件。我们来看看 Xcode 的扩展版本

  1. 你可以编辑你的 Podspec 元数据,这让你可以更改 README 和 Podspec。
  2. 这是演示库,如果你没有同意,你将错过它。
  3. 这是你之前选择的框架的存根测试规范。
  4. 这是开发 Pod 部分,实际上你可以在这里处理你的库。有关更多信息,请参见下文。
  5. 最后是用于设置项目的 Pod。

值得在这里提一下,因为这经常困扰人们,Swift 库需要将其类声明为 public,以便你在示例库中看到它们。

开发 Pod

开发 Pod 与普通的 CocoaPod 不同,因为它们是符号链接文件,因此对它们进行编辑将更改原始文件,这样你就可以在 Xcode 中处理你的库。你的演示和测试需要使用 #import <MyLib/XYZ.h> 格式包含对头文件的引用。

[!] 备注:由于开发 Pod 实现的详细信息,当你向 MyLib/ClassesMyLib/Assets 添加新/现有文件或更新你的 podspec 时,你应该运行 pod installpod update

<添加 Travis CI

模板包含一个 .travis.yml 文件,它将运行项目中包含的默认测试。如果你在 GitHub 上有一个开源仓库,请在 Travis CI 上打开 你的个人资料 并打开库。

../assets/images/pod_lib_create/travis-ci.png

<部署你的库

所以你的库已经准备好了。首先,你应该检查 Podspec 是否正确地进行 lints,因为你无法在有错误的情况下进行部署。这可以通过两种方法完成,pod lib lintpod spec lint。它们之间的区别在于 pod lib lint 不访问网络,而 pod spec lint 检查外部仓库和关联的标签。

如果您要将开源库部署到 trunk,则不能有 CocoaPods 警告。不过,您可以有 Xcode 警告。您应该继续 入门 trunk 指南,以便向公众部署。

如果您要部署到私有 Specs 存储库,您将需要已经添加了该存储库。请参阅 私有 Specs 存储库 上的指南来设置它。如果您要部署到现有的私有存储库,请使用此命令来部署

pod repo push SPEC_REPO *.podspec --verbose

<完成

👍