# 提升 iOS 开发效率！ Xcode 9 内置模拟器的9个技巧

iOS模拟器是在开发任意iOS应用程序过程中不可或缺、无法被忽视的一个部分。值得一提的是，Xcode 9的新模拟器带来了很多有用的功能，能够提升你的开发效率。对比历代模拟器的更新，这次有了很重大的改变。

所以让我们开始这篇教程的重点吧，本文会列出我在新iOS模拟器中发现的新功能（一些技巧也可以在旧的模拟器中使用）。

## 1. 在全屏模式下使用Xcode模拟器

当你使用13寸的 Mac 时，Xcode 的全屏模式是唯一救星，以前不能在全屏模式下使用Xcode模拟器，但现在开始可以使用了。 从Xcode 9 beta 3开始，这个功能将会是系统预设的，所以你无需做任何事情来启用它。

> 更新：可能某些人预设情况下是关闭此功能的，不用担心，可以随时通过 Apple Internal 选单启用此功能。如果想在新的模拟器中探索更多的秘密功能，可以启用Apple 隐藏的内部选项。

![](https://1795314173-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAdZ7gFz4IllRQpWbzu%2F-LAdZ8MxWrHaExfP4jSI%2F-LAdZXivVE2QIpi2R-te%2Fxcode_screen_shot.png?generation=1524337095084181\&alt=media)

所以，你需要在根目录中创建一个名为“AppleInternal”的空文件夹，请执行下面的命令并重新启动模拟器：

`sudo mkdir /AppleInternal`

新的选项中项目应该会显示出来 ✌️

## 2. 一次打开多个模拟器

还记得在不同的模拟器上测试应用程序的挫败感吗？在此之前，你一次只能打开一个模拟器，虽然有许多“hacks”教你如何在旧版本的Xcode中打开多个iOS模拟器。但是在Xcode 9当中，这个功能是直接可以使用的。

## 3. 缩放模拟器就像调整视窗大小一样简单

在Xcode 9之前，我们只有透过”Scale options”才能调整模拟器的大小，现在Apple终于开放调整模拟器窗口的大小。如果一次有多个模拟器打开，这个小细节的调整这是非常有用，可以帮助你有效地组织工作空间。

## 4. 记录模拟器的视频

在Xcode 9官方的”What’s new”文档中，苹果声称现在可以录制模拟器屏幕视频，即使在旧版本中，只要使用simctl也可以做到，在界面上找不到地方可以启用视频录制（除了iOS 11中的内置屏幕录制）。 要获取视频档案，请执行以下代码：

`xcrun simctl io booted recordVideo --type=mp4 <PATH TO VIDEO FILE>`

booted – 表示simctl选择当前启动的模拟器，如果你有多个已启动的模拟器，simctl将选择当前正在操作的那一个模拟器。

## 5. 使用 Finder 共享文件到模拟器

现在，模拟器有了 Finder 扩展功能，你可以直接从 Finder 窗口共享文件。 你也可以执行以下simctl命令，使用图像/视频文件进行类似操作：

`xcrun simctl addmedia booted <PATH TO MEDIA FILE>`

很高兴有这样的操作方法，但是对我而言，将文件拖放至模拟器窗口似乎快很多。

## 6. 模拟器上打开URL

这个也能使用simctl，所以你也可以在旧版本的模拟器上打开自定义的URL schemes。 拖拽 以你指定的任何URL执行以下命令：

`xcrun simctl openurl booted <URL>`

关于Apple所有URL schemes的列表，请查看文档.

## 7. 快速找到应用程序的文件夹

再来介绍一个simctl的命令，你可以使用单个命令在文件系统上获取应用程序的资料夹，只需要知道应用程序的bundle identifier并执行以下命令：

`xcrun simctl get_app_container booted <APPS BUNDLE ID>`

或者你可以使用open命令在 Finder 中更快打开目标文件夹：

`open`xcrun simctl get\_app\_container booted `-a Finder`

## 8. 使用命令行参数(Command Line Args)在模拟器中启动应用程序

使用simctl，你也可以从终端机上启动应用程序，并在其中传递一些命令列参数(甚至可以设置一些环境变量)。如果你想在应用程序中插入一些除错行为，这将非常有用。 执行下列命令可以让你完成这项任务:

`xcrun simctl launch --console booted <BUNDLE ID> <YOUR ARGUMENTS>`

你可以从CommandLine.arguments获取这些命令行参数。

## 9. 透过Bundle ID获取完整的应用程序消息

有时找出应用程序的档案或暂存数据位于文件系统上的位置很有用，如果你需要比simctl get\_app\_container更全面的资讯，simctl还有一个很好用的小工具，名为appinfo，它会以下列格式显示相关资讯：

`{ ApplicationType = User; Bundle = <PATH TO APP FILE>; BundleContainer = <PATH TO FOLDER WITH APP FILE>; CFBundleDisplayName = TestiOSApp; CFBundleExecutable = TestiOSApp; CFBundleIdentifier = "com.ahmed.app.TestiOSApp"; CFBundleName = TestiOSApp; CFBundleVersion = 1; DataContainer = <PATH TO YOUR DATA>; GroupContainers = { }; Path = <PATH TO APP FILE>; SBAppTags = ( ); }`

执行下面的命令并观察输出结果：

`xcrun simctl appinfo booted <BUNDLE ID>`

## 后记

iOS模拟器是一个非常强大的工具，只要知道所有的细节和技巧，它可以让你的开发过程加快许多，身为一个好的工程师，熟悉你的开发工具是必然的。 在Flawless中，iOS模拟器对我们来说非常重要，这个产品是一个iOS模拟器插件，允许工程师在模拟器内部检查任何设计，对于新Xcode 9和Simulator版本的推出，我无以言表，已经等不及公开版本推出！我们可以实现更多有用的功能来保持iOS应用程序的视觉层次感。 另外，如果我在本文中错过了一些重要的内容，欢迎读者可以在评论中分享想法，相信将可以让本文增添更多的实用开发技巧 。

> YouTube 视频由于被墙，没做搬运，如有需要可自行去原文查看。

翻译链接:<https://medium.com/flawless-app-stories/simulator-on-steroids-c12774ca6b>
