Com apple coresimulator simruntime

Содержание
  1. simctl: управление симуляторами Apple через терминал
  2. Работа с объектами устройств
  3. Просмотр списка доступных команд и информации по ним
  4. Просмотр списка доступных устройств, сред выполнения, устройств и пар устройств
  5. Создание нового устройства
  6. Запуск устройства
  7. Апгрейд устройства
  8. Клонирование устройства
  9. Очистка данных и настроек устройства
  10. Переименование устройства
  11. Вывод переменных среды устройства
  12. Проверка состояния загрузки устройства
  13. Выключение устройства
  14. Удаление устройств
  15. Работа с контентом устройств
  16. Снятие скриншота и видео с устройства
  17. Добавление медиа на устройство
  18. Открытие URL на устройстве
  19. Управление сертификатами устройства
  20. Установка приложения на устройство
  21. Запуск приложения на устройстве
  22. Предоставление, отзыв и сброс разрешений приложения
  23. Отображение информации о приложении
  24. Отображение пути к контейнерам установленного приложения
  25. Закрытие приложения на устройстве
  26. Удаление приложения с устройства
  27. Симуляция отправки пуш-уведомления
  28. Изменение и очистка статус-бара устройства
  29. Установка темной или светлой темы
  30. Работа с логами и внутренними механизмами устройств
  31. Выполнение указанной операции на устройстве
  32. Включение и отключение подробного логирования на устройстве
  33. Отображение логов с устройства
  34. Сбор диагностической информации и логов
  35. Заключение
  36. Включение и отключение полноэкранного режима окна симулятора
  37. Включение и отключение отображения нажатий на устройстве
  38. Xcode 12 Beta Simulator Runtime not available
  39. Answers

simctl: управление симуляторами Apple через терминал

Всем привет! Меня зовут Паша Лесюк, я работаю мобильным тестировщиком в компании Циан. В этой статье я расскажу о возможностях управления яблочными симуляторами из командной строки.

simctl — утилита командной строки для взаимодействия с симуляторами. Она очень похожа на ADB для Android, устанавливается вместе со средой разработки Xcode и используется вместе с xcrun (Xcode-раннер командной строки). Двоичный файл программы можно найти по пути:

Работа с объектами устройств

Просмотр списка доступных команд и информации по ним

Команда simctl без подкоманд выводит в консоль список всех доступных подкоманд (далее будет использоваться термин «команда»).

Для просмотра подробной информации по команде нужно использовать команду help с названием искомой команды.

Просмотр списка доступных устройств, сред выполнения, устройств и пар устройств

Команда list выводит список всех установленных устройств и окружений. Рядом с каждым устройством будет отображен UDID (уникальный идентификатор устройства), который можно прокидывать в некоторые подкоманды simctl.

Список можно фильтровать по заголовкам: devices , devicetypes , runtimes , pairs .

Вместе с фильтром по заголовку можно использовать поисковый запрос или параметр available , который выведет список всех доступных пунктов.

Примером поискового запроса может служить выборка по устройствам c экраном 12.9 дюймов.

Можно вывести более подробную информацию списка c помощью параметра -v .

Можно вывести информацию в формате JSON с помощью параметра -j или —json .

Создание нового устройства

Для создания нового симулятора используется команда create , после которой указываются имя устройства, его тип и среда (эти данные есть в выводе команды list ). После выполнения команды отобразится UDID созданного симулятора.

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

Команда boot запускает устройство с указанным UDID , делая его доступным для взаимодействия.

️После запуска устройства можно передавать команду booted вместо UDID . Если запущено несколько устройств, то simctl выберет одно из них.

Чтобы увидеть симулятор в действии нужно запустить приложение «Simulator».

Апгрейд устройства

Команда upgrade позволяет повысить версию среды устройства до необходимой.

Клонирование устройства

Команда clone позволяет клонировать существующее устройство, копируя его тип и среду.

