Я работаю над приложением для 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
Swift Package Manager — этап сборки файлов копирования для динамической зависимости ⇐ IOS
Программируем под IOS
1767100397
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: [""]
),
]
)
Подробнее здесь: [url]https://stackoverflow.com/questions/68471522/swift-package-manager-copy-files-build-phase-for-a-dynamic-dependency[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия