Workspace、Scheme、Project、Target、Build Settings
workspace 它多含所有文件,可以有多个Project和其他文档文件。
project 就是一个个的仓库,里面包含属于这个项目的所有文件,资源,以及生成一个或者多个软件产品的信息。每个 project 会包含一个或者多个 targets,而每一个 target 告诉如何生成 products。project 会为所有 targets 定义默认的 build settings,每个 target 也能自定义自己的 build settings,且 target 的 build setting 会重写 project 的 build settings。
Xcode Project 文件会包含以下信息,对资源文件的引用(源码.h和.m文件,frame,资源文件plist,bundle文件等,图片文件image.xcassets还有Interface Builder(nib),storyboard文件)、文件结构导航中用来组织源文件的组、Project-level build configurations(Debug\Release)、Targets、可执行环境,该环境用于调试或者测试程序。
target 会有且唯一生成一个 product,它将构建该 product 所需的文件和处理这些文件所需的指令整合进 build system中。
projects 会包含一个或者多个 targets,每个 target 将会产生一个 product。
每个 target 中的 build setting 参数继承自 build settings,一旦在 tagrget 中修改任意 settings 来重写 project settings,那么最终生效的 settings 参数以在最终生效的 settings 参数以在 target 中设置的为准。
项目中使用多个 tagert
这次在需求中有一个马甲包的需求。
在开始马甲包时,一开始准备使用创建新的 Scheme,后来发现马甲包中某些 view 也变了,不仅仅是 icon 和 启动图等了。就考虑到在 project 中使用 多个 target。
第一种方法就是复制一个原有的 Targets,与原来的工程是一模一样。
第二种方法创建的是一个新的 Targets,里面所有的文件都更改了。包括 plist文件,源代码,Build Settings...所有参数都可以改。
在这次需求中,马甲包中只有部分图片,icon,启动图等一些布局图片改变了,并没有改变里面一些逻辑。所以选择第一种方法复制一个原有一样的工程。
在复制创建新的 Target 时,自动创建新的 Plist 文件。scheme,和 plist ,target 名字都是以 源工程名+copy 来命名,自行更改。
在老员工的要求下尽量少改原工程的代码,和为以后可能需求另外一个马甲包做准备。
创建一个新的 Config 文件来进行多 Target 编译。
通过 Target -> Build Setting 来
所有图片调用以下方法创建
改变启动图,icon等,改变 Target 中 icon,启动图路径即可。
对于 podfile 文件
target"target-copy"do
end
参考: