避免子框架嵌入iOS
Posted
技术标签:
【中文标题】避免子框架嵌入iOS【英文标题】:Avoid sub framework embedding iOS 【发布时间】:2017-11-15 10:32:47 【问题描述】:我正在开发一个 Swift 框架,MainFW,它使用 2 个 Objective-C 框架。 我使用模块映射文件导入了遗留框架,以便从 Swift 中使用它。这是我的代码:
module SwiftFrameworkA
header "../Frameworks/A.framework/Headers/A.h"
export *
module SwiftFrameworkB
header "../Frameworks/B.framework/Headers/B.h"
export *
在构建 MainFW 时,这个框架是“嵌入的”,只生成一个 MainFW.framework。
我需要的是只有一个结果嵌入,另一个也必须在需要使用MainFW.framework的ExternalApp中使用em> 和 FrameworkB.framework
如何指示构建不嵌入 FrameworkB 而是使用给定的外部应用程序 FrameworkB.framework ?
现在ExternalApp说类是重复的,不知道使用哪一个。
FrameworkB另外是一个非模块化的框架。
谢谢。
【问题讨论】:
【参考方案1】:在构建MainFW时,必须让它和FrameworkB成为一个app项目中的一个子项目,然后app会单独编译FrameworkB,你只需要将FrameworkB的headers包含到MainFW中,然后你就可以构建你的MainFW 里面没有 FrameworkB。
之后,您可以在应用项目中同时使用它们,而无需重复类
【讨论】:
很遗憾这是不可能的,FrameworkB 不是 XCode 项目,它是第三方构建的框架 没关系,把FrameworkB作为app项目框架,而不是MainFW的框架,关键是你不包含它对MainFW项目的任何依赖,而是让app项目为你编译它跨度> 问题是FrameworkB也被MainFW使用了。 你的 MainFW 只需要 FrameworkB 的头文件就可以工作,你不需要将你的 FrameworkB 源文件链接到 MainFW 那么我应该在MainFW上复制头文件并将完整的框架放在最终的应用程序中吗?以上是关于避免子框架嵌入iOS的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Cordova 通过插件自动嵌入自定义 iOS 框架?
iOS 8 beta - Today 扩展无法识别嵌入式框架
无法将 ios 应用程序构建到设备中,因为“嵌入式框架 'SharedCode.framework' 是为 iOS 模拟器构建的。”