上一章CocoaPods教程请查看:CocoaPods测试
创建自己的CocoaPod非常简单。如果你已经有一个单独的组件,那么就已经准备就绪了。本指南是整个过程的概述,本节中的其他指南对于更高级的用户来说,它们是更深入的了解的基础。
我们建议让CocoaPods在这里努力工作。运行pod lib create [pod name]将为你设置一个经过深思熟虑的库结构,使你可以轻松地包含文件并快速入门,我们对此提供了指南。
Pod文件
CocoaPod和通用开源库之间只有几个区别。除了实际来源外,最重要的是.podspec和LICENSE。没有代码许可证,我们不接受将库加入主干。有关选择哪种许可证的信息,建议您阅读有关CodingHorror或tl; dr Legal的文章。
开发CocoaPods
你可以从系统上的库文件夹处理库。
另外,你可以使用:path选项在应用程序项目中工作:
pod 'Name', :path => '~/code/Pods/'
测试
你可以通过将pod链接到它的目录文件来测试Podfile的语法,这不会测试链接的下载方面。
$ cd ~/code/Pods/NAME
$ pod lib lint
在向世界发布新的Pod之前,最好测试一下能否将Pod成功安装到Xcode项目中。你可以通过以下几种方式做到这一点:
将你的podspec推送到存储库,然后用Podfile创建一个新的Xcode项目,并将你的pod添加到文件中,如下所示:
pod 'NAME', :git => 'https://example.com/URL/to/repo/NAME.git'
然后运行
pod install
-- or --
pod update
另外,如果你的单元测试有一个单独的Xcode项目,那么你可以为这个项目使用一个引用你的开发podspec的Podfile
xcodeproj 'NAMETests'
workspace '../NAME'
pod 'NAME', :path => '../'
发布
一旦你有了一个发布版本,你就需要制作相应的标签。首先运行pod lib lint,然后创建你的标签,并推送它。
发布工作流程与以下类似。
$ cd ~/code/Pods/NAME
$ edit NAME.podspec
# set the new version to 0.0.1
# set the new tag to 0.0.1
$ pod lib lint
$ git add -A && git commit -m "Release 0.0.1."
$ git tag '0.0.1'
$ git push --tags
提交开放源代码
一旦你的标签被推送,你可以使用命令:
pod trunk push NAME.podspec
发送你的库到规格报告。有关此设置的更多信息,请参见使用Trunk进行设置。
提交个人代码
一旦你的标签被推送,你可以使用命令:
pod repo push [repo] NAME.podspec
将你的库发送到指定的私有spec repo。
库版本
不幸的是,通常开发人员解释版本号不好的问题或将情感价值分配给特定的版本号。
然而,任意修改的版本并不是一个好主意,而不是一个合适的版本号(见语义版本控制)。让我们解释,在一个理想世界中,我们希望人们与它交互:
- “我想开始使用CocoaLumberjack,当前版本会没事的。“所以开发者添加一个依赖到库中,而没有指定版本要求,接着运行pod install:
pod 'CocoaLumberjack'
- 在将来的某个时候,开发人员想要更新依赖项,为此再次运行install命令,该命令现在将安装lib的版本,该版本是当时的最新版本。
- 在某个时候,开发完成了客户端工作(或者lib的新版本更改了API,不需要更改),所以开发向依赖项添加了版本需求。例如,考虑到lib的作者遵循semver准则,你可以稍微相信在“1.0.7”和“1.1.0”之间不会进行API更改,而只会修复bug。因此,不需要特定的版本,开发人员可以指定任何“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。
评论前必须登录!
注册