simctl command-line tool
t.me/qa_chillout![](/file/4aa0d1994a17f2182f794.png)
Intro
simctl – инструмент командной строки для взаимодействия с симулятором iOS. Она очень похоже на adb для Android. Увы, simctl плохо задокументирована Apple, поэтому в этой статье разберемся со всеми нюансами работы с ней.
Справка по командам
Сам двоичный файл утилиты доступен нам по следующему пути: /Applications/Xcode.app/Contents/Developer/usr/bin/simctl. Просмотр справки по командам доступен, если выполнить команду:
$ xcrun simctl
![](/file/8fefe7ce838707255eb97.png)
Например, мы хотим узнать подробнее про команду list
, которая выводит список всех установленных устройств. Для этого необходимо использовать команду help
с нашей искомой командой:
$ xcrun simctl help list
![](/file/ea42dd55f9b9a1d69119b.png)
Или мы хотим узнать подробнее про команду сlone
, которая позволяет клонировать существующее устройств:
$ xcrun simctl help clone
![](/file/dd4fad3da8c0f7b0f1192.png)
Список доступных устройств
Уже знакомая команда list
отобразит нам список доступных симуляторов.
$ xcrun simctl list
![](/file/0a525109c52b2493bcea9.png)
Данный список довольно большой и разделен на следующие категории:
== Device Types ==
== Runtimes ==
== Devices ==
== Device Pairs ==
Согласитесь, не очень удобно. Давайте попробуем вывести только сами устройства:
$ xcrun simctl list devices
![](/file/c56409526cff5ac5decde.png)
Разберем подробнее строку, например вот эту:
iPhone 12 Pro Max (CF4C4E14-F06D-4BB1-A515-B4CB43AA25B3) (Shutdown)
где:
Phone 12 Pro Max
– наш симулятор,
CF4CE14-F06D-4BB1-A515-B4CB43AA25B3
– UDID устройства,iOS 14.5
– версия OS.
Также, например если нам удобно получить данные в формате JSON, можно с помощью параметра -j
или --json
вывести информацию по устройствам:
![](/file/402955f28e19d33c24fdc.png)
CRUD команды
Создание нового симулятора
Перейдем к созданию нового симулятора. Для этого есть команда create
, после которой указываются имя устройства, его тип и версия OS (эти данные есть в выводе команды list
).
$ xcrun simctl create iPhone-12-Pro-Max com.apple.CoreSimulator.SimDeviceType.iPhone-12-Pro-Max com.apple.CoreSimulator.SimRuntime.iOS-14-5
После выполнения команды отобразится UDID созданного симулятора.
![](/file/cf3105642ef2f9519ad76.png)
Запуск устройства
Запустить устройство можно командой boot
:
$ xcrun simctl boot 3D934826-1072-4F22-9CBD-77F2807EC0E8
![](/file/8ca25427e859cf2be14c3.png)
Например мы закрыли симулятор, либо нам надо его открыть повторно через какое-то время, то можно выполнить следующую команду:
$ open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/
![](/file/59c16fed1da11e4ebb7eb.png)
Выключение устройства
Выключить симулятор можно командой shutdown
, например, когда завершите с ним работу:
$ xcrun simctl shutdown booted
![](/file/06e39c94c0ce92a39c76f.png)
Чтобы выключить все симуляторы, следует использовать команду shutdown all
:
$ xcrun simctl shutdown all
Обновление OS
Представим, нам необходимо например повысить версию OS с 14.5 до 14.7.1. Командой upgrade
это можно сделать, чтобы не пересоздавать устройство:
$ xcrun simctl upgrade 3D934826-1072-4F22-9CBD-77F2807EC0E8 com.apple.CoreSimulator.SimRuntime.iOS-14-7-1
Удаление устройств
Чтобы удалить неиспользуемые устройства, можно выполнить команду delete unavailable:
$ xcrun simctl delete unavailable
А чтобы удалить конкретный симулятор следует выполнить следующую команду:
$ xcrun simctl delete booted
Бывают и такие ситуации, когда следует удалить все устройства, в таком случае используется команда delete all:
$ xcrun simctl delete all
Дополнительные команды
Клонирование симулятора
Для создания копии созданного симулятора необходимо использовать команду clone
:
$ xcrun simctl clone booted NewiPhone-12-Pro-Max
Восстановление симулятора к «заводским» настройкам
Чтобы сбросить симулятор к «заводским» настройкам используется команда erase
:
$ xcrun simctl erase booted
⚠️Сначала выключите симулятор, а затем выполняйте команду, в противном случае возникнет ошибка.
А если необходимо сбросить несколько симуляторов? Допишите all
:
$ xcrun simctl erase all
Изменение имени устройства
Имя симулятора можно изменить с помощью команды rename
:
$ xcrun simctl rename booted NewiPhoneName
Работа с приложением
Установка приложения
Для установки приложения на симулятор есть несколько способов:
1) собрать проект и запустить на симуляторе:
![](/file/40851caf68a035edb3666.png)
2) установить файл .app, перетащив его на симулятор:
![](/file/beafe864873d426b9142d.png)
3) А также можно командой install
, если знаете путь к файлу .app:
$ xcrun simctl install booted ~/Youla.app
![](/file/900979febf9971229f761.png)
Запуск приложения
Запустить приложение можно с помощью команды launch
, передав bundle ID приложения:
⚠️узнать подробнее о получении bundle ID можно в статье: Bundle ID
$ xcrun simctl launch booted com.allgoritm.Youla
![](/file/5483db3a8039d87369eb6.png)
Информация о приложении
Команда appinfo
выводит информацию о приложении, например:
$ xcrun simctl appinfo booted com.allgoritm.Youla
![](/file/d9de147444bf1660df800.png)
Закрыть приложение
Команда terminate
закрывает приложение:
$ xcrun simctl launch terminate com.allgoritm.Youla
Удаление приложения
А с помощью команды uninstall
можно удалить приложение:
$ xcrun simctl uninstall booted com.allgoritm.Youla
![](/file/ff5575353c3659f3d1e83.png)
Полезности при тестировании
Скриншот экрана
Довольно часто приходится делать скриншоты. Есть два способа:
1) сделать скриншот всего симулятора (сочетание клавиш ⌘⇧4, далее навести курсор на симулятор и нажать пробел):
![](/file/61a64dc9e0b3b209b2f36.png)
2) А если необходимо сделать скриншот только экрана? Для этого есть команда io
, она идет вместе со screenshot
. Вы сможете сохранить скриншот в форматах: .png
,.jpeg
,.gif
:
$ xcrun simctl io booted screenshot ~/Desktop/image.png
![](/file/a221740b9838a87262c86.png)
![](/file/398ccba10e8a67def49fe.png)
Запись экрана
Запись видео экрана доступно с помощью команды recordVideo
. Вы сможете сохранить видео в форматах: .mov
,.mp4
:
$ xcrun simctl io booted recordVideo ~/Desktop/video.mp4
![](/file/e7fedc39f925fb6b329f1.png)
⚠️ Чтобы завершить запись необходимо нажать control+C в терминале.
Отображение нажатий на экране
Отображение тапов на симуляторе можно включить с помощью команд:
defaults write com.apple.iphonesimulator ShowSingleTouches 0 defaults write com.apple.iphonesimulator ShowSingleTouches 1
Переход по URL
openurl
– команда, которая служит для перехода по конкретному URL
на симуляторе:
$ xcrun simctl openurl booted "https://www.youla.io/"
![](/file/1068e7eed3544852b08fb.png)
Также можно открывать и схемы вида app://
:
$ xcrun simctl openurl booted youla://chat
![](/file/9f60b3647cf48aacd1a2a.png)
Отправка push на симулятор
Сначала подготовим следующий файлик, который будет содержать заголовок и текст push-уведомления. Важно: структура файла – JSON, а его расширение – .apns
(Apple Push Notification service):
{ "aps": { "alert": { "title": "Test", "body": "My first message" } } }
![](/file/691b65d6e80f14ec32982.png)
Не забудьте установить приложение, затем разрешите отправку push-уведомлений. После этого нужно выполнить команду push
, указав устройство, bundle ID, а также путь до файла .apns
:
$ xcrun simctl push booted com.allgoritm.Youla ~/Desktop/test.apns
![](/file/0fb122d6e62ac1043f961.png)
![](/file/a5178c2e32460a5e58e1b.png)
Установка dark/light темы
Команда ui appearance
поможет изменить тему симулятора:
$ xcrun simctl ui booted appearance dark $ xcrun simctl ui booted appearance light
![](/file/6258c7ab33903cb6912f7.png)
⚠️ Сменить тему можно только на симуляторах с iOS 13.0 и выше.
Добавить фото/видео на симулятор
Добавить фото/видео/гиф на симулятор можно двумя способами:
1) просто перетащить из Finder на сам симулятор,
2) командой addmedia
:
$ xcrun simctl addmedia booted ~/Desktop/one.png $ xcrun simctl addmedia booted ~/Desktop/video.mp4 $ xcrun simctl addmedia booted ~/Desktop/some.gif
Пермишены
Для работы с пермишенами существует команда privacy
:
$ xcrun simctl privacy <device> <action> <service> <bundle ID>
где:device
– наш симулятор,
action
– действие:
- grant – предоставляет пермишен
- revoke – отбирает пермишен
- reset – сбрасывает пермишен
service
– службы:
- photos – доступ к галереи
- microphone — доступ к микрофону
- location — доступ к гео
- siri — доступ к Siri
Например:
$ xcrun simctl privacy booted grant photos com.allgoritm.Youla $ xcrun simctl privacy booted reset photos com.allgoritm.Youla
![](/file/3b784fd44c51450f348b1.png)
![](/file/e8fcb8a39d30f9866951f.png)
Резюме
Пользуйтесь командами, экономьте время и шарьте знания =)
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».