如何将多个内部 swift 模块(框架)打包到单个第 3 方框架中?

Mir*_*iro 5 frameworks module target ios swift

在我们的 Xcode 项目中,我们已经开始实现 ios 模块,将我们庞大的代码库划分为独立的部分。

我们有以下模块:

Common
Product1
Product2
Product
App
Run Code Online (Sandbox Code Playgroud)

其中App使用Product1、Product2和Common,并且Product1使用Common,但Common对更高级别的项目一无所知。

在 XCode/Swift 中,它们作为单独的目标实现,并生成导入到更高级别目标中的框架。它非常适合该应用程序。最终产品应用程序编译时无需关心它来自通过依赖框架的多个目标。

我们还有一个为第三方部署的实际框架。之前,我们选择了框架中存在的所有文件,并使它们成为框架目标和应用程序目标的双重成员。

然而现在我们有了这种依赖关系,其中较低级别的模块作为“目标依赖关系”包含在 xcode 中。

ProductFramework3rdParty
Product1
Common
Run Code Online (Sandbox Code Playgroud)

ProductFramework 在模拟器中编译良好,它可以嵌入到准系统示例应用程序中并作为嵌入式二进制文件运行。这就是目标。

然而,在设备上,它给出了在运行时找不到通用框架的错误。

dyld: Library not loaded: @rpath/Common.framework/Common
Referenced from: 
/private/var/mobile/Containers/Bundle/**/**/ProductFramework3rdParty/ProductFramework3rdParty
Reason: image not found
Run Code Online (Sandbox Code Playgroud)

仅当我将 Common 模块以及最终的 Product1 模块也嵌入到 3rd 方应用程序中时,它才有效。这并不是真正的预期目标,必须向客户提供我们的官方框架以及内部模块。我们的代码中最终可能有 5-10 个模块,并且希望将其全部打包到单个分布式框架中。

我们应该怎么做?

我尝试将 Common 的 Mach-O 从动态更改为静态,但没有成功,它创建了一长串我无法克服的链接错误。以及将 Common 扩大到 100mb,比以前大得多。