Using Pod Lib Create(译)

官方原文地址

入门

我们将使用pod lib create指令来展示创建一个完整的Pods的引导过程。所以让我们从初始命令开始:

pod lib create MyLibrary

注意:你可以通过在--template-url=URL后面添加包含可用模板的git仓库的URL使用你自己的 pod-template

第二个注意:你可以点击回车来选择默认的选择(也就是下划线标注的选择)。

Objective-C 或者 Swift

你被询问的第一个问题是你想要在pod编译中使用什么语言。对于所有的选择,CocoaPods都将会将你的library配置为framework。

制作一个Demo应用

模板将会为你的library生成一个Xcode工程项目。这意味着你不用在Xcode上创建新项目了。

如果你想要有一个pod try MyLib指令能运行的示例工程,或者需要拥有能在应用里测试你自己library(交互检验,自定义字体等等)的,你应该说Yes。一个很好的标准就是“这个pod是否包含一个屏幕截图”。那么,你需要有一个Demo。

选择一个测试的framework

你应该测试你的library。测试要保证人们使用你的library的稳定性。在开源库中这意味着人们可以改变来达到他们内心的期望。我们推荐使用一个测试framework而不是指望苹果的,虽然他也包含测试。在Objective-C中我们列入了两个流行的测试framework: Specta/Expecta 和 Kiwi。如果你不能决定,使用Specta/Expecta。

Specta/Expecta

一个轻量级的TDD / BDD framework 适用于 Objective-C 和 Cocoa。
GitHub repo

Kiwi

Kiwi是iOS开发的行为驱动开发库。目标是提供一个设置和使用非常简单的BDD库。
GitHub repo

主要的区别在于Kiwi是一个Stubs/Mocks/Expectations一体化的方式,然而Specta/Expecta是一个通过不同Podspecs模块化的方式。我们列入了所有必需的星系,以及配置你的测试framework到MyLib-Tests.pch,因此你不用将它们列入各个文件。
在Swift中,我们只提供了Quick/Nimble,因为他是最主流的测试库。

基于视图的测试

根据你编译的库,你会发现基于快照的测试是一种聪明的方式来验证在你页面上不同操作的结果(different actions on your views官方推荐在这里的库)。我们推荐使用FBSnapShotTestCase。如果您正在使用Specta / Expecta,那么我们会添加一个Pod来改进语法。

Objective-C的前缀

通过包围住一个Objective-C项目让我们来知道你的前缀。这意味着我们可以使CocoaPods生成的所有类都适合您的样式,所有从Xcode内部生成的类都将以您的前缀开头。我们知道苹果公司正在弃用前缀,但实际上它们仍然在Objective-C代码库中占有一席之地。

Pod库创建模板

有了这些问题,我们在新创建的项目上运行pod安装。 我们来看看结果:

$ tree MyLib -L 2

  MyLib
  ├── .travis.yml
  ├── _Pods.xcproject
  ├── Example
  │   ├── MyLib
  │   ├── MyLib.xcodeproj
  │   ├── MyLib.xcworkspace
  │   ├── Podfile
  │   ├── Podfile.lock
  │   ├── Pods
  │   └── Tests
  ├── LICENSE
  ├── MyLib.podspec
  ├── Pod
  │   ├── Assets
  │   └── Classes
  │     └── RemoveMe.[swift/m]
  └── README.md

我们试图将根文件夹中的数量保持在最小限度,您将看到以下文件:

  • .travis.yml - travis-ci的一个配置文件。
  • _Pods.xcproject - 你Pod的项目与Carthage支持的符号连接
  • LICENSE - 证书 MIT License.
  • MyLib.podspec - 你的library的Podspec.
  • README.md - 默认的markdown的README文件.
  • RemoveMe.swift/m - 保证初始化编译工作的文件.

以及接下来的文件:

  • Pod - 你library的类的地方
  • Example - 生成的Demo项目 & 测试包

将你的Library放在一起

CocoaPods将直接打开你的项目;从这里你能编辑所有CocoaPods生成的文件。让我们来看一下一个版本的Xcode:

  1. 您可以编辑您的Podspec元数据,这样可以更改您的README和Podspec。
  2. 这是一个Demo Library,如果你不对这个说Yes,你将会失去它。
  3. 这是你之前选择后创建的测试Spec。
  4. 这是Pods开发部分,是你Library实际工作的地方。看它下面的更多的信息。
  5. Pods用于配置项目的地方

这里值得一提的是,人们经常需要注意的一点,Swift的Library需要将其类声明为公开,以便在您的示例库中查看它们。

Pods的开发

开发Pods与正常的CocoaPods不同,因为它们是符号链接的文件,所以对它们进行编辑会改变原始文件,所以你可以从Xcode里对Library工作。你的Demo & 测试将需要使用#import <MyLib / XYZ.h>格式列出对头文件的引用。

添加Travis CI

模板包含一个.travis.yml文件,将会运行项目内包含的默认的测试。如果您有GitHub的开源代码,请在Travis CI上打开您的 profile,并打开库的开关。

部署你的Library

所以你的Library准备好了。首先你应该检查是否Podspec正确,因为你部署的时候不能有错误。这可以有两种方法做到,pod lib lintpod spec lint。两个指令的不同点在于pod lib lint不用访问网路,而pod spec lint检查外部repo和相关标签。如果您正在将一个开源库部署到trunk上,则不能有CocoaPods警告。你Xcode内部可以有警告。您应该继续开始根据getting started with trunk 指导来部署到公众。

如果您正在部署到一个私人的Specs repo,您将需要添加repo。请参阅Private Specs Repos的指南来进行设置。 如果要部署到现有的私人Repo,请使用此命令进行部署

pod repo push SPEC_REPO *.podspec --verbose

完成

👍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容