CocoaPods 1.6.0 测试版开始!

CocoaPods 1.6.0 版本继续关注大型项目的稳定性、性能和可扩展性。

我们很高兴地宣布 1.6.0 的第一个测试版现已推出!在此版本中,我们改进了构建设置生成流程,使其更快、更易于维护。我们还增强了同一 Pod 中多个测试规范的集成。

改进的构建设置

构建设置(位于 CocoaPods 生成的 .xcconfig 文件中)的生成已完全重写。此重写的首要目标是清理代码,并使其在大项目中具有更好的可扩展性。

当 CocoaPods 的贡献者进行构建设置更改时,通常会导致大量级联性能回归,并触发边缘案例的不寻常组合。这使得测试这些更改并验证每个修复程序是否对每个人都正常工作变得非常困难。

从用户的角度来看,此重写应在编译代码时没有任何影响。如果有任何看起来不正确的地方,请提交 问题,提供步骤并包含演示该问题的示例应用程序。

为了演示此重写的结果,我们与 LinkedIn 的朋友们密切合作,他们在大型项目中使用 CocoaPods。此重写以及其他一些性能改进,已将 pod install 时间从原来的 3 分钟减少到大约 40 秒,即快了 77%

此更改虽然大部分是不可见的,但有助于确保 CocoaPods 随着应用程序的增长而扩展。我们非常感谢 LinkedIn 的朋友们对 CocoaPods 的贡献以及他们为改进此项目所花费的时间。

增强的测试规范集成

测试规范正逐渐成为 CocoaPods 中库作者的基本组成部分。通过 lint 指定测试源并执行测试源的能力使此功能成为一个无价的工具,并允许将 podspec 文件作为库的真实来源。从 1.6.0 开始,多个 test_spec 条目将不再生成单个测试包目标,而是为每个条目生成一个单元测试包。

让我们使用以下内容作为示例

Pod::Spec.new do |s|
  # ... rest of root spec entries go here

  # Unit Test Sources - Those do not require an app host to run. 
  # They also require 'OCMock' dependency.
  s.test_spec 'Tests' do |test_spec|
    test_spec.source_files = 'Tests/**/*.{h,m}'
    test_spec.dependency 'OCMock'
  end

  # SnapShot Tests Sources - Those *do* require an app host to run.
  s.test_spec 'SnapshotTests' do |test_spec|
    test_spec.requires_app_host = true
    test_spec.source_files = 'SnapshotTests/**/*.{h,m}'
  end

“Tests”和“SnapshotTests”测试规范都将合并到单个单元测试包目标中。这还产生了不希望的效果,即为“Tests”测试规范使用应用程序主机,而库作者并未明确声明。

它看起来像这样

这意味着库作者无法拆分其测试源并以不同的方式对它们进行分类,例如使用不同的依赖项、资源或编译器选项集。

使用 1.6.0,现在将生成以下内容

好多了!

我们强烈支持为代码进行测试的想法,我们的目标是构建合适的工具来使用 CocoaPods 支持此想法。让 podspec 成为真实来源,并结合最近发布的 cocoapods-generate 插件,可以极大地改善和简化你的开发者体验。

更长的 Beta 周期

我们故意不为 CocoaPods 提交特定的发布日期。这主要是由于 CocoaPods 由世界各地多人的业余时间维护和改进。做出这样的承诺很难实现,而且很可能会让每个人都失望。

1.6.0 版本将经历更长的 Beta 周期,并在稳定之前以“beta”名称存在一段时间。我们鼓励你使用 1.6.0 beta 版,并通过提交你发现的任何问题来帮助我们。

要安装它,请使用

$ gem install cocoapods --pre

接下来是什么?

我们总是喜欢利用博客文章的最后一点来表达我们对下一个版本(目前的目标是 1.7.0)的想法。更具体地说,我们希望扩展 swift_version DSL,以支持一系列 Swift 版本,而不仅仅是单个版本,类似于 Swift 包管理器

最后,我们一直在大力改进库的内部结构,并研究如何使 pod install 过程增量化,并以使 Xcode 更好地处理超大型项目的方式对其进行更改,以提高响应速度。

感谢您让 CocoaPods 1.6.0 成为现实!我们已经取得了长足的进步。

查看 变更日志 以获取完整更改列表。

<3