Я пытаюсь интегрировать Sentry iOS SDK через диспетчер пакетов Swift. Они предоставляют руководство здесь, которое в основном предназначено для тех, кто интегрируется с проектом 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 не сработало, а использование моего сработало.
Обратите внимание, что после изменения мне пришлось пересчитывать зависимости пакета и очищать папку сборки, чтобы избавиться от груза кэшированной ерунды.
Да, это сработало. Интересно, что, по словам Sentry's
Package.swift
, пакет называетсяSentry
. Однако репозиторий git называетсяsentry-cocoa
, что, похоже, влияет на разрешение пакета...