Apple Developer Documentation Archive 是 Apple 已归档的开发者文档,具有很大的参考价值。adat 项目选取了一些典型文章进行翻译,摒弃了部分过时的内容,并在 Xcode 13.0 上进行实践。这是该项目的第一篇文章,后续文章将会逐步深入,探究使用命令行工具进行企业级构建的最佳实践。
内容概览
- 命令行工具包是什么?
- macOS 10.9 及以后的版本上的 Xcode 不再提供命令行工具下载入口,应该如何安装?
- 如何卸载命令行工具?
- 多个 Xcode 并存的情况下,如何查看命令行工具使用的 Xcode 版本?
- 如何修改命令行工具使用的 Xcode 版本?
- 如何使用命令行构建 Xcode 项目?
- 如果有多个 Configurations ,如何给 xcodebuild 设置一个默认的 Configuration ?
- 如何利用命令行实施单元测试?
- 如何利用命令行实现 Xcode 中的 Build For Testing 和 Test Without Building 功能?
- exportOptionsPlist 文件可以包含哪些配置?
- 如何归档并导出应用?
命令行工具包是什么?
命令行工具包是一个小型的自包含工具包,可以独立下载,可以在 macOS 上进行命令行开发。它由 macOS SDK 和命令行工具(例如 Clang,位于 /Library/Developer/CommandLineTools)组成。
macOS 10.9 及以后的版本上的 Xcode 不再提供命令行工具下载入口,应该如何安装?
在 macOS 10.9 及以后的版本上,Xcode 的偏好设置中的下载面板不再支持命令行工具直接下载,可以使用下面任意一种方式来安装:
安装 Xcode
Xcode 已经包含命令行工具,因此只要安装了 Xcode,就无需额外安装命令行工具。
从 Apple 开发者网站下载
下载地址:https://developer.apple.com/download/all/,需要使用 Membership Account 登录,搜索并下载和系统版本匹配的命令行工具版本。
在 macOS 10.9 及以后,当有新的命令行版本可用时,将会收到软件更新的通知。
通过 Terminal 安装
在 Terminal 中执行如下命令进行安装:
xcode-select --install
macOS 自带 xcode-select 命令,在 /usr/bin 目录下。
如何卸载命令行工具?
- 删除 Xcode 应用
- 删除 /Library/Developer/CommandLineTools 目录
多个 Xcode 并存的情况下,如何查看命令行工具使用的 Xcode 版本?
在 Terminal 中执行如下命令:
xcode-select --print-path
示例:
$ xcode-select --print-path
/Applications/Xcode.app/Contents/Developer
表示当前命令行工具使用的Xcode位于 /Applications/Xcode.app
如何修改命令行工具使用的 Xcode 版本?
在 Terminal 中执行如下命令:
sudo xcode-select -switch <path/to/>Xcode.app
示例:
$ sudo xcode-select -switch /Applications/Xcode.app
如何使用命令行构建 Xcode 项目?
使用 xcodebuild 命令,它可以对 Xcode 项目和工作空间进行编译、查询、分析、测试和归档。如果操作的是 Xcode 项目,需要指定至少一个 target 或一个 scheme,而如果是工作空间,则只需指定一个 scheme。在 Terminal 中执行 man xcodebuild 可以查看 xcodebuild 使用手册。xcodebuild 执行的结果默认存储位置定义在:Xcode > Preferences > Locations。
注意:在执行命令前,要先切换到包含项目或工作空间的目录下,或指定完整的项目或工作空间的路径。
下面是一些用法举例:
列出工作空间包含的所有 scheme
xcodebuild -list -workspace <your_workspace_name>.xcworkspace
示例:
$ cd /Users/username/Desktop/MyApplication
$ xcodebuild -list -workspace MyApplication.xcworkspace
Information about workspace "MyApplication":
Schemes:
iOSApp
tvOSApp
macOSApp
iOSWithWatchApp
iOSWithWatchApp WatchKit App
列出项目包含的所有 target 、configuration 和 scheme
xcodebuild -list -project MyProject.xcodeproj
示例:
$ cd /Users/username/Desktop/MyProject
$ xcodebuild -list -project MyProject.xcodeproj
Information about project "MyProject":
Targets:
iOS
iOSTests
iOSUITests
watchOS App
watchOS App Extension
tvOS
tvOSTests
tvOSUITests
macOS
macOSTests
macOSUITests
Build Configurations:
Debug
Release
If no build configuration is specified and -scheme is not passed then "Debug" is used.
Sch