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

相关推荐
陈皮话梅糖@3 小时前
iOS 集成ffmpeg
ios·ffmpeg
幽夜落雨3 小时前
ios老版本应用安装方法
ios
胖虎111 小时前
实现 iOS 自定义高斯模糊文字效果的 UILabel(文末有Demo)
ios·高斯模糊文字·模糊文字
_可乐无糖2 天前
Appium 检查安装的驱动
android·ui·ios·appium·自动化
胖虎12 天前
iOS 网络请求: Alamofire 结合 ObjectMapper 实现自动解析
ios·alamofire·objectmapper·网络请求自动解析·数据自动解析模型
开发者如是说3 天前
破茧英语路:我的经验与自研软件
ios·创业·推广
假装自己很用心3 天前
iOS 内购接入StoreKit2 及低与iOS 15 版本StoreKit 1 兼容方案实现
ios·swift·storekit·storekit2
iOS阿玮3 天前
“小红书”海外版正式更名“ rednote”,突然爆红的背后带给开发者哪些思考?
ios·app·apple
刘小哈哈哈3 天前
iOS UIScrollView的一个特性
macos·ios·cocoa
忆江南的博客4 天前
iOS 性能优化:实战案例分享
ios