强大的命令行如何操控 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新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
DisonTangor35 分钟前
苹果发布iOS 18.2首个公测版:Siri接入ChatGPT、iPhone 16拍照按钮有用了
ios·chatgpt·iphone
- 羊羊不超越 -37 分钟前
App渠道来源追踪方案全面分析(iOS/Android/鸿蒙)
android·ios·harmonyos
2401_8658548817 小时前
iOS应用想要下载到手机上只能苹果签名吗?
后端·ios·iphone
HackerTom1 天前
iOS用rime且导入自制输入方案
ios·iphone·rime
良技漫谈1 天前
Rust移动开发:Rust在iOS端集成使用介绍
后端·程序人生·ios·rust·objective-c·swift
2401_852403551 天前
高效管理iPhone存储:苹果手机怎么删除相似照片
ios·智能手机·iphone
星际码仔2 天前
【动画图解】是怎样的方法,能被称作是 Flutter Widget 系统的核心?
android·flutter·ios
emperinter2 天前
WordCloudStudio:AI生成模版为您的文字云创意赋能 !
图像处理·人工智能·macos·ios·信息可视化·iphone
关键帧Keyframe2 天前
音视频面试题集锦第 8 期
ios·音视频开发·客户端
pb82 天前
引入最新fluwx2.5.4的时候报错
flutter·ios