iOS模拟器simctl调试工具
命令行工具 Simulator control
命令的基本组成
xcrun simctl [subcommand] [<device>] [<subcommand option>] [<bundle identifier>] ...
[subcommand] 可以在终端中输入:xcrun simctl --help
可以看到simctl包含的子命令
[<device>] 用来指定模拟器,可以填写模拟器的UDID或者填写booted
自动选择模拟器
[<subcommand option>] 在终端中输入:xcrun simctl [subcommand]
可以看到某个子命令的功能说明、使用方法和用法示例
[<bundle identifier>] 一些子命令需要具体指定到某一个app
subcommand示例
如ui子命令,在终端输入xcrun simctl ui
会输出如下信息:
说明:Get or Set UI options
使用方法:Usage: simctl ui <device> <option> [<arguments>]
用法示例:
appearance
When invoked without arguments prints the current user interface appearance style:
light
The Light appearance style.
dark
The Dark appearance style.
unsupported
The platform or runtime version do not support appearance styles.
unknown
The current style is unknown or there was an error detecting it.
在终端输入xcrun simctl ui booted appearance dark
意为把模拟器切换为深色模式
一些常用的功能说明
privacy 隐私访问权限调试
包含all, calendar ,contacts-limited, contacts 等子命令
以相册访问权限为例
获取相册权限:xcrun simctl privacy booted grant photos <bundle id>
撤销相册权限:xcrun simctl privacy booted revoke photos <bundle id>
重置相册权限,下次调用时弹窗, <bundle id>可不传:xcrun simctl privacy booted reset photos <bundle id>
push推送调试
需要准备一个json文件,要求必须包含aps字段,最大不超过4096字节
{
"Simulator Target Bundle": "bundle id",
"aps": {
"alert": {
"title": "主标题",
"subtitle": "副标题",
"body": "内容"
}
}
}
使用时cd到json文件所在目录下,如json文件中包含Simulator Target Bundle
字段指明了bundle id,则输入命令可不指定bundle id,如未包含Simulator Target Bundle
字段,则需在命令中指定bundle id。
xcrun simctl push booted <json file name>
xcrun simctl push booted <bundle id> <json file name>
另外,如json文件中包含Simulator Target Bundle
字段指明了bundle id,可直接拖拽json文件至模拟器,无需输入命令。
参考WWDC 20-10647