通常我们在创建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
的Podspec
README.md
markdown
中的默认自述文件。ReplaceMe.swift
单个文件,以确保最初可以进行编译。
相关目录:
ZMLib
在这里放置library's classes
Example
这是生成的演示和测试包
将 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
指令一起使用,如下例所示: