[CocoaPods]制作CocoaPod

创建自己的CocoaPod非常简单。如果你已经有一个单独的组件,那么你就是最重要的。本指南概述了整个过程,本节中的其他指南更适合更高级用户。

我们建议让CocoaPods在这里努力工作。Running pod lib create [pod name]将为您设置一个经过深思熟虑的库结构,使您可以轻松地包含文件并快速入门,我们为此提供了指南。如果您想了解整个过程的最新演练,请继续推进到主干,请查看tutsplus的第三方教程。

Pod文件

CocoaPod和通用开源库之间只有一些区别。除了实际来源之外,最重要的是.podspecLICENSE。没有代码许可,我们不接受库进入主干。有关选择哪种许可证的信息,我们建议您阅读有关CodingHorror或tl; dr Legal的文章。

发展

您可以从系统上的文件夹中处理库。

或者,您可以使用以下:path选项从应用程序项目开始工作:

pod 'Name', :path => '~/code/Pods/'

测试

您可以通过将pod映射到其目录的文件来测试Podfile的语法,这不会测试linting的下载方面。

1 $ cd ~/code/Pods/NAME
2 $ pod lib lint

在向全世界发布新Pod之前,最好测试一下您是否可以将您的pod成功安装到Xcode项目中。您可以通过以下几种方式执行此操作:

将podspec推送到存储库,然后使用Podfile创建一个新的Xcode项目,并将您的pod添加到文件中,如下所示:

pod 'NAME', :git => 'https://example.com/URL/to/repo/NAME.git'

然后运行

1 pod install
2 -- or --
3 pod update

或者,如果您有单独的Xcode项目用于单元测试,则可以将Podfile用于此项目,该项目引用您的开发podspec

1 xcodeproj 'NAMETests'
2 workspace '../NAME'
3 
4 pod 'NAME', :path => '../'

释放

准备好发布后,您需要制作相应的标签。首先快速运行,pod lib lint然后创建标签并推送它。

发布工作流程类似于以下内容。

1 $ cd ~/code/Pods/NAME
2 $ edit NAME.podspec
3 # set the new version to 0.0.1
4 # set the new tag to 0.0.1
5 $ pod lib lint
6 
7 $ git add -A && git commit -m "Release 0.0.1."
8 $ git tag '0.0.1'
9 $ git push --tags

提交开源代码

推送标签后,您可以使用以下命令:

pod trunk push NAME.podspec

将您的库发送到Specs仓库。有关获取此设置的详细信息,请参阅使用中继进行设置。

提交私人密码

推送标签后,您可以使用以下命令:

pod repo push [repo] NAME.podspec

将您的库发送到指定的私有规格仓库。有关获取此设置的详细信息,请参阅Private CocoaPods。

库版本控制

遗憾的是,开发人员通常不会很好地解释版本号或为某些版本号分配情感价值。

但是,作为版本的任意修订对于库管理器而言不是一个好主意,而不是正确的版本号(请参阅语义版本控制)。让我们解释一下,在理想世界中,我们更喜欢人们与之互动:

  • “我想开始使用CocoaLumberjack,现在的版本将很好。”因此,开发人员在没有版本要求的情况下添加了对lib的依赖,并且pod install将使用最新版本:
1  pod 'CocoaLumberjack'
  • 一段时间到未来,开发者想要更新的依赖关系,并为此再次运行安装命令,现在安装的是最新版本的lib的版本,在那个时候

  • 在某些时候,dev在客户端工作上完成(或者更新版本的lib更改API并且不需要更改),因此开发人员向依赖项添加了版本要求。例如,考虑到lib的作者遵循semver指南,您可以在某种程度上相信在“1.0.7”和“1.1.0”之间不会进行API更改,而只会修复错误。因此,开发人员可以指定允许任何 “1.0.x” ,而不是要求特定版本,只要它高于“1.0.7”:

pod 'CocoaLumberjack', '~> 1.0.7'

关键是开发人员可以通过简单地pod install再次运行来轻松跟踪新版本的依赖项,如果他们必须手动更改所有内容,他们可能会做得更少。CocoaPods使用不太严格的语义版本形式,因为它不会强迫您使用X.Y.Z,您可以使用X.Y版本。

CocoaPods版本细节

CocoaPods使用RubyGems版本来指定pod规范版本。该RubyGems的版本管理策略描述用于解释版本号的规则。该RubyGems的版本说明符介绍如何正确地使用比较运算符指定依赖的版本。

遵循RubyGems中建立的模式,也可以在CocoaPods中指定预发布版本。例如,可以通过指定版本1.2的预发行版1.2-beta3。在此示例中,依赖项说明符~> 1.2-beta将匹配1.2-beta3

谷歌有一个关于它是如何工作的精彩视频:“CocoaPods和Squiggly Arrow的案例(Route 85)”。

上一篇:redis底层数据结构分析


下一篇:Redis SCAN命令实现有限保证的原理