Xcode:简单语言的目标和方案是什么?

Mic*_*iZH 191 xcode ios

是的标题说:-)他们用简单的英语语言是什么意思?我真的不明白Apple网站上的解释,我需要重命名我的目标,我担心之后没有任何作用..

Jam*_*ter 283

我也加入了Workspace和Project!

  • 工作区 - 包含一个或多个项目.这些项目通常彼此相关
  • 项目 - 包含代码和资源等(你会习惯这些!)
  • 目标 - 每个项目都有一个或多个目标.
    • 每个目标都定义了该项目的构建设置列表
    • 每个目标还定义了一个类,资源,自定义脚本等列表,以便在构建时包含/使用.
    • 目标通常用于同一项目的不同分布.
      • 例如,我的项目有两个目标,一个"普通"构建和一个"办公室"构建,它具有额外的测试功能,可能包含几个背景音乐曲目和一个更改曲目的按钮(就像目前一样).
      • 在添加类和资源时,您将习惯于将类和资源添加到默认目标.
      • 您可以选择将哪些类/资源添加到哪个目标.
        • 在我的示例中,我有一个"DebugHandler"类添加到我的办公室构建中
      • 如果添加测试,则还会添加新目标.
  • Scheme - 一个方案定义了当你按下"Build","Test","Profile"等时会发生什么.
    • 通常,每个目标至少有一个方案
    • 您可以转到Scheme> Manage Schemes并按"立即自动创建方案",为您的目标自动创建方案

  • @3366784 让我分享一个不同的例子。假设您是一家管理 Uber 和 Lyft(两家非常大的乘车公司)的代码库的公司。代码库有很多相似之处。两者都会有乘客/司机/地图/行程等。您不会想为每个代码库编写这些对象。相反,在您的项目中,您将有一个 Uber 目标和一个 Lyft 目标。然后,对于每个目标,您可以有不同的 plist、应用程序图标等。某些类只能适用于 Uber 目标,或仅适用于 Lyft 目标。但大多数情况下,他们都是为了同一个目标。(1/2) (5认同)
  • 您的办公大楼底部有一个音乐按钮是什么意思。您的实际应用程序是否具有仅在Office内部版本中激活的额外代码,或者是在Mac上运行的音乐。对不起,我很困惑 (3认同)
  • 精湛的解释兄弟!!! (2认同)

BJ *_*mer 61

一个目标是在Xcode运行"构建"创造的最终产品.它可能是应用程序,框架,静态库或单元测试包.无论它是什么,它通常对应于"内置产品"文件夹中的单个项目.

一个方案表示你一起工作目标的集合.它定义了在Xcode(运行,测试,配置文件等)中选择各种操作时使用的目标.通常,您将只有一个方案,它使用运行,存档和配置文件操作的主应用程序目标,以及测试操作的单元测试目标.如果您要构建两个相关的应用程序,则可能有两个方案使用相同的单元测试包但不同的应用程序目标.

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


Abh*_*ngh 58

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

当你有多个目标时,它们可以与Xcode的Run,Test,Profile动作一对一匹配,这个概念定义了一个方案

在此输入图像描述

一个目标是你的一个版本工程,即目标在类和资源略有不同时期建造的时候使用.项目可以具有多个构建时间设置,以满足不同的分发要求.

  • 这个图似乎错了.一个方案应该绑定到一个特定的目标,我没有看到一个方案中你可以有多个目标. (7认同)
  • @Boon不,不小心保守是正确的.在方案编辑器中,单击左侧的"构建"项.在右侧区域中,单击"+",您可以为此方案添加更多目标.根据需要勾选方框.然后,可执行下拉列表中的其他操作(运行,配置文件等)中提供了这些目标的可执行文件. (6认同)

Hon*_*ney 15

太棒了;目标包含构建模块/框架/库或应用程序/最终产品的指令,例如构建 watchOS 应用程序和 iOS 应用程序的指令。方案知道如何响应某些操作,例如构建操作或测试操作或存档操作。

\n

