workspace , project, target 和scheme 定义

官方文档里面的介绍: ProjectTargetWorkspaceScheme。官方文档还是写的很容易理解的, 比翻译的好一些, 看了几篇文章, 觉得写得不是太明白, 所以又自己总结了一下,下面就简单来介绍一下。

Xcode Project

简单来说就是一个项目,我们新建一个工程的时候你会发现就会有个Project。它其实是一个包含了所有文件、资源和构建信息的一个存储库。 包含了一个或者多个Target,而这些Target制定了如何构建Products。默认情况下,一个Project定义的build settings对于所有的Target都是一样的,你也可以针对某个Target进行定制,target的build settings将覆盖项目构建设置。
一个Project文件包含了以下的信息:

  • 参考的资源文件:
    * 源代码(包括头文件和实现文件)
    * Libraries和frameworks , 内部的和外部的(导入的)
    * 资源文件
    * 图片文件
    * nib文件

  • 用于在结构导航器中组织源文件的组(scheme)

  • 项目级 - 构建配置文件(config)。 您可以为项目指定多个构建配置; 例如,您可能已经为项目调试和发布构建设置。

  • Targets, 每一个target 的制定文件
    * 一个产品build时候的引用
    * 产品需要build的源文件的引用

  • build 配置文件, 包含依赖的其他target和其他build setting, target 没有单独设置build setting 的时候就默认集成 project的 配置.

  • 执行的环境用来调试还是测试工程, 指明执行环境
    * 可执行文件 当你run 或者debug 的时候
    * 可执行文件的命令行参数 ,如果有 (这里我也不懂是指的什么, 后续知道了会补上, 有知道的大神也可以写在评论, 学习一下)
    * 程序运行时的环境变量, 就是环境配置(例如
    #ifdef Online_CreditPlatForm 线上环境配置
    #elif Daily_CreditPlatFor 日常环境配置
    #elif Pre_CreditPlatForm 预发环境配置
    #else 默认环境配置
    #endif
    )
    一个project可能是单独的一个,也可能是一个工作空间。

Xcode Target

一个Project可以有多个Target。而且Target是继承自Project的,也就是说如果你在Project中配置了某个东西,那么所有的Target都会生效;但是反之则不会生效。
一个target 可以依赖其他target, 同一个project 或者 workspace 中, Xcode 可以在运行时自己发现这个依赖,你也可以不build setting 中进行自己的设置.

Xcode Scheme

首先你知道你在哪里可以设置Scheme

Paste_Image.png

如果你现在有一个产品,你要做不同的环境出来,包括线上、预发、日常等等。这个时候你就可以来建立多个Scheme来实现。你先选中Scheme里面的默认的第一个,然后右击弹出一个小列表:(Duplicate、Delete、Project Editor Help),顾名思义,Duplicate就是复制的意思,你可以选择一个Scheme进行复制,然后通过修改其General、Build Settings以及Build Phases来进行定制化修改,在Build Settings里面有一个Preprocessor Macros的选项,你可以直接设置定义宏的方式来对不同的Scheme进行区分,比如我的:

我这里面建立了三个Targets:OnLine、Daily、Pre。然后通过设置不同的宏定义来进行环境配置,其实很简单:在你设置环境的地方通过宏定义进行判断:

#ifdef Online_CreditPlatForm
线上环境配置
#elif Daily_CreditPlatForm
日常环境配置
#elif Pre_CreditPlatForm
预发环境配置
#else
默认环境配置
#endif

这样就可以直接在:

选择不同的Scheme run就可以了。不用每次都去修改ip配置。此外,你还可以对每个Scheme进行其他的配置,比如icon、Display Name等等。

Paste_Image.png

Scheme名字是按照我的意愿写的,而直接复制的名字后面是copy copy2等等,这样很不友好,而且不方便识别,你可以按照下面的步骤进行修改名称:
首先,打开Manage Schemes…弹出如下的界面:


然后选中你要改名的Scheme,然后按Enter键,输入你想要的名字就行了比如我直接设置成了OCLintDemo_pre。

然后,在Scheme里面选中你要修改名字的,同样的方法设置成OCLintDemo_pre:

如果你觉得刚才创建Target对应的plist文件名字也不太友好,如图:


可以在指定Target里面Build Settings里面的Packaging中Info.plist File里修改为自己想要的(OCLintDemo-pre-Info):
这样就修改成了自己所需要的名称。所以就我个人理解而言,如果一个产品只是一些配置或者其他的东西有所差异,你可以新建多个Scheme进行开发,提高开发效率,也提高了打包的速度(至少不用每次添加注释和取消注释)。

XcodeWorkspace

如果你的开发过程中用到了Cocoapods,那么你就是已经用到了Workspace,因为你使用Cocoapods之后,你打开的那个文件就是 xxxx.xcworkspace。简单理解他就是一个Xcode文件,它包含了一个project组合,他们能够一起工作。
Xcode Scheme
看Scheme之前,你必须要先了解了Target,要不然请直接忽略Scheme。一个Scheme定义了要build的target的集合,定义了一个当building的时候的配置,定义了一个测试的集合。这里需要注意一点,那就是当你Archive要发布到AppStore的时候,需要将Archive设置为Release


总结
简单来说就是:一个workspace可以包含多个project,一个project可以包含多个target,Scheme包含了所有的target集合, 可以指定编译有效的target。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容