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»