1.11 到来!

CocoaPods 1.11 将最低 Ruby 版本提高到 2.6,同时增加了对 Ruby 3.0 的支持。它还增加了对“按需资源”的支持,并包含了许多错误修复和改进!

Ruby 2.6 和 Ruby 3.0

随着 1.11 的发布,运行 CocoaPods 所需的最低 Ruby 版本现为 2.6。通过这样做,我们还能够提升一些其他依赖项(例如 ActiveSupport 和 Addressable),这些依赖项通常会与其他设置冲突。我们希望这能解除开发者的限制,让 CocoaPods 变得更加灵活。

Ruby 3.0 现在也受支持,并且是 CocoaPods CI 未来的一部分!这将确保在合并新更改和修复之前,始终针对 Ruby 3.0 进行测试和验证。

按需资源

简而言之,按需资源允许开发人员通过按需下载资产而不是预先运送资产来发布较小的应用程序包。

使用 CocoaPods 1.11,Pod 作者现在可以指定一组资源,以将其作为给定应用程序的按需资源集成。

这是一个使用新的 on_demand_resources DSL 的示例 podspec

Pod::Spec.new do |spec|
  spec.name = 'MyGameAssets'
  spec.version = '1.0'
  # ... rest of root spec entries go here

  spec.on_demand_resources = {
    'level1_assets' => ['level1/**/*.png'],
    'level2_assets' => ['level2/**/*.png']
  }
end

每个键指定一个标记,每个值是包含路径的 glob。

注意:在 on_demand_resources 中指定的按需资源路径不需要也在 resources DSL 或 resource_bundle DSL 中指定。

指定的所有按需资源将自动集成到用户的目标项目中,CocoaPods 1.11 将负责更新用户项目的已知所有资产标记。

例如,给定以下 Podfile

target 'MyGameApp' do
  pod 'MyGameAssets'
end

MyGameAssets.podspec 中指定的 on_demand_resources 将被集成并添加到 MyGameApp 目标!

其他值得注意的增强功能

已添加或扩展了以下 DSL 选项,以满足不同的用例

  • project_header_files DSL:Pod 作者现在可以指定一组属于其 Pod 的 project_header_files。这有助于指定仅供 Pod 本身使用的特定头文件。构建库时,这些头文件不会显示在构建目录中。

  • 新的 script_phase 执行位置:script_phase DSL 已扩展为接受 before_headersafter_headers 选项作为 execution_position。当脚本阶段必须在“复制头文件”阶段之前或之后执行时,这很有用。

  • pre_integrate_hook DSL:类似于在版本 1.10 中添加的 post_integrate_hook DSL,此新挂钩将在用户的项目与生成的 Pods 项目集成之前执行。

Xcode 13 支持

Xcodeproj gem 的新版本已发布,增加了对 Xcode 13 项目的初始支持。要更新,请运行 gem update xcodeproj,或者如果您正在使用 Bundler,请改运行 bundle update xcodeproj

CocoaPods 1.11 默认包含最新版本的 Xcodeproj gem,使其可以直接与 Xcode 13 配合使用。

就是这样!

接下来

与任何其他开源项目一样,CocoaPods 由少数人在业余时间维护和改进。没有官方路线图,新功能将取决于社区的构建意愿!我们欢迎新贡献者和任何希望改进 CocoaPods 的人的帮助!

我们相信 CocoaPods 继续在 iOS 开发中发挥着重要作用。它在 React NativeFlutterKotlin Multiplatform 等替代移动框架中特别受欢迎,我们希望此版本为 pod 作者和 iOS 开发者提供更强大的工具和功能。

一如既往,我们要感谢所有帮助实现此版本发布的贡献者!

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