Создал пакет Swift (// swift-tools-version: 5.3.0) для XCFramework. Этот пакет зависит от 4 других пакетов Swift (2 из них используют swift-tools-version ‹5, а 2 -› = 5.0). Он строится и запускается в целевой демо-версии приложения проекта. Сгенерированный XCFramework скопирован в репозиторий Swift Package и размещен на GitHub.
Затем я создаю новый проект, и пакет Swift можно успешно импортировать в него через SPM. Зависимости также импортируются.
При создании нового проекта моя структура не может быть скомпилирована из-за ошибки в сгенерированном моей инфраструктуре файле .swiftinterface, «XMLIndexerDeserializable» не является типом члена «SWXMLHash»:
Может ли кто-нибудь пролить свет на эту ошибку? Не уверен, что это проблема с моей упакованной платформой, проблема с конфигурацией нового проекта, который ее импортирует, или ошибка из-за разницы в версии инструментов Swift. зависимостей.
Некоторые общие сведения о моей конфигурации и процессе
Конфигурация моего пакета Swift:
// swift-tools-version:5.3.0
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [
.iOS(.v9)
],
products: [
.library(
name: "MyPackage",
targets: ["MyPackage"])
],
dependencies: [
.package(name: "CryptoSwift", url: "https://github.com/krzyzanowskim/CryptoSwift", .upToNextMinor(from: "1.2.0")),
.package(name: "Alamofire", url: "https://github.com/Alamofire/Alamofire", .upToNextMinor(from: "4.8.2")),
.package(name: "AEXML", url: "https://github.com/tadija/AEXML", .upToNextMinor(from: "4.4.0")),
.package(name: "SWXMLHash", url: "https://github.com/drmohundro/SWXMLHash", .upToNextMinor(from: "4.9.0"))
],
targets: [
.binaryTarget(
name: "MyPackage",
path: "MyPackage.xcframework")
]
)
Смотрел сессии WWDC 2019 и 2020 по созданию XCFrameworks / двоичных файлов для SPM, а также другие различные руководства. Использовал следующий сценарий sh для создания XCFramework, который будет использоваться для моего размещенного пакета Swift:
xcodebuild archive \
-scheme MyPackage \
-sdk iphoneos \
-archivePath "./XCFrameworkArchives/ios_devices.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
xcodebuild archive \
-scheme MyPackage \
-sdk iphonesimulator \
-archivePath "./XCFrameworkArchives/ios_simulators.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
xcodebuild -create-xcframework \
-framework ./XCFrameworkArchives/ios_devices.xcarchive/Products/Library/Frameworks/MyPackage.framework \
-framework ./XCFrameworkArchives/ios_simulators.xcarchive/Products/Library/Frameworks/MyPackage.framework \
-output ./XCFrameworkArchives/MyPackage.xcframework
XCFramework копируется в мой репозиторий Swift Package, помещается на GitHub и помечается тегами.
Затем я создал новый проект, использовал SPM для добавления зависимости и вытащил MyPackage вместе с зависимостями.
Добавьте код для импорта MyPackage и используйте его. Попытка собрать проект вызывает ошибку компиляции, из-за которой я обращаюсь за помощью. Если вы можете помочь и вам нужна дополнительная информация, с удовольствием проясните и предоставьте дополнительную информацию, если я могу.
.swiftinterface
. - person knarf   schedule 26.01.2021