iOS模拟器是在开发任意iOS应用程序过程当中不可或缺、没法被忽视的一个部分。值得一提的是,Xcode 9的新模拟器带来了不少有用的功能,可以提高你的开发效率。对比历代模拟器的更新,此次有了很重大的改变。html
因此让咱们开始这篇教程的重点吧,本文会列出我在新iOS模拟器中发现的新功能(一些技巧也能够在旧的模拟器中使用)。bash
当你使用13寸的 Mac 时,Xcode 的全屏模式是惟一救星,之前不能在全屏模式下使用Xcode模拟器,但如今开始可使用了。
从Xcode 9 beta 3开始,这个功能将会是系统预设的,因此你无需作任何事情来启用它。app
更新:可能某些人预设状况下是关闭此功能的,不用担忧,能够随时经过 Apple Internal 选单启用此功能。若是想在新的模拟器中探索更多的秘密功能,能够启用Apple 隐藏的内部选项。less
因此,你须要在根目录中建立一个名为“AppleInternal”的空文件夹,请执行下面的命令并从新启动模拟器:ide
sudo mkdir /AppleInternal复制代码
新的选项中项目应该会显示出来 ✌️工具
注意:我是从Xcode 9 beta 3 的模拟器上测试这个步骤,若是你尚未下载,请在此安装最新的Xcode。开发工具
还记得在不一样的模拟器上测试应用程序的挫败感吗?在此以前,你一次只能打开一个模拟器,虽然有许多“hacks”教你如何在旧版本的Xcode中打开多个iOS模拟器。可是在Xcode 9当中,这个功能是直接可使用的。测试
在Xcode 9以前,咱们只有透过”Scale options”才能调整模拟器的大小,如今Apple终于开放调整模拟器窗口的大小。若是一次有多个模拟器打开,这个小细节的调整这是很是有用,能够帮助你有效地组织工做空间。url
在Xcode 9官方的”What’s new”文档中,苹果声称如今能够录制模拟器屏幕视频,即便在旧版本中,只要使用simctl也能够作到,在界面上找不到地方能够启用视频录制(除了iOS 11中的内置屏幕录制)。
要获取视频档案,请执行如下代码:spa
xcrun simctl io booted recordVideo --type=mp4 <PATH TO VIDEO FILE>复制代码
booted – 表示simctl
选择当前启动的模拟器,若是你有多个已启动的模拟器,simctl
将选择当前正在操做的那一个模拟器。
如今,模拟器有了 Finder 扩展功能,你能够直接从 Finder 窗口共享文件。
你也能够执行如下simctl
命令,使用图像/视频文件进行相似操做:
xcrun simctl addmedia booted <PATH TO MEDIA FILE>复制代码
很高兴有这样的操做方法,可是对我而言,将文件拖放至模拟器窗口彷佛快不少。
这个也能使用simctl
,因此你也能够在旧版本的模拟器上打开自定义的URL schemes。
拖拽
以你指定的任何URL执行如下命令:
xcrun simctl openurl booted <URL>复制代码
关于Apple全部URL schemes
的列表,请查看文档.
再来介绍一个simctl
的命令,你可使用单个命令在文件系统上获取应用程序的资料夹,只须要知道应用程序的bundle identifier
并执行如下命令:
xcrun simctl get_app_container booted <APPS BUNDLE ID>复制代码
或者你可使用open命令在 Finder 中更快打开目标文件夹:
open `xcrun simctl get_app_container booted <APPS BUNDLE ID>` -a Finder复制代码
使用simctl
,你也能够从终端机上启动应用程序,并在其中传递一些命令列参数(甚至能够设置一些环境变量)。若是你想在应用程序中插入一些除错行为,这将很是有用。
执行下列命令可让你完成这项任务:
xcrun simctl launch --console booted <BUNDLE ID> <YOUR ARGUMENTS>复制代码
你能够从CommandLine.arguments获取这些命令行参数(这里是文件的连接)。
有时找出应用程序的档案或暂存数据位于文件系统上的位置颇有用,若是你须要比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 视频因为被墙,没作搬运,若有须要可自行去原文查看。