CocoaPods 1.6 概览

栏目: IOS · 发布时间: 5年前

内容简介:前几天,CocoaPods 官方博客发布了一篇新博文而且,根据上述博文介绍,1.7.0 的新版本特性似乎还很酷炫:不过,1.7.0 仅是刚刚开始开发和测试,距离正式版的发布应该还有一段时间。就如 1.6.0 从去年的 8 月份就发布了 Beta 版,而经历大半年直到上个月才发布正式版:

前几天,CocoaPods 官方博客发布了一篇新博文 《CocoaPods 1.7.0 Beta!》 ,看到标题你可能会有点慌,1.6 正式版不是刚发布吗,这么快 1.7.0 就开始 Beta 版了?!

而且,根据上述博文介绍,1.7.0 的新版本特性似乎还很酷炫: 多 Swift 版本支持、生成多个 Xcodeproj、增量安装、对 Master Specs Repo 提供 CDN 支持、允许在 Windows 系统上使用 CocoaPods 等。

不过,1.7.0 仅是刚刚开始开发和测试,距离正式版的发布应该还有一段时间。就如 1.6.0 从去年的 8 月份就发布了 Beta 版,而经历大半年直到上个月才发布正式版:

  • 2018-08-16: 1.6.0.beta.1
  • 2018-10-17: 1.6.0.beta.2
  • 2019-01-25: 1.6.0.rc.1
  • 2019-01-29: 1.6.0.rc.2
  • 2019-02-07: 1.6.0
  • 2019-02-22: 1.6.1

CocoaPods 1.6.0 版本的更新主要集中在针对大型工程的 稳定性、性能和可扩展性方面 。本文将简要介绍一下 1.6.0 的几个重要更新,如:重写 Build Settings 的生成过程,使其速度更快,且更容易维护;以及增强了在同一 pod 库中集成多个 test specs 等。

其完整的更新内容可以查阅 Changelog

重写 Build Settings 的生成

在 1.6.0 中, 完全重写 了 Build Settings(位于 CocoaPods 生成的 .xcconfig 文件中)的生成过程。这次重写的主要目的是清理旧的代码,并使其在大型工程上可以更好地扩展。

我们知道,当 CocoaPods 的贡献者对 Build Settings 进行更改时,通常会导致一定程度的编译性能下降,并引发无法预料的边缘情况(edge cases)组合。这使得测试这些更改以及验证每个 Bug 修复是否正确执行变得非常困难。

所以,从用户的角度看,这次重写应该是无侵入的,对代码的编译不会造成影响。如果你在使用过程中遇到问题,可以在 GitHub 上提一个 issue,并提供复现问题的步骤和示例程序。

为了验证这次重写生成 Build Settings 的正确性,我们与 LinkedIn 的朋友密切合作,他们在一个大型项目工程中使用了 CocoaPods。通过这次重写,以及其他一些性能改进,使得 pod install 的执行时间从最初的 3 分钟减少到大约 40 秒,提升了将近 77%。

虽然这次更改对用户来说是不可见的,但它有助于随着 App 工程复杂度的增加,保证 CocoaPods 的可扩展性。

增强 Test Spec 的集成

对于 pod 库作者来说,Test Specs 是 CocoaPods 非常基础的一部分。在一个 pod 库的 podspec 配置文件中,作者可以声明不同的测试源(test sources),并通过 lint 命令来执行,进行不同的单元测试。从 1.6.0 开始,多个 test_spec 条目将不再生成单个测试 bundle target,而是分别为每个测试用例生成各自的 bundle。

举个例子,如下:

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 测试用例是不需要依赖 app 宿主工程的,而对于 SnapshotTests 则需要。但在之前的 CocoaPods 版本中,此时 TestsSnapshotTests 这两个 test specs 会被合并到同一个单元测试 bundle target 中,导致 Tests 的执行也需要在一个 app 宿主工程下,因此可能会带来不必要的影响。

如下图所示:

CocoaPods 1.6 概览

这意味着,同一 pod 库所有的 test specs 都会被合并到同一个测试 bundle target 中,pod 库的作者无法分离它们并以不同的方式进行分类,例如,分别在不同的 test specs 中配置不同的依赖项、资源或编译器选项。

在 1.6.0 版本中,将生成如下内容:

CocoaPods 1.6 概览

现在看起来好多了,每个 test spec 都会单独创建一个对应的 bundle target,互不影响。

此外,最近 CocoaPods 还发布了一个 cocoapods-generate 插件,让开发者创建 pod 库的流程得到很大的改善和简化。

更长的测试周期

由于 CocoaPods 是由世界各地的开发者在业余空闲时间一起维护和改进的,所以接下来我们将不再对 CocoaPods 每个版本的发布日期做出承若。

1.6.0 版本将会经历很长的测试周期,并在稳定版发布之前一直保持 beta 名称(译者注:正如开头所说的,大概花了大半年时间才发布了 1.6.0 的正式版)。

目前 1.7.0 版本已经开始测试了,欢迎使用,你可以通过以下方式安装 beta 版,并在 GitHub 上提交 issue 反馈问题:

gem install cocoapods --pre

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

跨越

跨越

Lydia / 人民文学出版社 / 2018-4-1 / 39

三跨青年Lydia的一线奋斗笔记,抛却艰深理论,用亲身经验为你打通任督二脉。 揭开思维认知盲区,剖析成长潜在技巧,探知进阶背后逻辑,在拐点到来的时刻,推动人生加速上行。 10大职场潜在成长技巧,13种打破思维认知的的碎片重建,15种正确面对情感的能量释放, 38篇有世界 观,有方法论的故事,为你打开上升通道。 停留在思维层面的改变人生,其实已然陷入困境, 人生上行的实......一起来看看 《跨越》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换