制作 CocoaPod 库

通常我们在创建cocoapods仓库时最好是到 cocoapods.org 上先查一下有没有相同名字的。

使用 Pod Lib Create

使用 pod lib create 引导整个 pod 的创建过程:

1
2
$ cd Lib
$ pod lib create ZMLib

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

上图列出了创建 pod 过程相关的配置,基本解释如下:

  • 用什么语言来构建一个pod
    对于这两种选择,CocoaPods将把您的library设置为一个framework

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

  • 选择 Test Framework
    建议您使用测试框架,而不要依赖 AppleXCTest,但这默认包括在内。 在 Objective-C 中,我们包括两种流行的测试框架的选择: Specta/ExpectaKiwi。 如果您不确定,请使用Specta/Expecta

  • View-based Testing
    根据所构建的库的不同,您可能会发现基于快照的测试是一种验证视图上不同操作的结果的明智方法。我们建议使用FBSnapShotTestCase

了解 Pod Lib 创建的模板

切换到 /ZMLib/Example 目录,执行 pod install,我们可以看到如下完整的结构:

基本文件介绍:

  • .travis.yml 表示 travis-ci 的安装文件。
  • _Pods.xcproject 指向Pod项目以支持Carthage的符号链接
  • LICENSE 默认为MIT License
  • ZMLib.podspec 你的 LibraryPodspec
  • README.md markdown中的默认自述文件。
  • ReplaceMe.swift 单个文件,以确保最初可以进行编译。

相关目录:

  • ZMLib 在这里放置library's classes
  • Example 这是生成的演示和测试包

Library 放在一起

Pod Lib Create完成后,CocoaPods将直接打开您的Xcode项目;从那里您可以编辑CocoaPods生成的所有文件。

1、你可以编辑 Podspec metadata 目录,更改 READMEPodspec

2、Example for ZMLib 是演示库。

3、Tests 这是针对您先前选择的框架的测试 spec

4、Development Pods 是在自己的 library 上工作的地方。

5、 Frameworks 用于设置项目的 Pods

注意:
Swift库需要将其类声明为public,以便您在示例库中查看它们。

Development Pods目录

Development Pods与普通的 CocoaPods 不同,因为它们是 符号链接的文件,因此对它们进行编辑将更改原始文件,因此您可以从Xcode内部处理library。您的demotests需要包含对使用import<MyLib/XYZ.h>格式的标题的引用。

添加Travis CI

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

部署库

如果要将开放源代码库部署到trunk,则不能有CocoaPods警告,但是您可以有Xcode警告。因此,应该参阅 Getting setup with Trunk,以向公众发布。

如果要部署到私有的 Specs repo,则需要已经添加了该repo。请参阅 Private Pods 来进行设置。

验证 Podspec

这样您就可以准备使用library。首先应该检查Podspec lints是否正确,因为部署时不能出现错误。这可以通过两种方法来完成:

  • $ pod lib lint 表示本地验证,不会访问网络。

  • $ pod spec lint 会访问网络,可检查外部repo(存储库)和关联的tag(标签)。如果没有打上相应的tag(标签)则会报错。

使用 Trunk 进行设置

CocoaPods Trunk 是一种 身份验证 和 CocoaPods API 服务。 要将新的 或 更新的 libraries 发布到 CocoaPods 以供公开发布,你需要在 Trunk 中注册并在当前设备上具有有效的Trunk session。 你可以在 CocoaPods Trunk 上了解有关 Trunk 的历史和发展,以及你自己或你的团队的 private pods

CocoaPods TrunkCocoaPods 0.33 开始可用。Pod trunk下的命令集合可自动执行Podspec 的部署和管理。您可以随时运行 pod trunk [command] --help 来查看内联帮助。

在使用 CocoaPods Trunk 时,需要先将 cocoapods仓库 托管到 git 服务器

ZMLib 推送到 git 服务器

1、完成编码后,配置 ZMLib.podspec 中的版本号,以及 Example 工程中的版本号,执行以下命令提交代码:

1
2
3
$ cd ~/Lib/ZMLib
$ git add .
$ git commit -m "add"

2、将本地仓库与远程仓库关联起来,并推送到远程仓库:

1
2
$ git remote add origin https://github.com/czmCWH/ZMLib.git
$ git push origin master

3、设置仓库本次发版的版本号:

1
2
$ git tag '0.0.1'
$ git push origin --tags

在Trunk 上注册账号

首先使用您的电子邮件地址注册一个帐户。这将在您当前的设备上开始一个 session

我们建议您在 session 中添加描述,以在以后列出session时提供一些背景信息。 例如:

1
$ pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'

您必须单击Trunk发送给您的电子邮件中的链接,以验证Trunk帐户与当前计算机之间的连接。 您可以通过运行pod trunk me列出您的sessions

Trunk accounts是没有密码的,只有每台计算机的session tokens

部署 library

