Ios Xcode:在普通语言中,什么是目标和方案?

Ios Xcode:在普通语言中,什么是目标和方案?,ios,xcode,xcode-scheme,xcode-target,Ios,Xcode,Xcode Scheme,Xcode Target,是的,书名上写着:-)它们在简单的英语中是什么意思?我真的不明白苹果网站上的解释,我需要重新命名我的目标,我担心在那之后一切都不起作用。Atarget是通过在Xcode中运行“build”创建的最终产品。它可能是应用程序、框架、静态库或单元测试包。不管它是什么,它通常对应于“Build products”文件夹中的单个项目 方案表示与您一起工作的目标集合。它定义了当您在Xcode中选择各种操作(运行、测试、配置文件等)时使用的目标。通常,您只有一个方案,该方案将主应用程序目标用于运行、归档和配置

是的,书名上写着:-)它们在简单的英语中是什么意思?我真的不明白苹果网站上的解释,我需要重新命名我的目标,我担心在那之后一切都不起作用。

Atarget是通过在Xcode中运行“build”创建的最终产品。它可能是应用程序、框架、静态库或单元测试包。不管它是什么,它通常对应于“Build products”文件夹中的单个项目

方案表示与您一起工作的目标集合。它定义了当您在Xcode中选择各种操作(运行、测试、配置文件等)时使用的目标。通常,您只有一个方案,该方案将主应用程序目标用于运行、归档和配置文件操作,并将单元测试目标用于测试操作。如果您正在构建两个相关的应用程序,那么可能有两个方案使用相同的单元测试包,但应用程序目标不同


方案(在Xcode 4中引入)的主要好处是,它们允许您在运行应用程序和单元测试之间切换,而无需切换选定的目标。

我也在Workspace和Project中添加了这些方案

  • 工作区-包含一个或多个项目。这些项目通常相互关联
  • 项目-包含代码和资源等(您将习惯这些!)
  • 目标-每个项目都有一个或多个目标。
    • 每个目标定义该项目的生成设置列表
    • 每个目标还定义了类、资源、自定义脚本等的列表,以便在构建时包括/使用
    • 目标通常用于同一项目的不同分布。
      • 例如,我的项目有两个目标,一个“普通”版本和一个“office”版本,这两个版本具有额外的测试功能,可能包含多个背景音乐曲目和一个更改曲目的按钮(与当前一样)
      • 您将习惯于在添加类和资源时将它们添加到默认目标中
      • 您可以选择将哪些类/资源添加到哪个目标。
        • 在我的示例中,有一个“DebugHandler”类被添加到我的office构建中
      • 如果添加测试,这也会添加新的目标
  • 方案-方案定义了当您按下“构建”、“测试”、“配置文件”等时发生的情况。
    • 通常,每个目标至少有一个方案
    • 通过转到“方案>管理方案”并按“立即自动创建方案”,可以为目标自动创建方案

我是一个视觉化的人,因此为了解释这个概念,我将使用图表

当您有多个目标时,它们可以与Xcode的运行、测试、配置文件操作一一匹配,这个概念定义了一个方案


目标是您的项目的一个版本,即目标在构建期间使用的类和资源略有不同。一个项目可以有多个构建时间设置以满足单独的分发要求。

Xcode结构

.xcworkspace
)-是多个
项目的容器。它是作为跨项目参考的下一步创建的

  • 工作区
    包含包含的
    项目中的所有
    方案
  • Workspace
    处理所有
    隐式依赖关系
意见:

  • 在同一个
    工作区内处理不同的项目是安全的,并且不会捕获
  • Cocoapods
    使用
    workspace
    创建
    Pods
    项目的地方
项目
.xcodeproj
)-它是
目标
方案
的容器。它定义代码文件、资源

另外,
项目
管理
构建配置
(由
方案
更改)和
构建配置文件

您可以将现有的
项目
转换为
工作区

File -> Save As Workspace...

目标
-
PBXNativeTarget
部分。定义生成以下内容的特定生成设置集:

  • 应用程序目标
  • 库和框架目标
  • 测试
  • 聚合
    。例如,它用于创建
    通用框架
    伞式框架
方案

可以有任何自定义名称

Target -> one or many Scheme -> action(run, test, profile, analyze, archive) -> Build Configuration, pass some arguments...

  • Schema
    可以共享,这有助于您进行CI,
    迦太基
    。。。地址:
/.xcodeproj/xcshareddata/xcschemes
相关性
-
目标
可以具有
相关性
。依赖项是针对的源链接。这些依赖关系可以静态或动态链接。它们有两种类型:

  • 显式依赖项
    -位于同一项目或嵌套项目中的依赖项的源代码
  • 隐式依赖关系
    -位于同一工作区的项目中的依赖关系的源代码/封闭代码
我的想法:

目标——一种较低的抽象——各种类型的构建。每个目标都有自己的构建设置(因此,如果您拆分为多个目标,请分别为每个目标处理这张巨大的表)。目标可以方便地包含/排除文件,因此您可以基于每个文件有效地配置生成

方案——一种更高的抽象——通过各种部署方式(运行、测试、归档)指导目标
Target -> one or many Scheme -> action(run, test, profile, analyze, archive) -> Build Configuration, pass some arguments...
<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes