我正在尝试将我的大型Swift框架拆分为许多模块框架,因此我的应用程序中的每个模块都是独立的,以便在其他应用程序上重用。由于我有一个大型数据,如类和库共享所有模块,我认为创建core_framework包含共享数据并强制应用程序使用此框架,以便能够使用所有其他框架(一个或更多)
我看到了FBSDK的一个例子,它有一个核心框架和其他功能框架:FBSDKCoreKit和FBSDKLoginKit
这对我来说很重要,因为效率的原因,所有其他框架都不包含核心框架。
我的问题是 - 在创建核心框架后,我必须在我的结节框架中做什么,这样它才能识别核心类和功能,但是会编译核心的文件?
谢谢
将项目拆分为子模块时,您需要做的很简单,但有些细节取决于您对项目进行分区的方式。
假设您只在这个应用程序上工作并将其拆分为模块。最简单的方法是向项目添加更多框架目标。
然后,您需要将它们嵌入到您的应用目标中。确保它是“嵌入式二进制文件”和“链接框架和库”的一部分。
现在你有了一个新的框架模块。
这就是你需要设置的全部内容。
我试图绘制嵌入和链接设置,以便您看到只有应用程序目标包含其他框架:
上面的基本设置适用于所有其他变体:框架(模块)可以依赖于其他框架,但它们不能随附。只有应用程序才能最终解析二进制文件依赖关系。
如果将项目拆分为多个子项目,例如为其他人提取可部署的开源库,然后你必须让“模块1”知道每个项目中的“核心”,链接到“核心”模块的方式与上面详述的相同。是什么让孤立的Xcode项目变得更复杂:“模块1”项目如何了解Core.framework
?
git submodule
查看依赖项。上面的选项使每个模块项目自主。依赖项是模块目录树的一部分。
有点不整齐:
Core.framework
从一个项目的“Products”组拖到另一个项目的“Linked Libraries”列表中,或者Core.framework
文件从Finder拖到“模块1”项目中(可选择选择“必要时复制文件”)将生成的二进制文件放入“模块1”目录树中。上述选项也可以工作,但它们形成了关于文件系统中文件位置的假设。但是,工作空间方法应该有助于减少过时的框架二进制文件的问题,因为工作空间可以帮助从项目间依赖关系创建正式的构建依赖关系。就像app目标依赖于它的框架目标一样,并且测试目标依赖于首先要编译的app目标。