添加对 Swift 包管理器的支持无法正确构建

Posted

技术标签:

【中文标题】添加对 Swift 包管理器的支持无法正确构建【英文标题】:Adding support for Swift Package Manager doesn't build correctly 【发布时间】:2021-08-20 19:19:06 【问题描述】:

我正在尝试添加对 Swift 包管理器的支持,但遇到了障碍。我创建了Package.swift 文件,提交了它,并尝试将包添加到示例应用程序中。但我在MyLibrary_MyLibrary.bundle: bundle format unrecognized, invalid, or unsuitable. Command CodeSign failed with a nonzero exit code 周围遇到错误。

我注意到在构建 DerivedData 构建文件夹中的示例应用程序时,我的包的唯一文件是 libraryName_MyLibrary.bundle 文件,它不包含 .swiftmodule 文件夹,并认为这会导致问题。为什么在构建时不包含它?

库的Package.swift文件

// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "MyLibrary",
    defaultLocalization: "en",
    platforms: [.ios(.v10), .macOS("10.11"), .tvOS(.v9)],
    products: [
        .library(
            name: "MyLibrary",
            targets: ["MyLibrary"]),
    ],
    dependencies: [
        .package(url: "https://github.com/dependency1/dependency1", .exact("1.0.0")),
        .package(url: "https://github.com/dependency2/dependency2", .exact("1.0.0")),
        .package(url: "https://github.com/dependency3/dependency3", .exact("1.0.0")),
    ],
    targets: [
        .target(
            name: "MyLibrary",
            dependencies: ["Dependency1", "Dependency2", "Dependency3"],
            path: "./my-library/",
            exclude: ["Info.plist"]
        ),
        .testTarget(
            name: "my-library-swiftTests",
            dependencies: ["MyLibrary"],
            path: "./my-library-swiftTests/",
            exclude: ["Info.plist"],
            resources: [
                .copy("Fixtures")
            ]
        )
    ]
)

【问题讨论】:

【参考方案1】:

我在尝试将资源目录添加到测试目标时收到此错误。我正在使用.copy("MyResourceFolder")。将其更改为复制每个单独的资源为我明确修复了此问题,例如:

.copy("MyResourceFolder/test1.json"),
.copy("MyResourceFolder/test2.json"),

【讨论】:

以上是关于添加对 Swift 包管理器的支持无法正确构建的主要内容,如果未能解决你的问题,请参考以下文章

在 swift 包管理器中添加 Apollo 的代码生成构建脚本时出错

不能在带有 Xcode 11 包管理器的 Swift 包中包含 C 文件

如何使用 Swift 包管理器 binaryTarget?

Alamofire 库没有响应 Swift 包管理器

iOS支持Swift包管理器吗?[已关闭]

如何在 Xcode 11 中删除 Swift 包依赖项?