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

iOS 8+框架,嵌套嵌入式框架

如何让 Cordova 通过插件自动嵌入自定义 iOS 框架?

iOS 8 beta - Today 扩展无法识别嵌入式框架

我可以在包中嵌入自定义字体并从 ios 框架访问它吗?

无法将 ios 应用程序构建到设备中,因为“嵌入式框架 'SharedCode.framework' 是为 iOS 模拟器构建的。”

用于 Telerik 的 Cordova 插件 ios:将自定义框架添加到嵌入式二进制文件