错误:不支持将桥接标头与模块接口一起使用Command CompileSwiftSources失败,退出代码为非零



我已经为我的一个静态库应用程序切换到Xcode12。我正在尝试进行XCFramework分发。运行构建命令后,

xcodebuild archive -scheme "MySDK" -sdk iphoneos  -archivePath “./archives/ios.xcarchive” -SKIP_INSTALL=NO

当我将Build Settings -> Build Libraries for Distribution切换到YES时,出现以下错误

<unknown>:0: error: using bridging headers with module interfaces is unsupported
Command CompileSwiftSources failed with a nonzero exit code
** ARCHIVE FAILED **

The following build commands failed:
CompileSwiftSources normal armv7 com.apple.xcode.tools.swift.compiler
CompileSwiftSources normal armv7s com.apple.xcode.tools.swift.compiler
CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler
(3 failures)

这个答案有效,但不幸的是,创建.xcframework需要设置选项分布YES

如何解决此问题

苹果似乎在反对桥接标头而支持模块,但他们关于如何包含C标头的文档却不见了。相反,这些信息可以在更详细的clang文档中找到。

尝试从项目设置中删除桥接标头,并创建一个module.modulemap文件:

module MySdk {
header "MySdk-Bridging-Header.h"
export *
}

这有一些注意事项,比如需要在swift代码中使用import MySdk,以及理解C函数将被公开,但这让我度过了难关。

通过反复尝试,我发现了一个技巧,那就是在框架的Headers文件夹中包含这个模块映射文件和C头。这允许任何使用该框架的应用程序自动检测MySdk作为模块。

相关内容

  • 没有找到相关文章

最新更新