无法引用XCFramework Bundle

问题描述 投票:0回答:1

我目前正在开发 XCFramework 格式的 SDK,但我遇到显示图像的问题。可以在here找到示例存储库。

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
目标是一个模拟SDK集成的iOS应用程序。我通过“框架、库和嵌入式内容”链接了
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
,但它没有解决问题。

如果有人对如何解决此问题有见解,我将不胜感激!

ios swift swiftui xcframework
1个回答
0
投票

你的框架是一个静态库,静态库没有自己的Bundles。将 Build Settings->Linking General->Mach-O Type 设置为 Dynamic Libraryenter image description here

© www.soinside.com 2019 - 2024. All rights reserved.