XCFramework с зависимостями SPM не предоставляет их проекту, в котором он используется.IOS

Программируем под IOS
Ответить
Гость
 XCFramework с зависимостями SPM не предоставляет их проекту, в котором он используется.

Сообщение Гость »

У меня есть библиотека, которая представляет собой пакет SPM. У него есть одна зависимость.

Код: Выделить всё

// swift-tools-version: 5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
name: "ExampleLibrary",
platforms: [
.macOS(.v10_15), .iOS(.v13), .tvOS(.v13)
],
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "ExampleLibrary",
type: .dynamic,
targets: ["ExampleLibrary"]),
],
dependencies: [
.package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMajor(from: "1.8.1")),
],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "ExampleLibrary",
dependencies: ["CryptoSwift"]),
.testTarget(
name: "ExampleLibraryTests",
dependencies: ["ExampleLibrary"]),
]
)
Эта библиотека затем экспортируется в двоичный файл XCFramework и распространяется как другой пакет SPM.

Код: Выделить всё

// swift-tools-version: 5.9

import PackageDescription

let package = Package(
name: "ExampleSDK",
platforms: [
.iOS(.v13),
.macOS(.v10_15),
],
products: [
.library(
name: "ExampleSDK",
targets: ["ExampleLibraryFramework"]),
],
targets: [
.binaryTarget(name: "ExampleLibraryFramework", path: "ExampleLibrary.xcframework")
]
)
когда я импортирую этот пакет в приложение для дальнейшего использования

Код: Выделить всё

import ExampleLibrary
У меня в этой строке ошибка. Отсутствует необходимый модуль «CryptoSwift».
Когда я импортирую CryptoSwift в приложение как другая зависимость пакета. У меня ошибка:

Код: Выделить всё

objc[5702]: Class _TtC11CryptoSwift15XChaCha20Worker is implemented in both [...]/ExampleLibrary (0x1016edcf0) and [...]/example.app/example (0x100611908). One of the two will be used. Which one is undefined. 
Кроме того, когда я добавляю в свой пакет XCFramework зависимость CryptoSwift, ошибка также перестает отображаться, но дублирующийся импорт остается таким же.

Код: Выделить всё

// swift-tools-version: 5.9

import PackageDescription

let package = Package(
name: "ExampleSDK",
platforms: [
.iOS(.v13),
.macOS(.v10_15),
],
products: [
.library(
name: "ExampleSDK",
targets: ["ExampleLibraryFramework", "ExampleSDK"]),
],
dependencies: [
.package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMajor(from: "1.8.1")),
],
targets: [
.target(name: "ExampleSDK", dependencies: ["CryptoSwift"]),
.binaryTarget(name: "ExampleLibraryFramework", path: "ExampleLibrary.xcframework")
]
)
Вопросы
  • Как отключить предоставление CryptoSwift из моей библиотеки, чтобы его можно было импортировать в приложение без дубликатов? Я пробовал использовать @_implementationOnly import CryptoSwift внутри моей библиотеки, но он не прекратил раскрывать его, когда я импортировал другой CryptoSwift в приложение.
  • Как сделать так, чтобы проект приложения увидел это эта зависимость встроена в XCFramework. Вот как XCFramework выглядит внутри:
[img]https://i.stack.imgur.com /eISgb.png[/img]



Подробнее здесь: https://stackoverflow.com/questions/781 ... ts-used-in
Ответить

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

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

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

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

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