确保您观看WWDC16 视频 \xe2\x80\x94 Xcode 简介[45:13]。如果您想获得更深入的知识,请观看整个视频。该视频简单易懂,但非常基础。我的回答大多与此无关。

\n
\n

方案

\n
\n

方案是您指定要运行的内容的方式,它还包含\n有关您希望如何运行它的信息。

\n

例如,我可以有一个包含 iOS 应用程序和 Watch 应用程序的项目,\n在这种情况下,我将有一个方案来运行我的 iOS 应用程序,\n方案来运行我的 Watch 应用程序

\n

Run 将在调试器中运行我的应用程序。

\n

测试将运行我的测试。

\n

Profile 将在仪器中运行我的应用程序,以便我可以测量\n其性能。

\n

分析将运行 Xcode 的静态分析器并帮助捕获我可能会错过的问题。

\n

最后,“存档”操作将构建我的应用程序以供发布,并将\n放入存档中,然后我可以使用该存档分发给我的测试人员或\n到App Store,或保存以供将来崩溃日志去符号化或\n符号化。

\n
\n

项目

\n
\n

项目是用于在 Xcode 中组织代码和资源的文档。

\n

您可以引用光盘上的源代码文件和资源文件、\n实际将这些文件构建到应用程序等产品中的目标、\n配置目标如何构建其产品的构建设置,\n以及配置您如何执行操作的方案,例如带着你的目标奔跑。\n

\n

现在,要访问您的项目设置,您可以在导航器中选择您的项目,选择编辑器顶部的弹出框,然后在其中选择您的项目。

\n
\n

目标

\n
\n

您可以引用光盘上的源代码文件和资源文件、\n实际将这些文件构建到应用程序等产品中的目标、\n配置目标如何构建其产品的构建设置,\n以及配置您如何执行操作的方案,例如使用您的目标运行[测试、构建]。\n目标包含构建\n应用或框架等事物的说明。

\n

你的目标生产的东西称为它的产品。您的目标构建其产品所采取的\n步骤集称为构建\n阶段。

\n

构建设置

\n

最后,目标具有构建设置来配置它如何构建其产品[如何编译代码、使用的优化以及如何链接事物以及传递给链接器和编译器的某些标志。欲了解更多请参见这里]

\n

现在,需要注意的一件事是,项目和目标都具有“构建”设置,并且目标继承在项目级别设置的值,但可以使用特定于目标的值覆盖它们。

\n

目标的构建阶段会执行一些操作,例如首先构建依赖项、编译该目标中的源文件以及将目标链接到库和框架。

\n
\n

总结一下:

\n

目标

\n

帮助将一组文件放在一起来构建/运行产品/模块/包

\n
    \n
  • 您发送到应用商店的应用程序。
  • \n
  • 作为应用程序依赖项的框架或库。
  • \n
\n

就像单个应用程序可以有一个 iOS 目标和一个 watchOS 目标一样。或者只是一个 iOS 目标。或者单个 iOS 目标以及测试目标等。

\n

如果您进入目标的构建阶段>>编译源,您将看到为该目标构建的每个文件。例子:

\n

在此输入图像描述

\n

明确引用苹果文档

\n

目标指定要构建的产品,并包含从项目或工作区中的一组文件构建产品的说明。目标定义单一产品;它将输入组织到构建系统\xe2\x80\x94中,即构建该产品所需的源文件和处理这些源文件\xe2\x80\x94的指令。项目可以包含一个或多个目标,每个目标生成一种产品。

\n

构建产品的说明采用构建设置和构建阶段的形式,您可以在 Xcode 项目编辑器中检查和编辑它们。目标继承项目构建设置,但您可以通过在目标级别指定不同的设置来覆盖任何项目设置。一次只能有一个活动目标;Xcode 方案指定活动目标。

\n

