Xcode工程管理

1、Xcode 整体结构介绍

image.png

  • WorkSpace:工作空间,项目 Project 在这个空间中工作(一个 WorkSpace 中可以有多个 Project)
  • Target:一个 Target 对应一个产物(iPhone、iPad产物等)

image.png

  • Configuration:产物配置,项目 project 需要通过 config 来管理 target

image.png

  • Schme:对指定 target 的环境配置

小结:

  1. Xcode 在 WorkSpace 工作区中,可以有多个 Project 项目
  2. 每个 Project 通过配置 Configuration 配置可生成一个对应的 Target 产物

2、WorkSpace、Project、Configuration、Target、Scheme

2.1 新建WorkSpace

新建 Xcode Project,生成 WorkSpace

image.png

image.png

image.png

  • content.xcworkspacedata:workspace的配置信息,包含 project 路径等内容
  • xcsharedata:Scheme 分享给别人看的配置
  • xcuserdata:私有的配置

管理相同层级 project 的容器就是 workspace,workspace 是纯粹的容器,不参与任何编译链接过程,它主要管理:

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

2.2 WorkSpace 与 Project 关联

上面新建的 workspace 打开之后没有 project,说明两者没有关联上,现在打开 workspace 进行关联

image.png

image.png
添加完成之后再看下 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>
// 关联前
<?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>
// 关联前 <?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都构建在同一个目录中
self:      -> 在.xcworkspace所在目录下有同名,并以.pbxproj结尾的文件
group:     -> 指定目录下.xcodeproj结尾文件的路径
container: -> 在.xcworkspace当前目录下有不同名,但以.xcodeproj结尾文件
absolute:  -> 绝对路径
workspace中的所有project都构建在同一个目录中
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 是我们工程的最小可编译单元

image.png

image.png

Xcode 12 及之后的版本创建 Project 时,默认会自动添加一个 target。这个 target 的名称为和项目名称相同,并且类型为 Application。这个 target 包含了一个默认的应用程序入口文件 main.swift 或 main.m,并且已经设置好了一些基本的编译选项和构建设置,可以直接用于构建和运行应用程序。如果需要添加其他 target,可以在项目设置中进行添加和配置。

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

2.4 Configuration 产出环境

有了 target 我们可以进行产物产出,但是 target 产出时还需要 Configuration 的不同产出环境,默认有 Debug 与 Release 两种,也可以对其进行增加环境,来适应更多的环境配置。

image.png

添加后在 Build Setting 等地方配置产出环境时就不止 Debug 和 Release 两种了

image.png

2.5 Target 与 Scheme

Scheme 定义了各个 action 应用的 Target集合以及要使用的配置以及环境变量等

在 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 文件。

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYWueaPH' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片