Очистка данных и настроек устройства

Для сброса симулятора к настройкам по умолчанию используется команда erase . Перед очисткой симулятора его нужно выключить, иначе возникнет ошибка.

Если нужно сбросить данные всех симуляторов, то нужно использовать команду erase all .

Переименование устройства

Изменить имя устройства можно с помощью команды rename .

Вывод переменных среды устройства

Команда getenv позволяет выводить значения переменных среды устройства. Например, встроенная переменная симулятора SIMULATOR_SHARED_RESOURCES_DIRECTORY указывает на путь, где хранятся данные симулятора.

Читайте также:  Как проверить включен ли найти iphone по imei

Проверка состояния загрузки устройства

Команда bootstatus позволяет убедиться в том, что устройство загружено и готово к работе. Имеет три необязательных ключа:

  • -b — загружает указанный симулятор, если он не загружен.
  • -d — отображает информацию о миграции данных.
  • -c — постоянно отслеживает состояние загрузки и выключения.

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

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

Для выключения всех симуляторов используется команда shutdown all .

Удаление устройств

В ходе работы с симуляторами может накапливаться большое количество старых устройств, многие из которых могут быть недоступны для последних версий iOS. Для их удаления используется команда delete unavailable .

Для удаления конкретного симулятора используется команда delete .

Для удаления всех устройств используется команда delete all .

Работа с контентом устройств

Снятие скриншота и видео с устройства

Для снятия скриншота только экрана используется команда io в связке со screenshot . Можно сохранять изображения в формате .png , .tiff , .bmp , .gif и .jpeg .

Аналогично, можно просто использовать шорткат ⌘S в открытом приложении «Simulator», скриншот окна сохранится на рабочем столе.

Также можно использовать команду io в связке с recordVideo для записи видео взаимодействия с экраном симулятора. Можно сохранять видео в формате .mov , .h264 , .mp4 и .fmp4 .

Для завершения записи нужно нажать ⌃C в окне терминала.

Добавление медиа на устройство

Команда addmedia используется для добавления фото или видео на симулятор.

Также можно просто перетащить файл из Finder в окно симулятора.

Открытие URL на устройстве

Команда openurl открывает указанный URL на симуляторе.

Также может использоваться кастомная схема, ассоциированная с нативным приложением.

Управление сертификатами устройства

Команда keychain позволяет добавлять сертификаты в доверенное корневое хранилище или keychain, а также сбрасывать keychain.

Установка приложения на устройство

Можно легко установить приложение на симулятор если известен путь к файлу .app . Для этого используется команда install .

Также можно просто перетащить приложение из Finder в окно симулятора.

Перечень opensource-приложений для iOS можно найти тут.

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

Запуск приложения осуществляется с помощью команды launch и указанием bundle ID.

Предоставление, отзыв и сброс разрешений приложения

Команда privacy может предоставлять, отзывать и сбрасывать разрешения приложения.

Значения action (действия) могут быть следующие:

  • grant — предоставляет доступ к сервису. Неободим bundle ID.
  • revoke — запрещает доступ к сервису. Необходим bundle ID.
  • reset — сбрасывает доступ к сервису. bundle ID опционален.

Значения service (службы) могут быть следующие:

  • all — применяет действие ко всем службам.
  • calendar — предоставляеть доступ к календарю.
  • contacts-limited — предоставляет доступ к основной контактной информации.
  • contacts — предоставляет полный доступ к контактной информации.
  • location — предоставляет доступ к службам определения местоположения при использовании приложения.
  • location-always — предоставляет доступ к службам определения местоположения в любое время.
  • photos-add — предоставляет доступ на добавление фотографий в библиотеку фотографий.
  • photos — предоставляет полный доступ к библиотеке фотографий.
  • media-library — предоставляет доступ к медиа-библиотеке.
  • microphone — предоставляет доступ к микрофону.
  • motion — предоставляет доступ к фитнес-данным.
  • reminders — предоставляет доступ к напоминаниям.
  • siri — предоставляет возможность использовать приложение вместе с Siri.

Пример использования:

На данный момент не все сервисы доступны для настройки. Отсутствуют уведомления, здоровье, Bluetooth и Face ID.

Отображение информации о приложении

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

Формат отображения информации следующий:

Отображение пути к контейнерам установленного приложения

Можно вывести путь к контейнерам приложения через команду get_app_container с указанием bundle ID. У команды есть несколько опций для указания типа контейнера:

  • app указывает на расположение самого приложения и используется по умолчанию.
  • data указывает на расположение данных приложения.
  • groups указывает на расположение группы приложений. Если групп несколько, то нужно использовать имя искомой группы.
Читайте также:  С айфона не доходят сообщения абоненту

Закрытие приложения на устройстве

Закрытие приложения осуществляется с помощью команды terminate и указанием bundle ID.

Удаление приложения с устройства

Можно удалить приложение с симулятора с помощью команды uninstall , используя bundle ID.

Симуляция отправки пуш-уведомления

Для отправки пуша нужно подготовить файл, который должен содержать структуру в формате JSON и сохранить его с расширением .apns (Apple Push Notification service):

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

Если добавить в файл параметр «Simulator Target Bundle» , то необходимость указывать каждый раз bundle ID отпадает.

Также, если указан параметр «Simulator Target Bundle» , то файл можно просто перетащить в окно симулятора.

Изменение и очистка статус-бара устройства

У команды status_bar есть три подкоманды:

  • override принимает параметры для элементов статус-бара и меняет их в зависимости от значений.

  • list выводит значения перезаписанных параметров.
  • clear очищает перезаписанный статуc-бар.

Установка темной или светлой темы

Данная опция доступна для симуляторов с iOS от 13.0 и выше. C помощью команды ui appearance можно поменять тему устройства на темную или светлую.

Работа с логами и внутренними механизмами устройств

Выполнение указанной операции на устройстве

Команда spawn создает указанный процесс на симуляторе.

Здесь используется интерфейс defaults , в котором флагу ResetDatabase устанавливается значение YES . Это удобный способ менять пользовательские настройки до запуска приложения.

Включение и отключение подробного логирования на устройстве

Команда logverbose позволяет включать и отключать подробное логирование на устройстве. Для того, чтобы изменения вступили в силу, нужно перезапустить симулятор.

Отображение логов с устройства

В iOS существует пять уровней логов:

  1. Default. Используется для сбора информации о вещах, которые могут привести к сбою.
  2. Info. Полезная, но необязательная информация для устранения ошибок.
  3. Debug. Информация, которая может быть полезна во время разработки или устранения конкретной проблемы. Отслеживание debug-логов предназначено для использования на стадии разработки, а не на стадии эксплуатации программы конечными пользователями.
  4. Error. Используется для сбора информации об ошибках процесса.
  5. Fault. Используется для сбора информации об ошибках системного уровня или мульти-процессов.

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

По умолчанию вывод логов будет включать в себя уровни default, error и fault. Для использования уровней info и debug нужно использовать аргумент —level . —level=info будет отображать уровни по умолчанию, а так же info. —level=debug будет отображать уровни по умолчанию, а так же info и debug.

Также можно фильтровать логи. Например, по конкретному приложению или по типу ивентов и сообщений.

Чтобы выключить вывод логов нужно нажать ⌃C в окне терминала.

C помощью операции log collect можно сделать дамп журнала логов.

Сбор диагностической информации и логов

С помощью команды diagnose можно сгенерировать подробный журнал всего, что происходило в сессии приложения «Simulator».

Журнал будет включать в себя:

  • системные логи,
  • логи симулятора,
  • устройства и окружения,
  • настройки устройств,
  • дополнительную информацию.

