【发布时间】:2020-05-21 12:32:15
【问题描述】:
我有一个 Xcode 工作区,其中包含一个具有 iOS 应用程序目标的项目和另一个具有框架目标的项目。框架目标依赖于另一个框架,以xcframework的形式集成:
- 我的应用程序
- 我的框架
- 其他框架
使用常规的OtherFramework.framework 需要将其链接到MyFramework,然后嵌入到MyApp,即使MyApp 本身不需要框架。但是,当与xcframework 集成时,此项目将无法构建并出现No such module 'OtherFramework' 错误。
项目设置:
从MyApp 目标中删除OtherFramework.xcframework 可修复构建问题,但随后会导致library not loaded 错误,因为应用程序中不存在框架。
这里的演示项目:https://github.com/msaps/XCFramework-Link-Issue
您打算如何在应用程序中链接 xcframework 并在依赖框架中链接?
为什么?
pyckamil 刚刚发布了这篇文章,详细解释了这个问题:Everything wrong with XCFrameworks。
Xcode 对ProcessXCFrameworkLibrary 步骤进行了优化,从.xcframework 中提取正确的.framework 用于活动构建架构。这仅运行一次,这会导致尝试链接同一框架的其他目标出现问题。
更新
此问题已在 Xcode 12.0 中解决
【问题讨论】:
-
如果我构建了一个包含其他 cocoapods 的 swift 框架怎么办? .我确实检查了您的 github 存储库,我可以看到您的 OtherFramework.xcframework 是外部框架,其中包含 arm64 和 x86_64 文件。就我而言,当我进行 pod install 时,这三个依赖项不包含设备支持?这是 xcode 自己做的吗?或者我需要为设备和 sim 手动构建我的依赖项并将它们复制到我的 swift 项目中以进行构建? .你能分享一个包含 cocopods 的示例项目吗?
标签: ios swift xcode catalyst xcframework