强大的命令行如何操控 iOS 模拟器?定制你想要的模拟器

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

作为 iOS 开发,开发过程中一定对模拟器不陌生,使用 iOS 模拟器能够提高您的工作效率。

之前也讲过一些关于模拟器的功能,可以去看看。

在 iOS 模拟器上访问 App 文件

Xcode 14 模拟器支持远程推送

如何在模拟器上调试 URL Scheme

判断当前设备是模拟器还是真机

iOS:分享一些模拟器使用技巧

模拟器有很多便利的功能,比如截屏、录屏、显示离屏渲染等等,但很多开发者不知道,使用终端命令也能操作模拟器,用好命令行也是加快开发速度的好方法,今天就来讲讲如何使用命令行操作模拟器。

xcrun Simctl 命令

Xcode CLI 附带的 xcrun 命令具有一组命令行工具。其中之一是 Simctl,我们可以使用它与 Xcode 模拟器进行交互。

SimctlSimulator Control 的简称,可以用它对模拟器进行一些高级功能的操作,有点类似于安卓的 ADB 工具。

Simctl 工具与 Xcode 捆绑在一起,位于 Xcode 的包下。可以在以下路径中找到它:

bash 复制代码
/Applications/Xcode.app/Contents/Developer/usr/bin/simctl

simctl 的使用

首先我们先用以下命令看看 simctl 都支持哪些参数和功能,在命令行输入:

可以看到它已经把这个命令相关的信息都打印出来了:

简单来说,使用这个命令的规范是:

xml 复制代码
simctl [--set <path>] [--profiles <path>] <subcommand> ...

在上边打印的功能列表中可以看到很多子功能,比如 boot、create、delete 等等,如果你不知道某个子功能如何使用,可以通过下边的命令查看使用方法,比如我想知道 status_bar 这个命令是干什么的,则可以输入:

bash 复制代码
xcrun simctl help status_bar

从打印的信息来看,这个命令是操作模拟器的状态栏的:

具体使用示例

接下来讲一些使用示例。

1、查看模拟器列表

如果你想看一下目前你的设备上装了哪些模拟器,可以通过这个命令查看:

这样它就把你所有模拟器打印出来了:

因为我平时用模拟器比较多,所以电脑上安装了相当多的模拟器,只截了一部分出来,打印出的数据中,每一行是一个模拟器信息,包含了模拟器名称、UUID 和启动信息,Shutdown 代表没有启动,Booted 代表已启动。

还可以通过下边的命令只打印已启动的模拟器列表:

perl 复制代码
xcrun simctl list | grep Booted

2、创建模拟器

其实 Xcode 支持在图形页面上直接创建模拟器,当然也可以通过命令行来创建,比如我要创建一个 iOS 17.4 的 iPhone 14 模拟器:

lua 复制代码
xcrun simctl create my-custom-simulator  com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-17-4

xcrun simctl create 是创建命令,随后的第一个参数是自定义名称,第二个参数是 iPhone 的型号,第三个参数是系统版本。

创建成功后,控制台会输出一个 UUID,之后你就可以通过这个 UUID 来操作这个模拟器了。

3、 启动模拟器

刚刚创建了一个新的模拟器,我们来启动它:

复制代码
xcrun simctl boot 2B68ADF4-CD0C-4D4E-B043-6C84A8CB890F

同样,xcrun simctl boot 是启动模拟器的命令,随后的参数是你创建模拟器时生成的 UUID,或者使用它的名字也是可以的

4、 修改状态栏

前面说了 status_bar 命令可以操作状态栏,我们就用这个命令来修改一下状态栏样式。

把网络信号修改为 5g+

arduino 复制代码
xcrun simctl status_bar 2B68ADF4-CD0C-4D4E-B043-6C84A8CB890F override --dataNetwork 5g+

把电量改为 50%

arduino 复制代码
xcrun simctl status_bar 2B68ADF4-CD0C-4D4E-B043-6C84A8CB890F override --batteryLevel '50'

把时间改为 9 点 41 分

arduino 复制代码
xcrun simctl status_bar 2B68ADF4-CD0C-4D4E-B043-6C84A8CB890F override --time '09:41'

5、将模拟器关机

使用这个命令关闭某个模拟器:

arduino 复制代码
xcrun simctl shutdown 2B68ADF4-CD0C-4D4E-B043-6C84A8CB890F

6、删除某个模拟器

当你不再需要这个模拟器时,可以使用如下命令删除它:

arduino 复制代码
xcrun simctl delete 2B68ADF4-CD0C-4D4E-B043-6C84A8CB890F

总结

大家应该已经见识到命令行控制模拟器的强大之处了,其实今天展示的部分只是其冰山一角,还有很多很多功能,不能一一展示了,大家自己去探索吧。

其实著名的 Mac 应用 RocketSim 就是基于这套命令行实现的,之前也有介绍过这个应用,可以点击这个链接查看。

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
WDeLiang11 小时前
Flutter 环境搭建
flutter·ios·visual studio code
lilili啊啊啊19 小时前
iOS 应用性能测试工具对比:Xcode Instruments、克魔助手与性能狗
测试工具·ios·iphone·xcode·克魔
264玫瑰资源库1 天前
嘻游电玩三端客户端部署实战:PC + Android + iOS 环境全覆盖教程
android·ios
鸿蒙布道师1 天前
鸿蒙NEXT开发权限工具类(申请授权相关)(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师1 天前
鸿蒙NEXT开发定位工具类 (WGS-84坐标系)(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
ghhgy5312 天前
已安装爱思助手和Apple相关驱动,但仍无法有线连接iPhone热点,且网络适配器没有Apple Mobile Device Ethernet,问题解决
ios·iphone
陈皮话梅糖@2 天前
iOS error: some files could not be transferred (code 23) at xxx
ios
林晨月2 天前
SwiftUI Color(一)
ios·swiftui
Andy3222 天前
030 期 3个神器让你的Mac更聪明!
ios·github·mac
iOS阿玮2 天前
“社交类的天塌了!”不是夸夸其谈而是确有其事!
ios·app·apple