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

相关推荐
得物技术7 小时前
得物 iOS 启动优化之 Building Closure
ios·性能优化
goto_w15 小时前
uniapp上使用webview与浏览器交互,支持三端(android、iOS、harmonyos next)
android·vue.js·ios·uni-app·harmonyos
Swift社区1 天前
Swift LeetCode 246 题解:中心对称数(Strobogrammatic Number)
开发语言·leetcode·swift
iOS阿玮1 天前
苹果 iOS 19 曝光,你的iPhone 还能再战一年?
app·apple
鸿蒙布道师1 天前
鸿蒙NEXT开发对象工具类(TS)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
刘小哈哈哈1 天前
封装了一个iOS多分区自适应宽度layout
macos·ios·cocoa
Lexiaoyao201 天前
SwiftUI 字体系统详解
swiftui·swift
YungFan1 天前
Swift 6.1 新特性
swift
布多2 天前
Tagged Pointer:苹果工程师的内存优化艺术
ios·源码
Rudon滨海渔村2 天前
新旧iPhone相册复制 - 相册图片视频对拷 - 换机 - 迁移设备数据 - 免费开源爱思助手
ios·iphone