Вот структура папок из 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")
]
)
Это происходит, даже если я не импортирую ffmpegkit ни в один из своих кодов. Так что же заставляет сборку добавлять инфраструктуру ffmpegkit, а не другие?
Как я могу указать SPM включить эти дополнительные платформы при сборке?
---- ОБНОВЛЕНИЕ ----
С тех пор я нашел обходной путь, хотя и не идеальный. Я создал новый репозиторий GitHub, содержащий 7 заархивированных файлов .xcframework. Я добавил их как отдельные .binaryTarget в Package.swift. Теперь они загружаются и устанавливаются в приложение при каждом использовании пакета. Однако исходный ffmpegkit.xcframework все еще содержит 7 фреймворков, хотя и не используется.
Поэтому мне все равно хотелось бы знать 2 вещи:
- Что заставляет SPM встраивать инфраструктуру ffmpegkit, а не какую-либо из семи других? Это только первый в алфавитном порядке?
- Как я могу заставить SPM использовать все уже собранные вместе платформы?
Подробнее здесь: https://stackoverflow.com/questions/789 ... g-included
Мобильная версия