Прибирання тренажера iPhone


107

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

В ідеалі, кожного разу, коли я будую, це заглушує попередній вміст. Це можливо, чи мені це вручну робити?


Чи підтримує тренажер AppleScript?
Рог

Так. Я написав AppleScript, щоб переглядати всі симулятори iOS для кожного пристрою та версії ОС та скидати їх Зміст та налаштування: github.com/michaelpatzer/ResetAllSimulators
mpatzer

Відповіді:


91

Симулятор встановлює додатки в:

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

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

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

Файли та каталоги GUID збігаються з встановленими додатками симулятора.

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

Я знаю, що є якийсь спосіб додати скрипти до процесу збирання в XCode.

Крім того, схоже, що XCode змінює GUID, він використовує кожну збірку (каталог, де мій додаток сидить, змінюється між збірками в XCode), тому намагання видалити один і той же каталог весь час не буде працювати. Якщо ви працюєте лише над однією програмою за один раз, тоді очищення всього каталогу було б варіантом.


2
Не забудьте перевірити відповідь @ idStar нижче. Він оновлював інформацію про Lion / Xcode4 та хороший маленький сценарій, який допомагає автоматизувати речі.
PyjamaSam

Я тестував додавання та видалення підписок на календар. На реальному пристрої ви можете видалити підписку на календар у Налаштуваннях> Облікові записи, але це меню не існує в iOS Simulator, і я не хотів скидати весь симулятор. Тож я закінчив локальну версію своєї папки Device з git та виконую, git reset HEAD --hard && git clean -fщоб видалити підписку на календар після того, як я додав її.
Тібо Д.

132

З ресурсів яблук Dev:

Щоб встановити вміст користувача та параметри тренажера на їх заводський стан та видалити встановлені програми, виберіть iPhone Simulator> Скидання вмісту та налаштувань .

Це нагадує:

Скидання iOS


3
Цей, схоже, не очищає SQLite
Asped

1
це не очистити кеш браузера, наприклад
Мау

1
Тепер цей параметр знаходиться уHardware > Reset Content and Settings
Haseeb Eqx

22

Я це роблю - просто натиснути і утримувати піктограму мого додатка в тренажері - тоді, коли він починає хитатися, клацніть чорно-біле (x). З'явиться повідомлення із запитанням, чи дійсно ви хочете видалити, і ви просто натисніть так. Наступного разу, коли ви будете створювати та розгортати свою програму, вона використовуватиме новий sqlite db без сучка, і вам не доведеться перебирати файлові системи.


Це, здається, не працює - воно НЕ СПІЛЬНО видаляє дані з тренажера?
Адам

1
Моя помилка - це добре працює (підтверджується, читаючи каталог у прийнятій відповіді. Я просто забув непривітний для Apple дизайн NSUserDefaults (про невстановлені значення не повідомляється жодним розумним чином)
Адам

@quadelirus, я вважаю, що ваша відповідь є найбільш доречною у цій ситуації.
дат

Саме це я і зробив, але я не впевнений, як закрити додаток, який відкрився вже в симуляторі. Поки я не закрию програму, я не можу отримати контроль над тренажером.
Хочу каву


12

Після iOS 5 на Mac OS X Lion, ви можете спробувати:

  1. Створіть сценарій, який називається RemoveSimulatorApps.command:
    rm -rf "$ ГОЛОВНА / Бібліотека / Підтримка програм / iPhone Simulator / 5.0 / Програми / *"
    
  2. Збережіть цей скрипт у каталозі у вашому PATH.
  3. Зробіть файл виконуваним, наприклад:
    chmod + x RemoveSimulatorApps.command

Припущення

  • Ви можете запустити це за допомогою кнопок улюбленої клавіатури, наприклад, на клавіатурі Logitech або Microsoft з програмованими клавішами (отже, збережіть його як .command-файл, а не скажімо, .sh)
  • Ви все добре в тому, що видуйте все в тренажері iOS (ідеально, якщо ви просто активно працюєте над одним додатком)
  • Усі нотатки інших стосуються того, що це хороший додаток для оновлення тощо. (Я особисто вважав це корисним, проте b / c. У мене є перемикачі режиму розробки, які перезавантажують базу даних у певному стані, я намагався зробити послідовну надійність / обробку помилок)

1
Цей ідеально працює, просто не забудьте додати свою правильну версію IOS на шлях :)
Asped

1
Чи має сенс додати ~ замість абсолютного шляху?
Микита Леонов

8

це може бути зайвим, але ..

ви також можете скористатися меню та "Скинути вміст і налаштування ..."


7

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

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

Для додаткових пунктів, визначивши, що ви зіткнулися зі старою схемою, ви можете скопіювати нову базу даних, не знищуючи стару, і завантажити будь-які цікаві дані зі старої бази даних у нову. Потім підірвіть стару базу даних. Таким чином ви можете зберегти додатки вашого користувача до бази даних.


Взагалі я згоден з вами, коли ви говорите про оновлення версій, але в розпалі розробки будь-якої конкретної версії це набагато більше, ніж потрібно. Схема бази даних може змінюватися на основі побудови, і потрібно писати код перетворення для кожної збірки - просто неправильно.
Тревіс Йенсен

7

для 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

6

Якщо ви використовуєте Xcode 9 -> Menubar -> Обладнання -> Стерти весь вміст і налаштування

Xcode -> Обладнання -> Стерти весь вміст і налаштування


5

Станом на Xcode 6, ви можете зробити це з командного рядка за допомогою: xcrun simctl erase

Також у додатку iOS Simulator (як версія Xcode 6, так і старіші версії) є пункт меню під назвою "Скидання вмісту та налаштувань", який можна використовувати для видалення завантаженого на даний момент пристрою.


але це може бути виконано на кожній збірці автоматично? наприклад для тестів?
Даніель Гомес Ріко

Якщо припустити, що ви робите свої тести за допомогою сценарію, ви, звичайно, можете просто додати "xcrun simctl erase <UDID>" до цього сценарію, де це доречно ...
Джеремі Хаддлстон, Секвойя

Так, саме це я і сказав.
Джеремі Хаддлстон Секвойя

5

Це працює з 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 {}"


1

Очистити кеш Xcode;

Command + Option + Shift + K

Command + Shift + K

(Використовуйте їх обох, оскільки вони мають різну функціональність)

Очистити вміст отриманих даних;

Рядок меню -> Вікно -> Органайзер -> Проекти -> Виберіть проект

Права панель показує назву папки, а також кнопка видалення в правій частині дозволяє видалити весь похідний вміст даних.

Очистити кеш-симулятор;

Рядок меню -> Симулятор iOS -> Скидання вмісту та налаштувань


1

Як я пояснював у коментарі під підтвердженою відповіддю :

Я тестував додавання та видалення підписок на календар. На реальному пристрої ви можете видалити підписку на календар у Налаштуваннях , Облікові записи, але це меню не існує в iOS Simulator, і я не хотів скидати весь тренажер.

Тож я закінчив локальну версію своєї папки Device з git та виконую наступні команди для видалення підписки на календар після того, як я додав його:

$ git reset HEAD --hard
$ git clean -f

Отже, кроки такі:

  1. Встановіть свою програму на iOS Simulator і зробіть те, що вам потрібно зробити
  2. Визначте свій пристрій ~/Library/Developer/CoreSimulator/Devices/і виконайте cdйого, git initщоб створити сховище git
  3. Як тільки ви хочете зберегти стан, виконайте виконання git commit -a "Message"
  4. Зробіть все, що змінить налаштування (наприклад, додайте підписку на календар) і виконайте свої тести
  5. Вимкніть тренажер
  6. Зробіть git reset --hard HEAD
  7. Запустіть тренажер, всі зміни, зроблені після, git commitвже не зникли.

1

У XCode перейдіть до пункту меню Window, виберіть Devices, і тоді ви можете просто видалити ті, які вам більше не потрібні.


0

Для Xcode <= 5

Я додав наступне до свого ~/.bash_profile

alias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'

Це просто занурює всі програми на сім.


1
Це більше не застосовується для Xcode 6 і вище.
Джеремі Хаддлстон Секвойя
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.