简体   繁体   English

避免将子框架嵌入iOS

[英]Avoid sub framework embedding iOS

I'm developing a Swift framework, MainFW , which uses 2 Objective-C frameworks. 我正在开发一个Swift框架MainFW ,它使用2个Objective-C框架。
I imported the legacy framework using a module map file in order to use it from Swift. 我使用模块映射文件导入了旧框架,以便从Swift中使用它。 Here is my code: 这是我的代码:

module SwiftFrameworkA {
  header "../Frameworks/A.framework/Headers/A.h"
  export *
}

module SwiftFrameworkB {
  header "../Frameworks/B.framework/Headers/B.h"
  export *
}

When building MainFW this frameworks are "embedded", producing just a MainFW.framework . 在构建MainFW时,将这些框架“嵌入”,仅生成MainFW.framework

What I need is that just one of them results embedded, the other must be also used in an ExternalApp which needs to use MainFW.framework and FrameworkB.framework 我需要的是嵌入其中一个结果,另一个也必须在需要使用MainFW.frameworkFrameworkB.frameworkExternalApp中使用

How can I instruct the build to not embed FrameworkB but using external app given FrameworkB.framework ? 如何指示构建不嵌入FrameworkB但使用给定FrameworkB.framework的外部应用程序?

Now ExternalApp says that classes are duplicated and doesn't know which one is used. 现在, ExternalApp说这些类是重复的,并且不知道使用哪个类。

FrameworkB in addition is a non-modular framework. 此外, FrameworkB是一个非模块化框架。

Thank you. 谢谢。

When you build the MainFW, you have to let it and FrameworkB be a sub project in an app project, then the app will compile FrameworkB separately, you just need to include the headers of FrameworkB to MainFW, then you can build your MainFW without FrameworkB inside it. 在构建MainFW时,必须让它和FrameworkB成为应用程序项目中的子项目,然后该应用程序将单独编译FrameworkB,您只需要将FrameworkB的标头包含到MainFW中,然后就可以在没有FrameworkB的情况下构建MainFW在里面。

After that you can use both of them in an app project without duplicate classes 之后,您可以在没有重复类的应用程序项目中使用它们

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM