Очистка симулятора iPhone
есть ли простой способ очистить каталог, в котором xcode развертывает приложение при создании для симулятора iPhone? У меня есть база данных sqlite, которая при необходимости копируется в папку документов при запуске. Проблема в том, что я могу изменить свою схему, но новая база данных не будет скопирована, потому что она уже существует.
В идеале, каждый раз, когда я строю, он будет уничтожать предыдущее содержимое. Возможно ли это, или мне нужно сделать это вручную?
15 ответов:
симулятор устанавливает приложения в:
"$HOME/Library/Application Support/iPhone Simulator/User/Applications"кроме того, проверить:
"$HOME/Library/Developer/CoreSimulator/Devices"файлы и каталоги GUID соответствуют установленным приложениям симулятора.
вручную удалите все эти файлы / каталоги, чтобы удалить все приложения из симулятора.
Я знаю, что есть какой-то способ добавить скрипты в процесс сборки в XCode.
также похоже, что XCode изменяет GUID, который он использует для каждой сборки (каталог, в котором находится мое приложение изменения между сборками в XCode), поэтому попытка удалить один и тот же каталог все время не будет работать. Если вы работаете только над одним приложением за раз, то очистка всего каталога будет вариантом.
способ, которым я это делаю, - просто нажать и удерживать значок для моего приложения в симуляторе, а затем, когда он начнет шевелиться, нажмите черно-белый (x). Появится сообщение с вопросом, действительно ли вы хотите удалить, и вы просто нажмите кнопку Да. В следующий раз, когда вы создадите и развернете свое приложение, оно будет использовать новую базу данных sqlite без сучка и задоринки, и вам не нужно будет ходить по файловой системе.
после iOS 5 на Mac OS X Lion, вы можете попробовать:
- создать скрипт под названием
RemoveSimulatorApps.commandсодержит:rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Applications/*"- Сохраните этот скрипт в каталог в вашем
PATH.- сделайте файл исполняемым, например:
chmod +x RemoveSimulatorApps.commandпредположения
- вы можете вызвать это с помощью кнопок "избранное" на клавиатуре, например, на клавиатуре Logitech или Microsoft с программируемыми клавишами (следовательно, сохраните его как a .командный файл вместо того, чтобы сказать,. ш)
- вы в порядке с сдуванием все в симуляторе iOS (идеально, если вы просто активно работаете над одним приложением)
- все заметки от других применяются о том, чтобы быть хорошим обновляемым приложением и т. д. (Я лично нашел это полезным, тем не менее, b/c у меня есть переключатели режима разработки, которые перезагружают базу данных в определенном состоянии, я пытался сделать некоторую согласованную устойчивость/обработку ошибок)
то, что вы действительно пытаются сделать, это очистить вашу базу данных, если вы изменили схему. Один из способов сделать это, и это сделает вас счастливее в долгосрочной перспективе, когда вы начинаете доставка версии 2.0, 3.0 и т. д. вашего приложения, чтобы проверить версию вашей таблицы sqlite, и если она изменилась, а затем отказаться от старого файла и использовать тот, который в вашем пакете.
поиск способа очистки симулятора не поможет решить проблему реального мира о том, как очистить iPhone клиента, когда вы отправьте новую версию с новой схемой.
для дополнительных точек, после определения того, что вы столкнулись со старой схемой, вы можете скопировать новую базу данных, не разрушая старую, и загрузить любые интересные данные из старой базы данных в новую. Затем сдуйте старую базу данных. Таким образом, вы можете сохранить дополнения вашего пользователя к базе данных.
это работает с 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 {}для .файл
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 {}"
для 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
по Xcode 6, Вы можете сделать это из командной строки с: xcrun simctl erase
кроме того, приложение iOS Simulator (как версия Xcode 6, так и более старые версии) имеет пункт меню "сброс содержимого и настроек", который можно использовать для удаления загруженного устройства.
Очистить Кэш Xcode;
Команда + Опция + Shift+K
Command + Shift+K
(используйте оба из них, потому что они имеют разную функциональность)
очистить содержимое производных данных;
Строка Меню - > Окно - > Организатор - > Проекты - > Выберите Свой Проект
правая панель показывает имя папки, а также кнопку Удалить на панели правая сторона позволяет удалять все полученные данные.
Очистить Кэш Симулятор;
строка меню - > iOS Simulator - > сброс содержимого и настроек
как я объяснял в комментарии под подтверждено ответом:
Я тестировал добавление и удаление подписок календаря. На реальном устройстве, вы можете удалить подписку на календарь в настройки,счета но это меню не существует в симуляторе iOS, и я не хотел сбрасывать весь симулятор.
так что я закончил локально управление версиями моя устройства папка с git и чтобы удалить подписку на календарь после ее добавления, выполните следующие команды:
$ git reset HEAD --hard $ git clean -fИтак, шаги:
- установите приложение на симулятор iOS и делайте то, что вам нужно сделать
- определить устройство в
~/Library/Developer/CoreSimulator/Devices/иcd, тогдаgit initчтобы создать репозиторий git- как только вы хотите сохранить состояние, выполните
git commit -a "Message"- делать все, что изменяет настройки (например, добавление календаря подписка) и выполнять свои тесты
- выключение тренажера
- Do
git reset --hard HEAD- запустите симулятор, все изменения сделаны после
git commitушли.
в XCode перейдите в меню окна, выберите устройства, а затем вы можете просто удалить те, которые вам больше не нужны.
Для Xcode
я добавил следующее в мой
~/.bash_profilealias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'Это просто ядерное оружие все приложения на sim-карте.


Comments