问题描述
我想使用 Xcode 12.4 for iOS 将一些 XCFrameworks 放入一个伞形框架或伞形 xcframework 中。我尝试了这些线程中提到的所有方法。但是,我无法让它为我的客户端应用程序中的任何 swift 类工作。
请注意,这可以与 ObjC 类无缝配合。
XCFramework with static frameworks sub dependencies
方法 1 - 创建 .framework
当我通过添加 sub xcframeworks 来复制框架构建阶段来构建 .framework 时,我看到 xcframework 子项目被提取到静态库“.a”文件中。 我在我的 ObjC + Swift 应用程序中导入了这个 .framework,对于导入伞形框架的所有 swift 类中的所有子项目,我收到“没有这样的模块”错误
方法 2 - 创建 .xcframework
当我使用所有 xcframework 子项目创建 .xcframework 时,当我在客户端应用程序中使用伞形框架时,在 x86_64-apple-ios-simulator.swiftinterface 中出现 No such module 'XXXX' 错误
注意,我在客户端应用程序中链接和嵌入了雨伞/xcframework。
另一个想法
此外,当我使用 Xcode 12.4 创建示例应用程序并导入相同的框架框架/.xcframework 时,一切正常。这是否与在旧版本的 XCode 中创建的客户端应用程序 .xcodeproj 有关?
解决方法
一些值得尝试的事情:
-
确保设置了
BUILD_LIBRARY_FOR_DISTRIBUTION
。 -
静态链接子框架。如果您使用 CocoaPods 包含其他框架,请确保指定
use_frameworks! :linkage => :static
。 -
在使用子框架的源文件中,写入
@_implementationOnly import SomeFramework
.