3

我已经切换到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

如何解决这个问题?

4

1 回答 1

3

Apple 似乎不赞成使用桥接头来支持模块,但是缺少有关如何包含 C 标头的文档。这些信息可以在更详细的clang 文档中找到。

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

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

这有一些警告,例如需要import MySdk在您的 swift 代码中并理解 C 函数将被公开,但这让我克服了困难。

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

于 2021-06-11T19:43:32.913 回答