[CocoaPods]使用Pod Lib创建
入门
我们将使用pod lib create
引导过程来创建整个pod 。那么让我们从初始命令开始:
pod lib create MyLibrary
注意:要使用您自己的pod-template,您可以添加参数
--template-url=URL
,其中URL是包含兼容模板的git repo。
第二个注意:您可以按return键选择默认(带下划线)选项。
Objective-C或Swift
你问的第一个问题是你想要构建一个pod的语言。对于这两个选择,CocoaPods会将你的库设置为一个框架。
制作演示应用程序
该模板将为您的库生成Xcode项目。这意味着您无需在Xcode中创建新项目。
如果您想要一个示例项目pod try MyLib
或者需要让您的库测试在应用程序内运行(交互测试,自定义字体等),那么您应该说是。一个好的指标是“这个Pod应该包含截图吗?” ; 如果是这样,那么你应该有一个演示。
选择测试框架
你应该测试你的库。测试可确保使用您库的人员的稳定性。在开源库中,这意味着人们可以在知道他们没有打破隐含期望的情况下进行更改。我们建议使用测试框架,而不是依赖Apple的XCTest,但包括在内。在Objective-C中,我们选择了两个流行的测试框架; Specta / Expecta和Kiwi。如果您无法决定,请使用Specta / Expecta。
Specta / Expecta
Objective-C&Cocoa的轻量级TDD / BDD框架。
GitHub仓库
Kiwi
Kiwi是一个用于iOS开发的行为驱动开发库。目标是提供一个易于设置和使用的BDD库。
GitHub仓库
主要区别在于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创建模板
随着问题的结束,我们运行pod install
新创建的项目。我们来看看结果:
1 $ tree MyLib -L 2 2 3 MyLib 4 ├── .travis.yml 5 ├── _Pods.xcproject 6 ├── Example 7 │ ├── MyLib 8 │ ├── MyLib.xcodeproj 9 │ ├── MyLib.xcworkspace 10 │ ├── Podfile 11 │ ├── Podfile.lock 12 │ ├── Pods 13 │ └── Tests 14 ├── LICENSE 15 ├── MyLib.podspec 16 ├── Pod 17 │ ├── Assets 18 │ └── Classes 19 │ └── RemoveMe.[swift/m] 20 └── README.md
我们试图将根文件夹中的金额最小化,您将看到以下文件:
.travis.yml
- travis-ci的设置文件。_Pods.xcproject
- Pod的项目符号链接到Carthage支持LICENSE
- 违反MIT许可证。MyLib.podspec
- 您库的Podspec。README.md
- 降价中的默认README。RemoveMe.swift/m
- 单个文件以确保最初编译工作。
和以下文件夹:
Pod
- 这是您放置库课程的地方Example
- 这是生成的演示和测试包
将您的库放在一起
CocoaPods将立即打开您的Xcode项目; 从那里你可以编辑CocoaPods生成的所有文件。让我们看一下Xcode的扩展版本:
- 您可以编辑Podspec元数据,这样您就可以更改README和Podspec。
- 这是演示库,如果你没有对它说“是”,你将会错过这个。
- 以下是您之前选择的框架的已删除测试规范。
- 这是Development Pods部分,实际上您可以在库中工作。请参阅下面的详细信息。
- 最后,Pods用于设置项目。
这里值得一提的是,因为这会经常捕获人,所以Swift库需要声明它的类,public
以便在示例库中看到它们。
开发Pods
开发Pod与普通CocoaPods的不同之处在于它们是符号链接文件,因此对它们进行编辑将更改原始文件,因此您可以从Xcode内部处理您的库。您的演示和测试需要使用该#import <MyLib/XYZ.h>
格式包含对标头的引用。
[!] Note:
由于发展豆荚实现细节,当你添加新的/现有的文件Pod/Classes
或Pod/Assets
或更新podspec,你应该运行pod install
或pod update
。
添加Travis CI
该模板包含一个.travis.yml
文件,该文件将运行项目中包含的默认测试。如果您在GitHub上有一个开源代码库,请在Travis CI 上打开您的个人资料并打开该库。
部署您的库
所以你已经准备好了你的库。首先,您应该检查Podspec是否正确提示,因为您无法部署错误。这可以通过两种方法完成,pod lib lint
并且pod spec lint
。它们之间的区别在于pod lib lint
不访问网络,而是pod spec lint
检查外部仓库和相关标签。
如果要将Open Source库部署到trunk,则不能发出CocoaPods警告。你可以有Xcode警告。您应该继续使用trunk指南开始部署到公众。
如果您要部署到私有Specs仓库,则需要添加该仓库。请参阅Private Specs Repos上的指南以进行设置。如果要部署到现有的私有回购,请使用此命令进行部署:
pod repo push SPEC_REPO *.podspec --verbose