将一个快速的大项目拆分为具有核心框架和模块框架的框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将一个快速的大项目拆分为具有核心框架和模块框架的框架相关的知识,希望对你有一定的参考价值。

我正在尝试将我的大型Swift框架拆分为许多模块框架,因此我的应用程序中的每个模块都是独立的,以便在其他应用程序上重用。由于我有一个大型数据,如类和库共享所有模块,我认为创建core_framework包含共享数据并强制应用程序使用此框架,以便能够使用所有其他框架(一个或更多)

enter image description here

我看到了FBSDK的一个例子,它有一个核心框架和其他功能框架:FBSDKCoreKit和FBSDKLoginKit

这对我来说很重要,因为效率的原因,所有其他框架都不包含核心框架。

我的问题是 - 在创建核心框架后,我必须在我的结节框架中做什么,这样它才能识别核心类和功能,但是会编译核心的文件?

谢谢

答案

将项目拆分为子模块时,您需要做的很简单,但有些细节取决于您对项目进行分区的方式。

最简单的案例:1个具有N个目标的项目

假设您只在这个应用程序上工作并将其拆分为模块。最简单的方法是向项目添加更多框架目标。

Add Framework Target to Project

然后,您需要将它们嵌入到您的应用目标中。确保它是“嵌入式二进制文件”和“链接框架和库”的一部分。

现在你有了一个新的框架模块。

  1. 创建其中几个(例如“Core”和“Module 1”)。然后:
  2. 在“模块1”的常规项目设置中,将“核心”添加到“链接的框架和库”。框架没有嵌入选项,因为它们不能包含库,只能包含对它们的依赖。
  3. 在应用目标中,嵌入并链接“模块1”。

这就是你需要设置的全部内容。

我试图绘制嵌入和链接设置,以便您看到只有应用程序目标包含其他框架:

Target link dependencies and binary containment

稍微复杂一点:多个项目

上面的基本设置适用于所有其他变体:框架(模块)可以依赖于其他框架,但它们不能随附。只有应用程序才能最终解析二进制文件依赖关系。

如果将项目拆分为多个子项目,例如为其他人提取可部署的开源库,然后你必须让“模块1”知道每个项目中的“核心”,链接到“核心”模块的方式与上面详述的相同。是什么让孤立的Xcode项目变得更复杂:“模块1”项目如何了解Core.framework

  • 您可以通过Carthage公开每个模块,并依赖于另一个模块,
  • 你可以使用CocoaPods,
  • 你可以通过git submodule查看依赖项。

上面的选项使每个模块项目自主。依赖项是模块目录树的一部分。

有点不整齐:

  • 您可以创建一个Xcode工作区,拖动所有项目,然后将Core.framework从一个项目的“Products”组拖到另一个项目的“Linked Libraries”列表中,或者
  • Core.framework文件从Finder拖到“模块1”项目中(可选择选择“必要时复制文件”)将生成的二进制文件放入“模块1”目录树中。

上述选项也可以工作,但它们形成了关于文件系统中文件位置的假设。但是,工作空间方法应该有助于减少过时的框架二进制文件的问题,因为工作空间可以帮助从项目间依赖关系创建正式的构建依赖关系。就像app目标依赖于它的框架目标一样,并且测试目标依赖于首先要编译的app目标。

以上是关于将一个快速的大项目拆分为具有核心框架和模块框架的框架的主要内容,如果未能解决你的问题,请参考以下文章

ibird:Node.js 快速开发框架 | 软件推介

WEB网页设计常见布局

「Django框架」-拆分配置文件settings

将字符串拆分为具有多个分隔符的多个字符串而不删除?

Dubbo服务化框架使用整理

从框架项目进行单元测试时应用程序崩溃