创建自己的CocoaPod非常简单。如果你已经有一个单独的组件,那么你就是最重要的。本指南概述了整个过程,本节中的其他指南更适合更高级用户。
我们建议让CocoaPods在这里努力工作。Running pod lib create [pod name]
将为您设置一个经过深思熟虑的库结构,使您可以轻松地包含文件并快速入门,我们为此提供了指南。如果您想了解整个过程的最新演练,请继续推进到主干,请查看tutsplus的第三方教程。
Pod文件
CocoaPod和通用开源库之间只有一些区别。除了实际来源之外,最重要的是.podspec
和LICENSE
。没有代码许可,我们不接受库进入主干。有关选择哪种许可证的信息,我们建议您阅读有关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)”。