避免子框架嵌入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.frameworkExternalApp中使用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的主要内容,如果未能解决你的问题,请参考以下文章