我构建了一个 SDK 作为 XCFramework,它与使用它的应用程序共享依赖项。当我构建时,我得到:
...SDK.swiftmodule/arm64-apple-ios.swiftinterface:20:8:无法加载底层模块...
这发生在“编译 Swift 源代码”操作中,中断位于 swiftinterface 文件中的 import MySharedDepedency
语句中
如上所述,项目中的 SDK 作为 xcframework bundle 。 MySharedDependency 是通过 cocoapods 实现的。 use_modular_headers
在 Podfile
中设置,它的 modulemap
包含在链接器标志中(由 cocoapods 提供)。
如果我在 Podfile
中使用 use_frameworks!
标志,它确实有效,但仅限于动态链接,出于内部政治原因,我需要它与静态链接一起使用。如果我添加 :linkage => :static
参数,我会得到与没有 use_frameworks!
调用时相同的错误
我尝试更改构建阶段中链接框架的顺序(以便在 SDK 框架之前链接 pod)。我尝试在任何可以找到 MyDependency.modulemap 的地方添加递归 header /框架/模块搜索路径...
是的,我已经清理了缓存,分解,干净安装,删除了派生数据,重新启动了 xcode,我的机器,...
啊啊!感谢您的帮助...
最佳答案
我有同样的场景和同样的问题
我在 xcframework 代码的每个文件中使用 @_implementationOnly
解决了这个问题,例如:
@_implementationOnly import Alamofire
之后,只需重建 XCFramework、清理并构建应用程序的项目即可。
它就像一个没有 use_framework
的魅力!
关于swift - XC框架 "Cannot load underlying module",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65997605/