我正在尝试通过 Swift Package Manager 集成 Sentry iOS SDK。他们提供了一个指南here,主要是为那些与 Xcode 项目集成的人量身定制的。
我正在与一个独立的 Swift 库包集成,它将依赖 Sentry 包作为依赖项。因此,我的包依赖项在我的库的
Package.swift
文件中定义。将 Sentry 包添加为依赖项时,包已解析,但产品未解析。该包显示在侧边栏中,我可以查看它的文件,包括它的 Package.swift
,所以它肯定正在被解析/下载。
如果我打开一个新的 Xcode 项目并通过“添加包依赖项”添加包,它也可以与已解决的产品一起正常工作,可以毫无问题地导入和使用这些产品,因此问题似乎专门与使用
Package.swift
基于依赖管理。
哨兵
Package.swift
在这里。我图书馆的 Package.swift
如下。据我和我的同事所知,一切都已正确完成,我们认为这里可能存在 SPM 错误。
// swift-tools-version: 5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [
.iOS(.v15)
],
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "MyPackage",
targets: ["MyPackage"]),
],
dependencies: [
.package(url: "https://github.com/getsentry/sentry-cocoa", from: "8.24.0")
],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "MyPackage",
dependencies: ["Sentry"]),
.testTarget(
name: "MyPackageTests",
dependencies: ["MyPackage"]),
]
)
任何人都可以提供任何见解吗?谢谢。
我能够通过将对目标的依赖关系更改为
来获取要解析的依赖项并添加
import Sentry
.target(
name: "MyPackage",
dependencies: [.product(name: "Sentry", package: "sentry-cocoa")]),
我认为问题可能与该包实际上被称为
sentry-cocoa
,而不是 Sentry
有关。我不确定这是否正是问题所在,但使用你的 package.swift 不起作用,但使用我的却起作用。
请注意,更改后,我必须重新计算包依赖项并清理构建文件夹以摆脱缓存的废话负载。