Бинарная цель SPM, дополнительные платформы не включеныIOS

Программируем под IOS
Ответить
Anonymous
 Бинарная цель SPM, дополнительные платформы не включены

Сообщение Anonymous »

Я пытаюсь интегрировать двоичный объект в проект с помощью Swift Package Manager. Бинарный файл поставляется в виде .zip, содержащего основной ffmpegkit.xcframework плюс 7 дополнительных .xcframework, от которых он зависит.
Вот структура папок из DerivedData/.../SourcePackages/artifacts/... после того, как SPM распаковал ее.
Изображение

Это мой файл Package.swift:

Код: Выделить всё

// swift-tools-version: 5.10

import PackageDescription

let package = Package(
name: "converter",
platforms: [
.macOS(.v13),
.iOS(.v14),
],
products: [
.library(
name: "converter",
targets: ["converter"])
],
targets: [
.target(
name: "converter",
dependencies: [
.target(name: "ffmpeg-iOS", condition: .when(platforms: [.iOS])),
.target(name: "ffmpeg-macOS", condition: .when(platforms: [.macOS]))
],
path: "Sources/converter"
),
.binaryTarget(name: "ffmpeg-iOS",
url: "https://github.com/arthenica/ffmpeg-kit/releases/download/v6.0/ffmpeg-kit-full-6.0-ios-xcframework.zip",
checksum: "c87ea1c77f0a8a6ba396c22fc33e9321befb8e85f8e8103046ddeb74fea66182"),
.binaryTarget(name: "ffmpeg-macOS",
url: "https://github.com/arthenica/ffmpeg-kit/releases/download/v6.0/ffmpeg-kit-full-6.0-macos-xcframework.zip",
checksum: "8cab26eecd43b9389d37f64efaf43b9c6baf4e53614b62e6209d8ee8681b94b9")
]
)
Теперь, когда я собираю и запускаю проект, он вылетает из-за dyld[85157]: Библиотека не загружена: ошибки @rpath, поскольку сборка, похоже, включает только ffmpegkit.xcframework , а не остальные.
Это происходит, даже если я не импортирую ffmpegkit ни в один из своих кодов. Так что же заставляет сборку добавлять инфраструктуру ffmpegkit, а не другие?
Как я могу указать SPM включить эти дополнительные платформы при сборке?
---- ОБНОВЛЕНИЕ ----
С тех пор я нашел обходной путь, хотя и не идеальный. Я создал новый репозиторий GitHub, содержащий 7 заархивированных файлов .xcframework. Я добавил их как отдельные .binaryTarget в Package.swift. Теперь они загружаются и устанавливаются в приложение при каждом использовании пакета. Однако исходный ffmpegkit.xcframework все еще содержит 7 фреймворков, хотя и не используется.
Поэтому мне все равно хотелось бы знать 2 вещи:
  • Что заставляет SPM встраивать инфраструктуру ffmpegkit, а не какую-либо из семи других? Это только первый в алфавитном порядке?
  • Как я могу заставить SPM использовать все уже собранные вместе платформы?


Подробнее здесь: https://stackoverflow.com/questions/789 ... g-included
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»