一个目标及其创建的产品可以与另一个目标相关。如果一个目标需要另一个目标的输出才能构建,则称第一个目标依赖于第二个目标。如果两个目标位于同一工作区中,Xcode 可以发现依赖关系,在这种情况下,它会按所需的顺序构建产品。这种关系称为隐式依赖关系。您还可以在构建设置中指定显式目标依赖项,并且可以指定 Xcode 可能期望具有隐式依赖项的两个目标实际上并不依赖。例如,您可以在同一工作区中构建一个库和一个链接到该库的应用程序。Xcode 可以发现这种关系并首先自动构建库。但是,如果您实际上想要链接到工作区中构建的版本之外的库版本,则可以在构建设置中创建显式依赖项,这会覆盖此隐式依赖项。

\n

方案

\n

给定的目标可以通过不同的行动来实现。

\n
    \n
  • 建造
  • \n
  • 跑步
  • \n
  • 测试
  • \n
  • 轮廓
  • \n
  • 档案
  • \n
\n

您可以使用启用了所有诊断的方案(这会使调试速度变慢),也可以采用不启用任何诊断的方案。或者运行某些性能相关测试的方案与同时运行单元测试和性能测试的方案。您可以编辑方案,使其执行以下操作:

\n
    \n
  • 建立多个目标

    \n
  • \n
  • 在任何操作之前或之后执行脚本

    \n
  • \n
  • 在任何操作之前或之后发送电子邮件

    \n
  • \n
  • 使用内存管理诊断运行

    \n
  • \n
  • 为任何操作生成调试或发布版本。

    \n
  • \n
\n

有关更多信息,请参阅自定义项目的构建方案

\n
\n

把它们放在一起:

\n

点击运行后,Xcode 将查看所选方案。它将找到其关联的目标。使用该目标的构建阶段及其构建设置(将包含任何未被目标设置覆盖的项目设置)将产品构建到选定的目标中(目标可以是 iPhone 模拟器或物理 iPhone 或watchOS 等)。\n在此输入图像描述

\n

再次观看 WWDC 视频!

\n


yoA*_*ex5 7

Xcode 结构

Workspace  
  -> Project 
    -> Target 
     -> Dependency 
      -> Scheme 
        -> Action
        -> Build Configuration  
          -> Build Configuration File(.xcconfig) 
Run Code Online (Sandbox Code Playgroud)

Workspace( .xcworkspace) - 是多个projects. 它是作为[关于]的下一步创建的cross-project references

  • Workspace包含所有schemes来自包含projects
  • Workspace处理所有implicit dependencies[关于]

观察:

  • 在同一个项目中处理不同的项目是安全的,workspace不会被抓住
//if you try to open two projects on two Xcode instances
Couldn't load Project.xcodeproj because it is already opened from another project or workspace
Run Code Online (Sandbox Code Playgroud)
  • Cocoapods[关于]使用workspacewhere 创建 Pods项目

Project.xcodeproj) -这是一种用于容器targetsscheme。它定义了代码文件、资源...

Projects管理Build Configuration(由 更改scheme)和Build Configuration File[关于]

您可以将现有转换ProjectWorkspace

File -> Save As Workspace...
Run Code Online (Sandbox Code Playgroud)

[工作区与项目]

Target-PBXNativeTarget部分。定义一组特定的生成设置,生成:

  • Application target
  • Library and framework targets
  • Test
  • Aggregate[关于]。例如,它用于创建一个Universal frameworkUmbrella framework

Scheme

包含操作(运行、测试、配置文件、分析、存档)+配置(附加参数、[构建配置]、诊断)

可以共享方案,这有助于您在 CI、Carthage[示例] ... 中找到:

<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes
Run Code Online (Sandbox Code Playgroud)

Dependency-Targets可以有dependencies。依赖是针对源链接的。这些依赖可以静态或动态链接[关于]它们有两种类型:

  • Explicit Dependency[关于] - 位于同一个项目嵌套项目中的依赖的源代码
  • Implicit Dependency[关于] - 位于作为同一工作区一部分的项目中的依赖项的源代码/关闭代码。

[词汇]


归档时间:

查看次数:

48693 次

最近记录:

5 年,12 月 前