CocoaPods 0.34

TL;DR:CocoaPods 0.34 已发布,其中包含 SoundCloud 赞助的工作。亮点?支持按构建配置限定 Pod 范围、声明源代码存储库以及更快的下载。

此版本需要对 Podfile 进行更改

我要感谢 SoundCloudTravis Foundation 的支持。如果没有他们的贡献,此版本绝不会如此广泛。此类举措构成了促进 CocoaPods 社区发展的强大引擎。

按构建配置划分的依赖项

阅读此内容

pod 'Lookback', :configurations => ['Debug']

你理解了吗?

现在,你终于可以按构建配置指定依赖项了。这是有史以来要求最多的 CocoaPods 功能之一。

此功能的工作是由 Joachim Bengtsson 启动的,我只能将其描述为一种伟大的开源态度。Joachim 有兴趣策划 Lookback 的完整体验,包括使用 CocoaPods 进行安装。他不仅提出了一个问题,还提出了我们收到的最具雄心的拉取请求之一。不幸的是,鉴于它对集成策略的影响,该补丁进入了停滞状态,并且停滞了一年多。然而,由于 SoundCloud 的支持(以及 Eloy 的耐心),此功能已发布。

不过,有一些需要注意的注意事项

  • 目前,只能按 Pod 而不是按单个子规范按配置限定依赖项范围。
  • 所有资源都将被复制,无论构建配置如何。
  • CocoaPods 生成的致谢文件包含所有 Pod,无论它们是否按构建配置限定范围。

私有规范存储库

我们的用户经常要求的另一个功能是在 Podfile 中声明规范存储库的支持。通过此更改,Podfile 变得完全确定。此功能是由 François Benaiteau 启动的。以下是其工作原理

source 'https://github.com/CocoaPods/Specs'
source 'https://github.com/Organization/Specs'

您可能想知道当存储库尚未在用户的系统上克隆时会发生什么。好吧,不用再想了,因为Samuel Giddins已将此功能提升到了一个新的水平。如果缺少存储库,CocoaPods 将自动克隆它,甚至会精心制作一个合适的名称。

为了简化过渡,如果 Podfile 中未指定存储库,则仍支持隐式包含所有存储库的 0.34 之前的行为。但是此逻辑已被弃用,因此现在是采用 Podfile 中的新语法的好时机。

需要记住的另一件事是存储库的顺序很重要。CocoaPods 仅考虑 Pod 可用的第一个存储库中的 Pod 版本。在包含 Pod 之后声明的存储库中指定的 Pod 的更高版本不被考虑。此功能可防止 Pod 在更新期间意外切换到另一个存储库,因为已引入新的更高版本。对于私有存储库,此功能可能有用,其中主存储库中可用的 Pod 的最新版本是自定义的。

下载速度更快

主存储库中可用的 97% 的 Pod 使用 git 源(确切地说,6403 个中有 6193 个)。我们在 CocoaPods 开发早期就注意到了这一趋势,并且我们已经为这种下载策略采用了缓存。此解决方案对于循环使用公共 Pod 池并对其进行升级的用户来说效果相当好。但是,它的缺点是在首次克隆 Pod 时会产生性能影响。对于具有复杂历史的存储库,这种影响会显着增强。

幸运的是,Marin Usalj前来救援,并建议放弃缓存系统,转而采用浅克隆 git 存储库。结果?更快的体验和更快的pod try

Pods 目录的重新组织

Pods 目录并不是人类组织的巅峰之作。随着 CocoaPods 的发展,添加了不同的工件,CocoaPods 主页面的布局变得有些混乱。我们决定整理房间的时间到了。但是我们不能让现有的安装受冷落。因此,我们实现了一种迁移机制,该机制完全自动化地进行转换。这是我们正在努力实现的目标

遗憾的是,在发布候选期间,我们发现大量 Pod 依赖于不受支持的 PODS_ROOT 配置设置,而不是使用 vendored_frameworksvendored_libraries 属性。为了避免出现问题,我们还原了将 Pod 源移动到恰如其名地称为 Sources 目录的更改——我知道这个名称是纯粹的艺术。但是,这是一个临时的创可贴,Podspec 维护者应尽快更新其规范

基础工作

SoundCloud 和 Travis Foundation 的支持扩展到了一个不太显眼但肯定不亚于重要性的层面。

许多 CocoaPods 依赖项已清理干净。它们的大多数问题已得到解决。代码库样式和覆盖范围已得到解决。坚实的依赖关系意味着 CocoaPods-Core 团队现在只能专注于最后一公里,尤其是在集成策略中。

另一个非常细微但非常重要的更改是,现在 Podspec 上的 requires_arc 默认值为 true。这看起来可能是最简单的补丁(只有一行代码),但它提供了有关 CocoaPods 开发实际复杂性的见解:保留现有安装……又名向后兼容性。因此,这个看似无害的 问题 需要将整个规范存储库切换到 JSON(以便安全地以编程方式编辑所有规范),而这反过来又需要实现 trunk(以防止主存储库成为不同格式的 Babel)。当然,说这些功能源于这个问题有点牵强,但至少对我来说,它们的种子已经播撒在那里。我个人非常高兴看到它在两年多后终于关闭。顺便说一句,如果您有自定义和私有 Podspec,我建议检查它们以避免出现任何问题。

更新

要安装 CocoaPods 的最新版本,您可以运行

$ [sudo] gem install cocoapods

在版本 1.0 之前,我们强烈建议您保持 CocoaPods 为最新状态。

有关所有详细信息,请不要错过变更日志