Как удалить приложение из iOS 8 Simulator из командной строки?

У меня есть автоматизация, работающая в iOS Simulator, которую я должен удалить перед другим запуском. Как удалить приложение из iOS Simulator из командной строки?

Для каждого каталога устройства симулятора (расположенного в ~/Library/Developer/CoreSimulator/Devices/*) я попытался удалить ./data/Containers/Bundle/Application/ и ./data/Containers/Data/Application/.

Даже когда я попытался удалить приложение, долгое нажатие на приложение в Simulator (приложение становится jiggly) и нажмите кнопку X, пользовательские значения по умолчанию не были очищены. Я хочу, чтобы состояние приложения было на 100% чистым.

Я нашел хорошее решение для решения этой проблемы.

Ответы

Ответ 1

Один из методов, который мы нашли для удаления пользовательских настроек по умолчанию, - это удалить все файлы в ./data/Library/Preferences/* в дополнение к удалению каталогов приложений и данных.

Однако в Xcode 6 команда xcrun имеет новую подкоманду под названием simctl которая позволяет мне управлять iOS Simulator, включая сброс симулятора и установку приложения.

Решением, которое я придумал, является использование команды

xcrun simctl erase [device ID]

пример

Если xcrun simctl list () возвращается

9DDA0CFE-7CEC-40B6-A343-1EC01F282B22 (active, disconnected)
    Watch: Apple Watch Series 2 - 42mm (88474523-163E-4021-B591-2AECBFA26997) (Shutdown)
    Phone: iPhone 7 Plus (5785E680-15CD-42D3-82AB-597286A270C5) (Shutdown)

затем запустите эти 2 команды

xcrun simctl erase 88474523-163E-4021-B591-2AECBFA26997
xcrun simctl erase 5785E680-15CD-42D3-82AB-597286A270C5

() Идентификатор устройства можно получить из

xcrun simctl list

Это приведет к сбросу симулятора (что эквивалентно элементу iOS Simulator > Reset Contents and Settings...).

С Xcode 6.0.1 (Build 6A317) есть либо ошибка, либо изменение в поведении, когда при удалении приложения пользовательские значения по умолчанию не удаляются.

Usage: simctl [--noxpc] [--set <set path>] <subcommand> ... | help [subcommand]
Command line utility to control the iOS Simulator

For subcommands that require a <device> argument, you may specify a device UDID
or the special "booted" string which will cause simctl to pick a booted device.
If multiple devices are booted when the "booted" device is selected, simctl
will choose one of them.

Subcommands:
    create        Create a new device.
    delete        Delete a device.
    erase         Erase a device contents and settings.
    boot          Boot a device.
    shutdown      Shutdown a device.
    rename        Rename a device.
    getenv        Print an environment variable from a running device.
    openurl       Open a URL in a device.
    addphoto      Add a photo to the photo library of a device.
    install       Install an app on a device.
    uninstall     Uninstall an app from a device.
    launch        Launch an application by identifier on a device.
    spawn         Spawn a process on a device.
    list          List available devices, device types, or runtimes.
    notify_post   Post a darwin notification on a device.
    icloud_sync   Trigger iCloud sync on a device.
    help          Prints the usage for a given subcommand.

Ответ 2

С помощью Xcode 6.1 для удаления приложения используйте следующую команду:

xcrun simctl uninstall booted com.example.apple-samplecode.UICatalog

где com.example.apple-samplecode.UICatalog - это идентификатор пакета приложения, которое вы хотите удалить.

Ответ 3

Сбросить все содержимое и настройки в одной команде

  1. Выйти из iPhone Simulator
  2. В терминале запустите:

    xcrun simctl erase all
    

Это приведет к сбросу содержимого и настроек всех симуляторов для активной версии Xcode (той, на которую ссылается xcode-select -p).

Ответ 4

xcrun simctl uninstall simulatorIdentifier appBundleId