专栏名称: 知识小集
目录
相关文章推荐
archrace  ·  上海和睿规划建筑设计有限公司 / ... ·  2 天前  
gooood谷德设计网  ·  SALT Architects|南非水源管理补给厂 ·  2 天前  
archrace  ·  Triptyque 新作 / ... ·  3 天前  
gooood谷德设计网  ·  上海/杭州招聘 | 否则建筑 ... ·  5 天前  
gooood谷德设计网  ·  MVRDV|曼谷设计周 – Mega Mat装置 ·  4 天前  
51好读  ›  专栏  ›  知识小集

CocoaPods 1.9 新特性

知识小集  · 掘金  ·  · 2019-12-31 08:31

正文

阅读 203

CocoaPods 1.9 新特性

CocoaPods 1.9 增加了对 XCFrameworks 的支持,服务于 Pod 发布者的基于配置的依赖关系,所生成方案的代码覆盖率,以及其他增强功能和错误修复!

除了重要的错误修复之外,此版本还包括多项功能强化。

XCFramework 支持

随着 Xcode 11 的发布,Apple 引入了使用 .xcframework 文件扩展名的新 bundle 格式。这种格式允许将为不同架构和平台编译的框架的多个副本组合为单个结构。二进制依赖项还需要 XCFrameworks,以支持 macOS Catalina 中引入的新 Catalyst 平台。

此版本引入了让 Pod 发布者使用现有的 vendored_framework DSL 来支持 XCFrameworks 的方法。例如:

Pod::Spec.new do |s|
  s.name         = 'ToastLib'
  s.version      = '1.0.0'

  # ...rest of attributes here

  s.vendored_frameworks = 'ButterLib.xcframework'
end
复制代码

对于包含动态框架的 Pod 的应用程序,将在项目中添加一个名称为 [CP] Prepare Artifacts 的新脚本阶段,以方便将 .xcframework 包含在应用程序包中。

有关如何创建 XCFramework 的更多详细信息,请查看 Apple 的 WWDC 演讲 Binary Frameworks in Swift

Podspec 的基于配置的依赖关系

CocoaPods 长期以来一直支持在配置文件中排除一些依赖项。例如,对于只在开发调试期间使用的依赖,可以使用 pod Podfile DSL 上的 :configurations 选项来设置:

target 'BananaApp' do
  pod 'Toast', :configurations => ['Debug']
end
复制代码

新版本将该功能扩展到 Pod 发布者。 相同的 :configurations 选项现在可以与 dependency Podspec DSL一起使用:

Pod::Spec.new do |s|
  s.name         = 'ToastLib'
  s.version      = '1.0.0'

  # ...rest of attributes here

  s.dependency 'ButterDebugging', :configurations => ['Debug']
  s.dependency 'ErrorReportingTool', :configurations => ['Release']
end
复制代码

注意:当前仅支持 Debug 和 Release 配置。将来可能会添加对自定义配置名称的支持。

测试规范中的代码覆盖率

CocoaPods 在 1.7 版中首次引入了配置为 Podspecs 生成的 Xcode 方案的功能。此版本通过在 scheme DSL 中指定 code_coverage 选项,增加了对启用代码覆盖率的支持:

Pod::Spec.new do |s|
  s.name         = 'Networking'
  s.version      = '1.0.0'

  # ...rest of attributes here

  s.test_spec 'Tests' do |test_spec|
    test_spec.scheme = {
      :code_coverage => true, :environment_variables => {'FOO' => 'BAR' }
    }
  end
end
复制代码

Swift 版本变体

着新的 Swift 版本发布,Pod 发布者可以通过使用 swift_versions Podspec DSL 增加对多个 Swift 版本进行编译的支持。

为了更好地支持此功能,Podfile DSL 在 1.7 中进行了更新,以允许用户使用 supports_swift_version DSL 指定其应用程序支持的 Swift 版本。

如果两个不同的 target 包含相同的依赖关系,但需要不同的 Swift 版本,则 CocoaPods 现在将为同一 Pod 创建多个不同的目标,以适应所使用的不同 Swift 版本。

如以下 Pod:

Pod::Spec.new do |s|
  s.name         = 'CannonPodder'
  s.version      = '1.0.0'

  # ...rest of attributes here

  s.swift_versions = ['4.0', '5.0']
end
复制代码






请到「今天看啥」查看全文