译文:Cocoapods 1.11来了

原文:https://blog.cocoapods.org/CocoaPods-1.11.0-beta/

CocoaPods 1.11 在支持Ruby 3.0的同时, 将Ruby的最低支持版本提升到了2.6. 它也新增了'On Demand Resources'的支持和一大堆bug修复和改进提升。

Ruby 2.6 and Ruby 3.0

随着1.11的发布,运行Cocoapod的Ruby最低版本来到了2.6. 因为这个改动,我们也能够挤掉一些其他依赖(如ActiveSupport和Addressable),它们经常与其他设置发生冲突. 我们希望这能让开发者们放松下来,让CocoaPods更加灵活。

Ruby 3.0现在也得到了支持,并将成为CocoaPods CI的一部分! 这将确保新的更改和修复在合并之前总是在Ruby 3.0上进行测试和验证。

On Demand Resources按需加载资源

简而言之,On Demand Resources 允许开发者通过按需下载资源(而不是预先发行)来发行更小的应用包。

在CocoaPods 1.11中,pod的作者现在可以指定一组资源作为给定应用程序的随需集成资源。

下面是一个podspec的例子,它使用了新的on_demand_resources DSL:

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。podspec将被集成并添加到MyGameApp的Target中!

其他值得注意的改进

以下DSL选项已被添加或扩展以服务于不同的用例:

  • project_header_files DSL: Pod作者现在可以指定一组project_header_files,它们是Pod的一部分。这有助于指定仅供pod本身使用的特定标题。当构建库时,这些头文件将不会出现在构建目录中。
  • 新的script_phase执行位置: script_phase DSL被扩展为接受execution_positionbefore_headersafter_headers选项。当脚本阶段必须在"Copy Headers" 阶段之前或之后执行时,这是很有用的。

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

Xcode 13 Support

Xcodeproj gem的新版本已经发布,增加了对Xcode 13项目的初始支持。需要更新,运行gem update xcodeproj,或者如果你使用的是Bundler,那么运行bundle update xcodeproj代替。

CocoaPods 1.11默认包含了Xcodeproj gem的最新版本,允许它在开箱即用的情况下与Xcode 13一起工作。

That's it!

What's Next

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

我们相信CocoaPods将继续在iOS开发中扮演重要角色。它尤其在React NativeFlutter 和 Kotlin Multiplatform等移动框架中站稳了脚,我们希望这次发布能为pod作者和iOS开发者提供更强大的工具和功能。

像往常一样,我们要感谢所有帮助我们实现这个发布的贡献者!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章