Очистка симулятора iPhone - PullRequest
103 голосов
/ 28 марта 2009

Существует ли простой способ очистки каталога, в котором xcode развертывает приложение при сборке для симулятора iPhone? У меня есть база данных sqlite, которая при необходимости копируется в папку «Документы» при запуске. Проблема в том, что я могу изменить свою схему, но новая база данных не будет скопирована, потому что она уже существует.

В идеале, каждый раз, когда я строю, он уничтожает предыдущее содержимое. Это возможно, или я должен сделать это вручную?

Ответы [ 15 ]

130 голосов
/ 09 августа 2010

Из ресурсов разработчиков Apple:

Чтобы установить пользовательский контент и настройки симулятора в заводское состояние и удалить установленные приложения, выберите Симулятор iPhone> Сбросить настройки и настройки .

Это похоже на:

iOS Reset

85 голосов
/ 28 марта 2009

Симулятор устанавливает приложения в:

"$HOME/Library/Application Support/iPhone Simulator/User/Applications"

Также проверьте:

"$HOME/Library/Developer/CoreSimulator/Devices"

Файлы GUID и каталоги соответствуют установленным приложениям симулятора.

Вручную удалите все эти файлы / каталоги, чтобы удалить все приложения из симулятора.

Я знаю, что есть какой-то способ добавить сценарии в процесс сборки в XCode.

Также выглядит так, как будто XCode изменяет GUID, который он использует при каждой сборке (каталог, в котором находится мое приложение, изменяется между сборками в XCode), поэтому попытка удалить один и тот же каталог все время не будет работать. Если вы работаете только с одним приложением за раз, тогда можно будет очистить весь каталог.

21 голосов
/ 06 августа 2009

Способ, которым я делаю это, - просто нажмите и удерживайте значок моего приложения в симуляторе, а затем, когда оно начнет покачиваться, щелкните черно-белым (x). Появится сообщение с вопросом, действительно ли вы хотите удалить, и вы просто нажимаете да. В следующий раз, когда вы создадите и развернете свое приложение, оно будет использовать новую базу данных sqlite без сучка и вам не придется разбираться в файловой системе.

12 голосов
/ 24 января 2012

После iOS 5 на Mac OS X Lion вы можете попробовать:

  1. Создайте скрипт с именем RemoveSimulatorApps.command, который содержит:
    rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Applications/*"
    
  2. Сохраните этот скрипт в каталоге в вашем PATH.
  3. Сделать файл исполняемым, например:
    chmod +x RemoveSimulatorApps.command

Предположения

  • Возможно, вы захотите вызвать это с помощью кнопок избранного на клавиатуре, например, на клавиатуре Logitech или Microsoft с программируемыми клавишами (следовательно, сохраните ее как файл .command вместо, скажем, .sh)
  • Вы можете уничтожить все в симуляторе iOS (идеально, если вы просто активно работаете над одним приложением)
  • Все замечания других относятся к тому, чтобы быть хорошим обновляемым приложением и т. Д. (Я лично нашел это полезным, тем не менее, потому что у меня есть переключатели режима разработки, которые перезагружают базу данных в определенном состоянии, я пытался сделать некоторую согласованную устойчивость / ошибку обработка)
8 голосов
/ 10 сентября 2009

это может быть излишним, но ..

Вы также можете использовать меню и «Сбросить содержимое и настройки ...»

7 голосов
/ 02 апреля 2009

Что вы действительно пытаетесь сделать, это очистить базу данных, если вы изменили схему. Один из способов сделать это, и это сделает вас счастливее в долгосрочной перспективе, когда вы начнете отправлять версии 2.0, 3.0 и т. Д. Своего приложения, - это проверить версию таблицы sqlite и, если она изменилась, затем отбросить старый файл и используйте тот, который в вашем комплекте.

Поиск способа очистки симулятора не поможет решить реальную проблему очистки iPhone клиента при отправке новой версии с новой схемой.

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

6 голосов
/ 24 июля 2015

для Xcode> = 6

xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -n1 xcrun simctl erase
5 голосов
/ 26 сентября 2014

Это работает с Xcode 6:

xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -I{} xcrun simctl erase {}

Для .bash_profile

alias cleansim="xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -I{} xcrun simctl erase {}"
5 голосов
/ 10 сентября 2014

Начиная с Xcode 6, вы можете сделать это из командной строки: xcrun simctl erase

Кроме того, приложение iOS Simulator (как версии Xcode 6, так и более ранних версий) имеет пункт меню «Сбросить содержимое и настройки», который можно использовать для удаления загруженного в данный момент устройства.

3 голосов
/ 15 октября 2014

По состоянию на Xcode 6:

xcrun simctl erase <sim udid> <- сбрасывает симулятор. </p>

...