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

相关推荐
dr李四维3 小时前
iOS构建版本以及Hbuilder打iOS的ipa包全流程
前端·笔记·ios·产品运营·产品经理·xcode
️ 邪神3 小时前
【Android、IOS、Flutter、鸿蒙、ReactNative 】自定义View
flutter·ios·鸿蒙·reactnative·anroid
比格丽巴格丽抱14 小时前
flutter项目苹果编译运行打包上线
flutter·ios
网络安全-老纪15 小时前
iOS应用网络安全之HTTPS
web安全·ios·https
今天啥也没干17 小时前
使用 Sparkle 实现 macOS 应用自定义更新弹窗
前端·javascript·swift
1024小神18 小时前
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
android·ios·tauri
lzhdim19 小时前
iPhone 17 Air看点汇总:薄至6mm 刷新苹果轻薄纪录
ios·iphone
安和昂19 小时前
【iOS】知乎日报第四周总结
ios
yngsqq1 天前
037集——JoinEntities连接多段线polyline和圆弧arc(CAD—C#二次开发入门)
开发语言·c#·swift
麦田里的守望者江1 天前
KMP 中的 expect 和 actual 声明
android·ios·kotlin