9.1.9 SwiftPM 5.3 发布说明

原文链接: https://docs.swift.org/latest/documentation/packagemanagerdocs/5.3/

9.1.9 SwiftPM 5.3 发布说明

SwiftPM 在 5.3 版本中带来了若干新特性,这些特性都以工具版本为前提,属于选择性启用。

条件依赖

你现在可以为 Swift 包的目标依赖声明条件,例如按平台限制依赖。这让你在描述支持多平台的复杂目标依赖时拥有更大的灵活性。(40237402)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
// swift-tools-version:5.3

import PackageDescription

let package = Package(
    name: "SamplePackage",
    dependencies: [
        .package(url: "https://github.com/pureswift/bluetooth", .branch("main")),
        .package(url: "https://github.com/pureswift/bluetoothlinux", .branch("main")),
    ],
    targets: [
        .target(
            name: "SampleExecutable",
            dependencies: [
                .product(name: "Bluetooth", condition: .when(platforms: [.macOS])),
                .product(name: "BluetoothLinux", condition: .when(platforms: [.linux])),
            ]
        ),
     ]
)

资源

Swift 包现在可以包含图像、资源目录、故事板以及其他文件等资源。当 Xcode 构建一个依赖该应用时,它会把该包的代码和资源加入应用包,以便运行时使用。更多信息参见为 Swift 包打包资源。(54361843)

包中的任何资源现在都可以包含本地化内容。除了资源目录中的本地化内容之外,Xcode 还支持 .lproj 文件夹中单独的本地化文件。更多信息参见本地化包资源。(56925255)

重要:资源支持的加入还改变了包中非源文件的包含行为。把包的工具版本更新到 5.3,意味着必须显式声明自己对类型未知于 SwiftPM 的文件是排除还是处理。这可以在文件级别或目录级别完成。

二进制依赖

Swift 包现在可以提供以 XCFramework 形式分发的预编译库,从而可以依赖那些无法以源代码形式分发的库。当 Xcode 构建使用这类包的应用时,它会把库嵌入应用包。更多信息参见把二进制框架作为 Swift 包分发。(56592977)