В журнале будет содержаться конфиденциальная информация, поэтому с этими данными нужно быть осторожным.

После генерации журнала будет открыта папка с архивом, содержащим всю информацию.

Заключение

В заключение хотелось бы поделиться еще парой полезных команд для работы с симуляторами.

Включение и отключение полноэкранного режима окна симулятора

Позволяет использовать окно симулятора в полноэкранном режиме macOS. Например, можно открыть отдельный рабочий стол с Xcode и симулятором.

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

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

Читайте также:  Swift через apple tv

P. S.
Если вам интересна тема тестирования, то приглашаю вас подписаться на мой блог в Telegram.

Источник

Xcode 12 Beta Simulator Runtime not available

I installed Xcode 12 beta 2 and tried to run our xamarin project through Jenkins on Mac OS Catalina. It fails with the below error. When i build the same project from Mac Visual studio, it succeeded without any error.

I also did ‘xcrun simctl list’ to view the available runtime simulators for Xcode 12 beta.
it shows the below list but fails while building.

iOS 14.0 (14.0 — 18A5319g) —
com.apple.CoreSimulator.SimRuntime.iOS-14-0

tvOS 14.0 (14.0 — 18J5331g) —
com.apple.CoreSimulator.SimRuntime.tvOS-14-0

watchOS 7.0 (7.0 — 18R5327h) —
com.apple.CoreSimulator.SimRuntime.watchOS-7-0

Can anyone help me to resolve this.

Thanks in advance.

Answers

xcodebuild archive through Jenkins got errors:

2. CompileAssetCatalog /Users/build1/tempbaidurepo1598946088/build/Build/Intermediates.noindex/ArchiveIntermediates/BaiduBoxApp/InstallationBuildProductsLocation/Applications/BaiduBoxApp.app /Users/build1/tempbaidurepo1598946088/BaiduBoxApp/Resources/Images.xcassets

Also having this problem.

Running Xcode in terminal shows this:

I did accidentally install Xcode 11, which according to the other poster may have something to do with it. I’ll investigate later.

Waiting for Beta 6 to download so I can install it, that may fix the issue.

macOS Catalina 10.15.6

Xcode 12 (12A7209) — downloaded from the App Store

fastlane 2.160 — for automating all the things around build, testing, deployment etc.

When I run a build from inside Jenkins, it fails with the above error. When I ssh into the machine, fetch from github and run a build via fastlane directly everything runs through. I stumbled across this stackoverflow post where workaround is posted, but looks like a bad hack for me and can only be a temporary solution.

What is the root cause of this problem? Why aren’t the simulator environments available in a Jenkins job environment?

I worked around this issue by starting Jenkins as LaunchAgent instead of a LaunchDeamon, similar to the solution posted in this stackoverflow post. That way it runs as a real user and everything works as expected.

There is one caveat with this solution! The jenkins user has to be logged in. I needed to turn on Automatic login for the jenkins user on my Mac mini. That’s not great, but at least I can use my build server again.

If someone needs more details of my solution, just leave a message here and I will post some more details.

Same problem here when building on Jenkins CI.
The jenkins node is launched through a launchd daemon.

Loading this as root gives us the failure as previous posters (Unable to open liblaunch_sim.dylib):

But instead loading without sudo when running as the user specified by UserName everything passes:

Though my understanding is that the UserName key will run the script as the same user as my second example.
I just don’t have enough understanding of launchd to figure out how to solve the issue.

I have the exact same problem since update to Xcode 12 and can confirm the behavior «anders.u» is describing: starting the Jenkins daemon in user context let Jenkins build my app successfully. But when using sudo (or loading the daemon automatically during startup) the build always fails with «failed to open liblaunch_sim.dylib».

There must be something which is available in user context only. I have no idea what it could be.

I’m looking for a solution or workaround urgently. Loggin in as the local user automatically after boot and start the daemon is a security hole.

Источник

Оцените статью