В настоящее время я разрабатываю SDK в формате XCFramework, но столкнулся с проблемами при отображении изображений. Репозиторий примеров можно найти здесь.
Целью Example
является SDK, включающей папку Assets.xcassets
. Внутри Assets.xcassets
есть изображение с именем neko.png
, которое я пытаюсь отобразить в MyImage.swift
.
Вот соответствующий фрагмент кода из MyImage.swift
:
public var body: some View {
HStack {
Image("neko")
.resizable()
.frame(width: 100, height: 100)
Image("neko", bundle: Bundle(identifier: "com.example.Example"))
.resizable()
.frame(width: 100, height: 100)
Image("neko", bundle: Bundle(for: Dummy.self))
.resizable()
.frame(width: 100, height: 100)
}
}
Цель ExampleApp
— это приложение iOS, имитирующее интеграцию SDK. Я связал Example.framework
через «Фреймворки, библиотеки и встроенный контент». В ContentView.swift
я вызываю MyImage()
:
var body: some View {
VStack {
MyImage()
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
Однако при запуске ExampleApp
возникает следующая ошибка, и изображение не отображается:
No image named 'neko' found in asset catalog for /Users/xxxxx/Library/Developer/CoreSimulator/Devices/xxxxx/data/Containers/Bundle/Application/xxxxx/ExampleApp.app
Добавление neko.png
к ExampleApp
Assets.xcassets
решает проблему.
Кажется, я неправильно передаю bundle
при вызове Image()
в MyImage.swift
. Кроме того, когда я запускаю print(Bundle.allFrameworks)
внутри ExampleApp
, Example.framework
не включается.
Я также попробовал добавить .xcframework
, созданный с использованием xcodebuild
, в «Фреймворки, библиотеки и встроенный контент» вместо Example.framework
, но это не решило проблему.
Если у кого-то есть идеи, как решить эту проблему, буду очень признателен!