1、Xcode 全体结构介绍

Xcode工程管理

  • WorkSpace:作业空间,项目 Project 在这个空间中作业(一个 WorkSpace 中能够有多个 Project)
  • Target:一个 Target 对应一个产品(iPhone、iPad产品等)

Xcode工程管理

  • Configuration:产品装备,项目 project 需要经过 config 来办理 target

Xcode工程管理

  • Schme:对指定 target 的环境装备

小结:

  1. Xcode 在 WorkSpace 作业区中,能够有多个 Project 项目
  2. 每个 Project 经过装备 Configuration 装备可生成一个对应的 Target 产品

2、WorkSpace、Project、Configuration、Target、Scheme

2.1 新建WorkSpace

新建 Xcode Project,生成 WorkSpace

Xcode工程管理

Xcode工程管理

Xcode工程管理

  • content.xcworkspacedata:workspace的装备信息,包括 project 途径等内容
  • xcsharedata:Scheme 共享给他人看的装备
  • xcuserdata:私有的装备

办理相同层级 project 的容器便是 workspace,workspace 是朴实的容器,不参与任何编译链接过程,它主要办理:

  • Xcode 中的 projects,记录他们在 Finder 中的引证方位
  • 一些用户界面上的自定义信息(窗口的方位,次序,偏好等等)

2.2 WorkSpace 与 Project 相关

上面新建的 workspace 翻开之后没有 project,阐明两者没有相关上,现在翻开 workspace 进行相关

Xcode工程管理

Xcode工程管理
增加完结之后再看下 contents.xcworkspacedata 中的内容,会发现 project 的途径被增加进来了,这个途径是以 workspace 文件的基途径为准的

// 相关前
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
</Workspace>
// 相关后
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "group:TestXcode">
   </FileRef>
</Workspace>

关于 contents.xcworkspacedata 文件中关键词的一些解释

self:      -> 在.xcworkspace地点目录下有同名,并以.pbxproj结束的文件
group:     -> 指定目录下.xcodeproj结束文件的途径
container: -> 在.xcworkspace当时目录下有不同名,但以.xcodeproj结束文件
absolute:  -> 绝对途径
workspace中的一切project都构建在同一个目录中

Project 便是一个 Xcode 工程,它办理这个工程下的 targets 调集以及它们的源码,引证的资源,framework等,project 是办理资源的容器,本身无法被编译,所以每个 Project 至少应该有一个可编译的target。 咱们也能够对 project 进行装备,包括根本信息和编译选项(Build Settings)等,这些装备会运用到它办理的一切 targets 中,可是假如 target 有自己的装备,则会掩盖 project 中对应的装备。

2.3 Project 中增加 Target

光有空的 project 并不能完结代码的编写,还需要增加 target,注意这儿增加 target 是到 project 里面增加,而不是上面步骤翻开的 workspace 界面中增加,在 finder 中双击后缀名为 .xcodeproj 的文件,就能够直接翻开单个 Project。

Target 是咱们工程的最小可编译单元

Xcode工程管理

Xcode工程管理

Xcode 12 及之后的版别创建 Project 时,默许会自动增加一个 target。这个 target 的名称为和项目名称相同,而且类型为 Application。这个 target 包括了一个默许的运用程序入口文件 main.swift 或 main.m,而且已经设置好了一些根本的编译选项和构建设置,能够直接用于构建和运转运用程序。假如需要增加其他 target,能够在项目设置中进行增加和装备。

建好了 target 之后,项目中就有咱们熟悉的代码编写的 AppDelegateViewControllerBuild settingBuild Phases 这些东西了。

2.4 Configuration 产出环境

有了 target 咱们能够进行产品产出,可是 target 产出时还需要 Configuration 的不同产出环境,默许有 Debug 与 Release 两种,也能够对其进行增加环境,来习惯更多的环境装备。

Xcode工程管理

增加后在 Build Setting 等当地装备产出环境时就不止 Debug 和 Release 两种了

Xcode工程管理

2.5 Target 与 Scheme

Scheme 定义了各个 action 运用的 Target调集以及要运用的装备以及环境变量

Xcode工程管理

在 Xcode 中,Scheme 中预设的六个主要的作业流分别是 Build、Run、Test、Profile、Analyze 和 Archive,它们的作用和运用场景如下:

  1. Build:用于构建项目,将源代码编译成可执行的二进制文件。在开发过程中,该作业流一般与 Debug 构建装备合作运用,用于构建能够运转和调试的运用程序。
  2. Run:用于在模拟器或真机设备上运转项目。在开发过程中,该作业流一般与 Debug 构建装备合作运用,用于在模拟器或真机设备上测验和调试运用程序。
  3. Test:用于运转项目的单元测验和 UI 测验。在开发过程中,该作业流一般与 Test 构建装备合作运用,用于运转项目的测验套件,并生成测验报告和测验掩盖率分析成果。
  4. Profile:用于对项目进行功能分析和优化。在开发过程中,该作业流一般与 Release 构建装备合作运用,用于对项目进行功能分析,并优化代码和资源等以进步运用程序的功能和响应速度。
  5. Analyze:用于对项目进行静态代码分析,以检测代码中的潜在问题和过错。在开发过程中,该作业流一般与 Debug 构建装备合作运用,用于检测代码中的潜在内存泄漏、空指针引证、逻辑过错等问题。
  6. Archive:用于将项目打包成可发布的运用程序。在开发过程中,该作业流一般与 Release 构建装备合作运用,用于对运用程序进行终究的构建、签名和打包等操作,并生成发布版别的 IPA 文件或 Archive 文件。