Swift Package Manager — этап сборки файлов копирования для динамической зависимостиIOS

Программируем под IOS
Ответить
Anonymous
 Swift Package Manager — этап сборки файлов копирования для динамической зависимости

Сообщение Anonymous »

Я работаю над приложением для iOS, и мы собираемся открыть исходный код его ядра как отдельный пакет Swift для других разработчиков.
Пакет Swift зависит от Sodium (https://github.com/jedisct1/swift-sodium). При использовании SPM с этой библиотекой возникает проблема: во время архивирования (а иногда и во время локальной компиляции в Xcode) она не может найти встроенную CLibrary, что делает невозможным ее выпуск в магазин приложений, если вы используете этот пакет или встраиваете его в свой собственный. (Это зарегистрировано как ошибка в SPM/Xcode, но ее исправление займет некоторое время)
Кто-то сделал вилку, которая решает некоторые проблемы здесь. Они решили проблему, выделив библиотеку в отдельный .xcframework, размещенный где-то в другом месте. Затем создаем новый Package.swift, который импортирует его как внешнюю зависимость. Этот обновленный пакет Sodium настроен на динамический тип.
Включение этого в мой пакет Swift, а затем включение моего пакета в мое приложение для iOS... он отлично собирается, отлично работает в Xcode, отлично работает на симуляторах, не выдает ошибок при экспорте или загрузке в TestFlight.
Однако после загрузки из TestFlight я получаю эту ошибку, сообщающую, что платформа Sodium не может быть найдена:
Termination Description: DYLD, dyld: Using shared cache: | dependent dylib `@rpath/Sodium.framework/Sodium` not found for
/ tried but didn't find

При использовании других инструментов управления зависимостями решение обычно состоит в том, чтобы добавить «Фазу сборки файлов копирования» в проект xcode приложения iOS и добавить платформу. Если я попытаюсь сделать это в своем проекте Xcode, я не смогу найти платформу Sodium и не смогу найти способ указать SPM скопировать структуру внутри Package.swift.
Как мне обновить свой Package.swift, чтобы он копировал эту структуру для любого приложения, которое его использует?
Если это невозможно, как мне скопировать его внутри проекта Xcode? Его не видно в раскрывающемся списке.
Сейчас мой Package.swift выглядит так:
import PackageDescription

let package = Package(
name: "",
platforms: [.iOS(.v14)],
products: [
.library(name: "", targets: [""]),
],
dependencies: [
.package(url: "https://github.com/attaswift/BigInt.git", from: "5.2.1"),
.package(name: "Sodium", url: "https://github.com/junelife/swift-sodium.git", .branch("spm"))
],
targets: [
.target(
name: "",
dependencies: [
"Sodium",
"BigInt",
]
),

.testTarget(
name: "Tests",
dependencies: [""]
),
]
)


Подробнее здесь: https://stackoverflow.com/questions/684 ... dependency
Ответить

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

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

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

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

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