前言:
在业务复杂的APP系统中, 通过多工程实现模块化是一种主流的实现方式.尝试0~1搭建一个多工程Demo.
概念区分:
1.workspace这个概念大家应该都很清楚了。它可以包含多个Project和其他文档文件。
2.project就是一个个的仓库,里面会包含属于这个项目的所有文件,资源,以及生成一个或者多个软件产品的信息。每一个project会包含一个或者多个targets,而每一个target告诉我们如何生产products。project会为所有targets定义了默认的build settings,每一个target也能自定义自己的build settings,且target的build settings会重写project的build settings。
3.Xcode Project文件会包含以下信息,对资源文件的引用(源码.h和.m文件,frame,资源文件plist,bundle文件等,图片文件image.xcassets还有Interface Builder(nib),storyboard文件)、文件结构导航中用来组织源文件的组、Project-level build configurations(Debug\Release)、Targets、可执行环境,该环境用于调试或者测试程序。
4.target会有且唯一生成一个product,它将构建该product所需的文件和处理这些文件所需的指令集整合进build system中。Projects会包含一个或者多个targets,每一个target将会产出一个product。
这里值得说明的是,每个target中的build setting参数继承自project的build settings,一旦你在target中修改任意settings来重写project settings,那么最终生效的settings参数以在target中设置的为准. Project可以包含多个target,但是在同一时刻,只会有一个target生效,可用Xcode的scheme来指定是哪一个target生效。
build setting中包含了product生成过程中所需的参数信息。project的build settings会对于整个project中的所有targets生效,而target的build settings是重写了Project的build settings,重写的配置以target为准。
一个build configaration指定了一套build settings用于生成某一target的product,例如Debug和Release就属于build configaration。
一个Scheme就包含了一套targets(这些targets之间可能有依赖关系),一个configuration,一套待执行的tests。
结论
可以通过配置一个configaration 文件来对应一个target的build setting. 从而来配置对应依赖关系.
实践
我们计划来创建一个多工程Demo.
需求: 里面包含主工程, pods工程, 以及主工程下面的子工程. 并指定子工程对pods下面库的依赖.
最后
预告: 下篇-xcconfig具体参数配置详解.