使用Pod Lib创建

入门

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

pod lib create MyLibrary

注意:要使用您自己的pod-template,您可以添加参数--template-url = URL,其中URL是包含兼容模板的git repo。
第二个注意:您可以按回车键选择默认(带下划线)选项。

Objective-C 或者 Swift

你被问到的第一个问题是你想要创建一个 pod 的语言。对于这两种选择,CocoaPods都会将你的库设置为一个框架。

制作演示应用程序

该模板将为您的库生成一个Xcode项目。 这意味着您不必在Xcode中创建新项目。

如果你想为 pod 尝试一个 MyLib 的示例项目,或者需要让你的库的测试在应用程序中运行(交互测试,自定义字体等), 一个很好的指标, 是这个 Pod 应该包含屏幕截图; 如果是这样,那么你应该有一个演示。

选择测试框架

你应该测试你的 Library .测试可以确保当你的 Library 被人使用时的稳定性. 在开放源代码库中,这意味着人们可以在知道自己没有违背隐含期望的情况下进行更改. 我们推荐使用测试框架,而不是紧紧依赖Apple的XCTest.在Objective-C中,我们包含两种流行测试框架的选择; Specta / Expecta和Kiwi . 如果您不能决定,请使用Specta / Expecta.

  • Specta/Expecta : Objective-C和Cocoa的轻量级TDD / BDD框架。GitHub repo
  • Kiwi : Kiwi是iOS开发的行为驱动开发库。 目标是提供一个安装和使用起来非常简单的BDD库。GitHub repo

主要区别在于Kiwi是一种对存 Stubs/Mocks/Expectations 的一体化方法,而Specta / Expecta是通过不同Podspecs的模块化方法。 我们在MyLib-Tests.pch中包含了所有必要的包含和设置,以便您不必将它们包含在每个文件中。

在Swift中,我们只提供Quick / Nimble选项,因为这看起来是主要的测试库。

基于视图的测试

根据您建立的库,您可能会发现基于快照的测试是验证视图上不同操作结果的智能方法。 我们建议使用FBSnapShotTestCase,如果您使用的是Specta / Expecta,那么我们会包含一个Pod来改进语法。

Objective-C的前缀

为了包装一个Objective-C项目,我们想知道你的类的前缀。 这意味着我们可以让所有由CocoaPods生成的类都适合您的样式,并且从Xcode内部生成的所有类都将以您的前缀开头。 我们知道Apple不赞成使用前缀,但实际上它们在Objective-C代码库中仍然占有一席之地。

Pod Lib创建模板

随着问题的结束,我们在新创建的Project上运行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 - a setup file for travis-ci.
  • _Pods.xcproject - a symlink to your Pod's project for Carthage support
  • LICENSE - defaulting to the MIT License.
  • MyLib.podspec - the Podspec for your Library.
  • README.md - a default README in markdown.
  • RemoveMe.swift/m - a single file to to ensure compilation works initially.

和以下文件夹:

  • Pod - 这是你放置你的 Library 的类的地方
  • Example - 这是生成的Demo&Testing包

把 Library 放在一起

CocoaPods会马上打开你的Xcode项目; 从那里你可以编辑由CocoaPods生成的所有文件。 我们来看看Xcode的扩展版本:

image.png
  • 您可以编辑您的Podspec元数据,这可以让您更改自述文件和Podspec。
  • 这是演示库,如果你没有对它作出肯定的回答,你会错过这个。
  • 这是您之前选择的框架的一个残缺测试规范。
  • 这是 Development Pods 部分,实际上您可以在 Library 工作。 请参阅下面的详细信息。
  • 最后在设置项目时使用Pods。

在这里值得一提的是,因为这经常吸引人们,所以Swift库需要将它的类声明为public,以便在示例库中看到它们。

Development Pods

Development Pod与普通的CocoaPods不同,它们是符号链接的文件,所以编辑它们会改变原始文件,所以你可以在Xcode中使用你的库。 您的演示和测试需要使用#import <MyLib / XYZ.h>格式包含对标题的引用。

注意:由于Development Pod的实现细节,当您将新的/现有的文件添加到Pod / Classes或Pod / Assets或更新您的podspec时,应该运行pod install或pod update。

添加Travis CI

该模板包含一个.travis.yml文件,该文件将运行项目中包含的默认测试。 如果你在GitHub上有一个开源的 repo,打开Travis CI上的个人资料并开启库。

部署 Library

所以你已经准备好了 Library。 首先,您应该检查 Podspec 是否正确删除,因为您无法部署错误。 这可以用两种方法完成,即 pod lib lint 和 pod spec lint。 它们之间的区别在于 pod lib lint 不访问网络,而 pod spec lint 检查外部回购和相关标签。

如果您将开源库部署到 trunk,则不能有 CocoaPods 警告。 尽管你可以有 Xcode 警告。 您应该继续使用 trunk guide
开始部署给公众。

如果您正在部署到私人Specs repo,您需要添加 repo。 查看 Private Specs Repos 的指南来设置。 如果要部署到现有的Private Repo,请使用以下命令来部署:

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

推荐阅读更多精彩内容