通常我们在创建cocoapods仓库时最好是到 cocoapods.org 上先查一下有没有相同名字的。
使用 Pod Lib Create
使用 pod lib create 引导整个 pod 的创建过程:
1 | $ cd Lib |
注:要使用自己的 pod-template,您可以添加参数
--template-url=URL,其中URL是包含兼容模板的git repo。
上图列出了创建 pod 过程相关的配置,基本解释如下:
用什么语言来构建一个
pod?
对于这两种选择,CocoaPods将把您的library设置为一个framework。Making a Demo Application
该模板将为您的库生成一个Xcode项目。这意味着您不必在Xcode中创建新项目。选择 Test Framework
建议您使用测试框架,而不要依赖Apple的XCTest,但这默认包括在内。 在Objective-C中,我们包括两种流行的测试框架的选择: Specta/Expecta 和 Kiwi。 如果您不确定,请使用Specta/Expecta。View-based Testing
根据所构建的库的不同,您可能会发现基于快照的测试是一种验证视图上不同操作的结果的明智方法。我们建议使用FBSnapShotTestCase。
了解 Pod Lib 创建的模板
切换到 /ZMLib/Example 目录,执行 pod install,我们可以看到如下完整的结构:
基本文件介绍:
.travis.yml表示 travis-ci 的安装文件。_Pods.xcproject指向Pod项目以支持Carthage的符号链接LICENSE默认为MIT LicenseZMLib.podspec你的Library的PodspecREADME.mdmarkdown中的默认自述文件。ReplaceMe.swift单个文件,以确保最初可以进行编译。
相关目录:
ZMLib在这里放置library's classesExample这是生成的演示和测试包
将 Library 放在一起
Pod Lib Create完成后,CocoaPods将直接打开您的Xcode项目;从那里您可以编辑CocoaPods生成的所有文件。
1、你可以编辑 Podspec metadata 目录,更改 README 和 Podspec。
2、Example for ZMLib 是演示库。
3、Tests 这是针对您先前选择的框架的测试 spec。
4、Development Pods 是在自己的 library 上工作的地方。
5、 Frameworks 用于设置项目的 Pods。
注意:
Swift库需要将其类声明为public,以便您在示例库中查看它们。
Development Pods目录
Development Pods与普通的 CocoaPods 不同,因为它们是 符号链接的文件,因此对它们进行编辑将更改原始文件,因此您可以从Xcode内部处理library。您的demo和tests需要包含对使用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 Trunk 从 CocoaPods 0.33 开始可用。Pod trunk下的命令集合可自动执行Podspec 的部署和管理。您可以随时运行 pod trunk [command] --help 来查看内联帮助。
在使用 CocoaPods Trunk 时,需要先将 cocoapods仓库 托管到 git 服务器
将 ZMLib 推送到 git 服务器
1、完成编码后,配置 ZMLib.podspec 中的版本号,以及 Example 工程中的版本号,执行以下命令提交代码:
1 | $ cd ~/Lib/ZMLib |
2、将本地仓库与远程仓库关联起来,并推送到远程仓库:
1 | $ git remote add origin https://github.com/czmCWH/ZMLib.git |
3、设置仓库本次发版的版本号:
1 | $ git tag '0.0.1' |
在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 | $ cd ~/Lib/ZMLib |
如上创建公共 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 | $ pod repo |
注意:如果你计划在本地创建
Pod,你应该有SOURCE_URL的push访问权限
2、要检查安装是否成功并准备就绪,请执行以下操作:
1 | $ cd ~/.cocoapods/repos/REPO_NAME |
至此索引库已创建完成,接下来需要创建组件库,并提交 podspec 到私有索引库。
创建组件库
1、在终端执行以下命令创建组件库
1 | $ cd /Lib |
创建成功会自动打开 Example 项目,我们在 CLBase/Classes 目录中添加组件内容,配置 CLBase.podspec 文件:
修改 Podfile 文件中组件适配的版本号,并安装:
1 | $ cd CLBase/Example |
在远程 git 服务器上创建好该组件库对应的代码仓库,然后按照如下步骤提交代码:
1 | $ cd CLBase/ |
一切工作完成,我们就可以发版本了,版本号保持和CLBase.podspec 文件中指定的一致:
1 | $ git tag '1.0.0' |
接下来,我们提交 podspec 到私有索引库。
添加你的 Pod's Podspec 到你的 repo 中
确保对源代码进行了适当的 tagged 和 versioned,然后运行:
1 | $ pod repo push REPO_NAME SPEC_NAME.podspec |
这将运行 pod spec lint,并处理在私有repo中设置spec的所有小细节。
repo的结构应反映这一点:
1 | . |
基本操作如下:
1 | $ cd /Lib/CLBase |
此时我们可以在 git 服务器上看到我们创建的私有索引库:
可以搜索该私有组件库,看是否能使用:
1 | $ cd ~ |
使用私有组件库
你的私有Pod已准备好在 Podfile 中使用。可以将spec repository与 Podfile中的 source 指令一起使用,如下例所示: