Есть ли более быстрый / лучший способ очистить кеш симулятора iPhone, чем удаление его каталога?


95

Так что я все еще достаточно новичок в разработке для iOS, и мне довольно часто приходится удалять либо DerivedData, либо содержимое каталога iPhone Simulator, чтобы что-то действительно выполнялось из моего кода. Очистка в Xcode - это не то же самое, что очистка этих каталогов, верно? А если нет, есть ли более простой способ сделать это, чем таскать Finder, чтобы добраться до них и очистить их?


3 года назад, возможно, этого не было, но проверьте мой ответ, у меня это работает!
Адриан Флореску,

Ответы:


125

66:99 и восхождение:

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

Выйдите из iPhone Simulator, затем запустите xcrunв Терминале:

xcrun simctl erase all

Безопасно и эффективно.

См. Https://stackoverflow.com/a/26394597/218152 для одного устройства

xcrun simctl erase [идентификатор устройства]


Но стирает ли это сами симуляторы? Чтобы потом мне нужно было повторно добавить их на экран Xcode Devices?
Люк

1
Просто содержание. В документации ( xcrun simctl help) стереть : стереть содержимое и настройки устройства. , не путать с удалением : удаление устройства или всех недоступных устройств.
SwiftArchitect

Потрясающие. Соблазн изменить свой правильный ответ в свете этого :)
Люк

@lukech: Очень признателен. Я наткнулся на это решение, пытаясь сэкономить память на моем HD, и искал clean build folderподход. И поддерживаю вас за то, чтобы этот вопрос оставался активным.
SwiftArchitect

эта команда запускается бесконечно, как выбрать целевой сим с uuid?
the_prole 01

104

В меню iOS Simulator есть опция Сбросить содержимое и настройки ...

Это должно помочь.

РЕДАКТИРОВАТЬ:

Чтобы сделать это намного быстрее и проще, я добавил такую ​​горячую клавишу ...

В Системных настройках выберите Клавиатура

Системные настройки клавиатуры

Затем выберите вкладку « Ярлыки ». И нажмите Ярлыки приложений

Ярлыки приложений Нажмите кнопку с плюсом, чтобы добавить еще один ярлык.

введите описание изображения здесь Наконец:

  1. В раскрывающемся списке « Приложение» нажмите «Выбрать симулятор» . Если его там нет, прокрутите список приложений до конца и выберите «Другое ...». Затем введите «симулятор» в поиск и добавьте оттуда Симулятор.
  2. Введите Стереть все содержимое и настройки ... в текстовое поле Название меню : .
  3. Введите предпочтительную комбинацию клавиш в Keyboard Shortcut: . (Я использую командный период)
  4. Щелкните кнопку Добавить .

введите описание изображения здесь

Теперь, находясь в симуляторе iOS, вы можете просто использовать новую комбинацию клавиш для сброса.


Если Симулятор не отображается в раскрывающемся списке:

  1. В окне Finder перейдите в папку «Приложения».
  2. Щелкните правой кнопкой мыши Xcode и выберите «Показать содержимое пакета».
  3. Перейдите к Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/
  4. Вы увидите iPhone Simulator.app.
  5. Теперь в приложении «Настройки» вместо выбора «Симулятор iOS», который отсутствует, вы выбираете «Другое» ....
  6. Это вызовет появление окна со списком приложений.
  7. Теперь перетащите iPhone Simulator.app из окна Finder в окно, открывшееся при нажатии кнопки «Другое» ....

Симулятор iOS больше не отображается в раскрывающемся списке «Приложение». Должен ли я просто выбрать «xCode.app»? Я использую ОС 10.8.3 с iOS Simulator 6.0.
Potench

8
В окне поиска перейдите в папку «Приложения». Удерживая нажатой клавишу Option, щелкните Xcode и выберите «Показать содержимое пакета». Перейдите в Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/папку. Вы увидите iPhone Simulator.app. Теперь в приложении «Настройки» вместо выбора того, iOS Simulatorчто отсутствует, вы выбираете Other.... Это вызовет появление окна со списком приложений. Теперь перетащите iPhone Simulator.appиз окна Finder в окно, которое появилось при нажатии Other....
Джефф Вольски,

1
Я пришел сюда в поисках чего-то еще, но прошел все ваши шаги только потому, что ваш ответ был настолько хорош. Спасибо!
kodybrown

1
Reset Content and Settingsне очищает ресурсы на стороне клиента в VPN. Некоторое время я боролся с этим, задаваясь вопросом, почему мои CSS-анимации работали везде, кроме симулятора, только чтобы узнать, что он кэширует старые файлы, даже когда я удалил контент и настройки. Единственное, что в конечном итоге сработало для меня, - это отключение от моей VPN и перезапуск моей виртуальной машины, а затем повторное подключение (фреймворк, в котором я использую версии всех своих активов для меня) - вы также можете версировать их вручную, если просто тестируете материал, но это раздражает. Это то, что Apple должна исправить; это происходит только при тестировании на iOS для меня.
Бенни

3
Если вы не можете найти симулятор на пути, Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/указанном @JeffWolski, вы можете найти его по поисковому запросуsimulator.app
atulkhatri

9

Для веб- разработки и тестирования на iOS Simulator (Safari):

  1. Открыв iOS Simulator и Safari, перейдите в Safari> Develop> iOS Simulator и выберите свою страницу, которая предоставит вам доступ к инструментам Web Inspector.

  2. Перейдите в Safari> Разработка> Очистить кеши, чтобы очистить кеш в iOS Safari.


@AdrianFlorescu - это решение для отладки веб-разработки в iOS Safari, но я думаю, что вопрос касался разработки приложений для iOS.
Райан

4
Не работает в Safari 9.0.3 с удаленным отладчиком. «Отключить кеши» тоже не действует.
Gamadril

1
Этот параметр мне ничего не дает (на самом деле не очищает кеш на мобильном сафари)
HandiworkNYC.com

Да. Похоже, он больше не очищает кеш iOS. Думаю, это было в прошлом ...
Йош

1
это единственное решение, которое, похоже, работает stackoverflow.com/a/51421939/1055015
Exlord
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.