pod trunk push [NAME.podspec]会将您的 Podspec部署到 Trunk 并公开发布。你还可以通过pod repo push REPO [NAME.podspec]Podspecs部署到自己的private specs repo(私有规范仓库中)。

使用 push 进行部署:

  • 在本地Lints你的Podspec。你可以随时使用pod spec lint [NAME.podspec]
  • 一个成功的lint会把你的 Podspec 推到 Trunk 或者 private specs repo
  • Trunk将发布一个规范的JSON表示您的Podspec

Trunk还将向其他服务发布一个web hook,提醒他们新的CocoaPod,例如CocoaDocs.org@CocoaPodsFeed

执行以下命令部署成功:

1
2
$ cd ~/Lib/ZMLib
$ pod trunk push ZMLib.podspec --allow-warnings

如上创建公共 Pods 完成,我们可以将 ZMLib 库添加到任何项目中,笔者push成功后,大概等了3个小时,才可用,因为需要经过 trunk 的审核。

添加其他人作为贡献者

Podspec版本推送到Trunk的第一个人可以添加其他维护者。

如下,要将 kyle@cocoapods.org 添加到 ARAnalytics 库中:

1
$ pod trunk add-owner ARAnalytics kyle@cocoapods.org

然后将列出所有已知的library所有者。 注意:他们需要已经在trunk上注册了一个帐户,以便您将它们添加到library中。

声明现有库

如果您要claim(声明、认领)某人已经声明过的library,则可以使用 our Claims form 来表示您是 libraries 集合的所有者或维护者。 有关libraries所有权的任何问题将由 CocoaPods 开发团队进行仲裁。

Private Pods

CocoaPods 是一个很棒的工具,不仅可以向项目中添加开源代码,还可以跨项目共享组件。您可以使用私有 Spec Repo 来执行此操作。

有几个步骤可以为你的项目设置私有pods。为他们创建一个私有repository(存储库),让CocoaPods知道在哪里可以找到它,并将podspec添加到 repository(存储库) 中。

创建一个私有 Spec Repo

为了使用你的私有pods集合,我们建议你创建自己的Spec repo。应该将其放置在所有将使用repo的人都可以访问的位置。

您不需要fork CocoaPods/Specs Master repo。 确保你的团队中的每个人都可以访问此repo,但不需要将其公开。

将你的私有 Spec Repo 添加到 CocoaPods installation

1、如下命令,先查看本地索引库,然后将我们刚刚新建的私有索引库 iosSpecs 添加到本地:

1
2
$ pod repo 
$ pod repo add REPO_NAME SOURCE_URL

注意:如果你计划在本地创建Pod,你应该有SOURCE_URLpush 访问权限

2、要检查安装是否成功并准备就绪,请执行以下操作:

1
2
$ cd ~/.cocoapods/repos/REPO_NAME
$ pod repo lint .

至此索引库已创建完成,接下来需要创建组件库,并提交 podspec 到私有索引库。

创建组件库

1、在终端执行以下命令创建组件库

1
2
3
$ cd /Lib
# 这里会让你配置一些信息,根据自己的情况自行配置即可
$ pod lib create CLBase

创建成功会自动打开 Example 项目,我们在 CLBase/Classes 目录中添加组件内容,配置 CLBase.podspec 文件:

修改 Podfile 文件中组件适配的版本号,并安装:

1
2
$ cd CLBase/Example
$ pod install

在远程 git 服务器上创建好该组件库对应的代码仓库,然后按照如下步骤提交代码:

1
2
3
4
5
$ cd CLBase/
$ git add .
$ git commit -m "first commit"
$ git remote add origin https://git.xxx/xxx/CLBase.git
$ git push origin master

一切工作完成,我们就可以发版本了,版本号保持和CLBase.podspec 文件中指定的一致:

1
2
$ git tag '1.0.0'
$ git push --tags

接下来,我们提交 podspec 到私有索引库。

添加你的 Pod's Podspec 到你的 repo

确保对源代码进行了适当的 taggedversioned,然后运行:

1
$ pod repo push REPO_NAME SPEC_NAME.podspec

这将运行 pod spec lint,并处理在私有repo中设置spec的所有小细节。

repo的结构应反映这一点:

1
2
3
4
5
.
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec

基本操作如下:

1
2
3
4
$ cd /Lib/CLBase
$ pod spec lint --private
$ pod repo
$ pod repo push coolen-ios-specs CLBase.podspec

此时我们可以在 git 服务器上看到我们创建的私有索引库:

可以搜索该私有组件库,看是否能使用:

1
2
$ cd ~
$ pod search CLBase

使用私有组件库

你的私有Pod已准备好在 Podfile 中使用。可以将spec repositoryPodfile中的 source 指令一起使用,如下例所示:

学习资源

Using Pod Lib Create

Cocoapods-创建第三方框架

iOS-组件化开发(一):远程私有库的基本使用

文章作者: Czm
文章链接: http://yoursite.com/2020/03/22/%E5%88%B6%E4%BD%9C-CocoaPod-%E5%BA%93/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Czm