zoukankan      html  css  js  c++  java
  • Project、Target、Workspace and Scheme

    前言

    今天有人问我Target和Project是什么关系?额。。。学习iOS开发都知道Target和Project的关系。这里我就简单的做了一个总结,而且加入的Scheme和Workspace。如果不当的地方,欢迎指教。

    开始

    废话不多说,如果你的英语还ok(强烈建议看官方文档),你可以直接看这里:ProjectTargetWorkspaceScheme。下面就简单来介绍一下各位。

    Xcode Project

    简单来说就是一个项目,我们新建一个工程的时候你会发现就会有个Project。它其实是一个包含了所有文件、资源和构建信息的一个存储库。Project包含了用欧冠胡构建产品和维护这些元素之间关系的所有元素。它包含了一个或者多个Target,而这些Target制定了如何构建Products。并且一个Project定义的build settings对于所有的Target都是一样的,你也可以针对某个Target进行定制。在来点官网的翻译吧。哈哈。一个Project文件包含了以下的信息:参考的资源文件:源代码(包括头文件和实现文件)、Libraries和frameworks、资源文件、图片文件、nib文件等等。一个project可能是单独的一个,也可能是一个工作空间。

    Xcode Target

    Target的中文名字是目标,就是王健林说的“先实现一个小目标”的那个目标。一个Project可以有多个Target。而且Target是继承自Project的,也就是说如果你在Project中配置了某个东西,那么所有的Target都会生效;但是反之则不会生效。如果你现在有一个产品,你要做不同的环境出来,包括线上、预发、日常等等。这个时候你就可以来建立多个Target来实现。你先选中Targets里面的默认的第一个,然后右击弹出一个小列表:(Duplicate、Delete、Project Editor Help),顾名思义,Duplicate就是复制的意思,你可以选择一个Target进行复制,然后通过修改其General、Build Settings以及Build Phases来进行定制化修改,在Build Settings里面有一个Preprocessor Macros的选项,你可以直接设置定义宏的方式来对不同的Target进行区分,比如我的:

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

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

    这样就可以直接在:

    选择不同的Scheme run就可以了。不用每次都去修改ip配置。此外,你还可以对每个Target进行其他的配置,比如icon、Display Name等等。到这里你也许会发现我的Target名字是按照我的意愿写的,而直接复制的名字后面是copy copy2等等,这样很不友好,而且不方便识别,你可以按照下面的步骤进行修改名称:

    • 首先,打开Manage Schemes…弹出如下的界面:

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

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

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

    可以在指定Target里面Build Settings里面的Packaging中Info.plist File里修改为自己想要的(OCLintDemo-pre-Info):

    这样就修改成了自己所需要的名称。

    另外,Target还可以设置依赖,有兴趣的可以了解一下。这里就不在赘述了。所以就我个人理解而言,如果一个产品只是一些配置或者其他的东西有所差异,你可以新建多个Target进行开发,提高开发效率,也提高了打包的速度(至少不用每次添加注释和取消注释)。

    Xcode Workspace

    如果你的开发过程中用到了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集合。

     

  • 相关阅读:
    IIS相关知识
    C#小知识
    DOS与批处理
    Visual Studio与Chrome调试工具使用技巧
    CLR via C# 随记
    jQuery Plugin Docs
    FlexPaper使用小结
    软件测试分为几个阶段 各阶段的测试策略和要求是什么?
    软件产品质量特性是什么?
    简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试
  • 原文地址:https://www.cnblogs.com/zhanggui/p/6186654.html
Copyright © 2011-2022 走看看