Swift package manager. Error: Found multiple packages with the name...?

Swift package manager. Error: Found multiple packages with the name...?

让我们说:

B 是一个依赖 CommonLib 的库
App 依赖 B 和 CommonLib

这是他们的主要节目

B 的 Package.swift:

import PackageDescription
let package = Package(
    name: "B",
    products: [
        .library(
            name: "B",
            targets: ["B"]),
    ],
    dependencies: [
      .package(url: "https://.../CommonLib", from: "1.0.0"),
   ],
    targets: [
        .target(
            name: "B",
            dependencies: ["CommonLib"]),
        .testTarget(
            name: "BTests",
            dependencies: ["B"]),
    ]
)

应用的Package.swift

import PackageDescription
let package = Package(
    name: "App",
    dependencies: [
      .package(url: "https://.../CommonLib", from: "1.0.0"),
      .package(url: "https://.../B", from: "1.0.0"),
   ],
    targets: [
        .target(
            name: "App",
            dependencies: ["CommonLib", "B"]),
        .testTarget(
            name: "AppTests",
            dependencies: ["App"]),
    ]
)

swift build
error: Found multiple packages with the name CommonLib...

如果 App 和 B 都依赖于 CommonLib 并且如果我将 B 和 CommonLib 导入 App 发现多个名为...

的包时出错

Apple Swift 版本 4.0.2 (swiftlang-900.0.69.2 clang-900.0.38) 目标:x86_64-apple-macosx10.9

有谁知道如何解决这个问题?

如果你想手动将它们导入库,你会看到这个错误。多个包不能同名。

对于解决方案,您必须更改清单并删除其中之一。但是,我认为如果您使用 CocoaPod,这是可以解决的,它是管理包和库的完美工具。您还可以从 CocoaPod 轻松更改清单。

删除 Package.pins 并重新运行 swift build。查看它正在尝试获取哪些包。检查 .build/checkouts.build/dependencies-state.json - CommonLib 的哪些标签和哪些版本分别写在那里。