simctl command-line tool

simctl command-line tool

t.me/qa_chillout

Intro

simctl – инструмент командной строки для взаимодействия с симулятором iOS. Она очень похоже на adb для Android. Увы, simctl плохо задокументирована Apple, поэтому в этой статье разберемся со всеми нюансами работы с ней.


Справка по командам

Сам двоичный файл утилиты доступен нам по следующему пути: /Applications/Xcode.app/Contents/Developer/usr/bin/simctl. Просмотр справки по командам доступен, если выполнить команду:

$ xcrun simctl

Например, мы хотим узнать подробнее про команду list , которая выводит  список всех установленных устройств. Для этого необходимо использовать команду help с нашей искомой командой:

$ xcrun simctl help list

Или мы хотим узнать подробнее про команду сlone , которая позволяет клонировать существующее устройств:

$ xcrun simctl help clone

Список доступных устройств

Уже знакомая команда list отобразит нам список доступных симуляторов.

$ xcrun simctl list

Данный список довольно большой и разделен на следующие категории:

== Device Types ==

== Runtimes ==

== Devices ==

== Device Pairs ==

Согласитесь, не очень удобно. Давайте попробуем вывести только сами устройства:

$ xcrun simctl list devices

Разберем подробнее строку, например вот эту:

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 вывести информацию по устройствам:

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 созданного симулятора.

Запуск устройства

Запустить устройство можно командой boot:

$ xcrun simctl boot 3D934826-1072-4F22-9CBD-77F2807EC0E8

Например мы закрыли симулятор, либо нам надо его открыть повторно через какое-то время, то можно выполнить следующую команду:

$ open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/

Выключение устройства

Выключить симулятор можно командой shutdown, например, когда завершите с ним работу:

$ xcrun simctl shutdown booted

Чтобы выключить все симуляторы, следует использовать команду 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) собрать проект и запустить на симуляторе:

2) установить файл .app, перетащив его на симулятор:

3) А также можно командой install, если знаете путь к файлу .app:

$ xcrun simctl install booted ~/Youla.app

Запуск приложения

Запустить приложение можно с помощью команды launch, передав bundle ID приложения:
⚠️узнать подробнее о получении bundle ID можно в статье: Bundle ID

$ xcrun simctl launch booted com.allgoritm.Youla

Информация о приложении

Команда appinfo выводит информацию о приложении, например:

$ xcrun simctl appinfo booted com.allgoritm.Youla

Закрыть приложение

Команда terminate закрывает приложение:

$ xcrun simctl launch terminate com.allgoritm.Youla

Удаление приложения

А с помощью команды uninstall можно удалить приложение:

$ xcrun simctl uninstall booted com.allgoritm.Youla


Полезности при тестировании

Скриншот экрана

Довольно часто приходится делать скриншоты. Есть два способа:

1) сделать скриншот всего симулятора (сочетание клавиш ⌘⇧4, далее навести курсор на симулятор и нажать пробел):

2) А если необходимо сделать скриншот только экрана? Для этого есть команда io, она идет вместе со screenshot. Вы сможете сохранить скриншот в форматах: .png,.jpeg,.gif:

$ xcrun simctl io booted screenshot ~/Desktop/image.png

Запись экрана

Запись видео экрана доступно с помощью команды recordVideo. Вы сможете сохранить видео в форматах: .mov,.mp4:

$ xcrun simctl io booted recordVideo ~/Desktop/video.mp4

⚠️ Чтобы завершить запись необходимо нажать 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/"

Также можно открывать и схемы вида app://:

$ xcrun simctl openurl booted youla://chat

Отправка push на симулятор

Сначала подготовим следующий файлик, который будет содержать заголовок и текст push-уведомления. Важно: структура файла – JSON, а его расширение – .apns (Apple Push Notification service):

{
    "aps": {
        "alert": {
            "title": "Test",
            "body": "My first message"
        }
    }
}

Не забудьте установить приложение, затем разрешите отправку push-уведомлений. После этого нужно выполнить команду push, указав устройство, bundle ID, а также путь до файла .apns:

$ xcrun simctl push booted com.allgoritm.Youla ~/Desktop/test.apns

Установка dark/light темы

Команда ui appearance поможет изменить тему симулятора:

$ xcrun simctl ui booted appearance dark
$ xcrun simctl ui booted appearance light

⚠️ Сменить тему можно только на симуляторах с 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
grant photos
reset photos


Резюме

Пользуйтесь командами, экономьте время и шарьте знания =)


Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».

Report Page