Xcode - безкоштовно очистити папку пристроїв?


83

Я видаляю деякі папки та файли, щоб звільнити місце на диску. Я знаю, що на шляху:

~/Library/Developer/CoreSimulator/Devices/

Для кожного симулятора та кожної версії є папки. Для мене ця папка має розмір близько 11 Гб. Я знаю, що міг видалити тренажери зі старими версіями, якими я більше не користуюся. Але з цього унікального ідентифікатора я не можу зрозуміти, який є правильним, а який ні. Тож моє запитання: чи можу я все це видалити? Це нормально, якщо наступного разу у мене не буде жодного мого додатка в симуляторі, але чи можу я втратити щось більше? Старі версії симулятора? Або щось інше? Дякую

Відповіді:


244

~/Library/Developer/CoreSimulator/Devices/Шлях де Xcode зберігає більшу частину даних , необхідних для окремих пристроїв тренажера.

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

Якщо ви зайдете до терміналу, ви можете скористатися інструментом simctl (постачається з Xcode 6+), щоб перерахувати всі наявні у вас пристрої-симулятори, а також ідентифікатори, щоб ви могли зрозуміти, які папки видалити.

Зверніть увагу, ви побачите, як я постійно використовую xcrun simctl у цій відповіді. Це додає трохи абстракції до речей, якщо xcrun переходить до пошуку відповідної версії simctl для обраного вами Xcode. Якщо ваша система не така складна, як моя, ви, мабуть, зможете пройти, відпустивши частину "xcrun", і командний рядок все одно повинен знайти інструмент simctl.

xcrun simctl list devices

Ось декілька вибраних фрагментів результату, який я отримав:

== Пристрої ==

- iOS 8.2 -

- iOS 8.4 -

iPhone 6 Plus (23E36868-715A-48C8-ACC3-A735C1C83383) (вимкнення)

iPad Air (2928379B-70E3-4C59-B5BA-66187DDD3516) (вимкнення)

- iOS 9.1 -

Мій спеціальний iPhone 4s (4F27F577-FFD0-42C1-8680-86BBA7394271) (вимкнення)

iPad Retina (85717B35-313A-4161-850E-D99D5C8194A6) (вимкнення)

- Недоступний: com.apple.CoreSimulator.SimRuntime.iOS-9-0 -

iPhone 4s (D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3) (вимкнення) (недоступний, профіль виконання не знайдено)

З цього ви бачите, що у мене немає пристроїв-симуляторів iOS 8.2. У мене є симулятори 9.1 та 8.4. У мене зроблено пристрій симулятора 9.0 (залишок моєї роботи над Xcode 7.0), але у мене немає самого часу роботи симулятора 9.0. Отже, це хороший кандидат для видалення або нагадування про те, що я маю піти завантажити симулятор 9.0 у Xcode.

Якщо ви хочете, ви можете використовувати ці ідентифікатори для ідентифікації папки для відповідного пристрою та видалення її вручну (у цьому випадку я б видалив папку "D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3"), але ви також можете використовувати інструмент simctl для цього.

Використання згідно з версією 7.1.1 simctl:

xcrun simctl help delete
Usage: simctl delete <device> [... <device n>] | unavailable

Тож я можу або видалити окремі пристрої:

xcrun simctl delete D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3

або я можу масово видалити всі недоступні за допомогою:

xcrun simctl delete unavailable

Також немає необхідності обмежуватись лише недоступними тренажерами.

Якщо вам потрібна подальша допомога з інструментом, вона постачається з досить прямою командою довідки:

xcrun simctl help


2
Якщо ви отримаєте помилку xcrun: error: unable to find utility "simctl", ви зможете користуватися нею,xcrun /Applications/Xcode.app/Contents/Developer/usr/bin/simctl
rovr138

2
Xcrun повинен допомогти вам знайти утиліти, щоб вам не потрібно було самостійно знати їхні шляхи. Але якщо ви вже знаєте шлях до simctl, немає потреби в "xcrun". Просто запустіть це безпосередньо/Applications/Xcode.app/Contents/Developer/usr/bin/simctl
Аарон

Я відвоював ~ 10 Гб після запуску simctl delete unavailable, обрізки пристроїв, що повертаються назад до декількох версій iOS. Я не уявляв, що вони все ще там. Перемагай!
wardw

Класно, і ще одне питання, як ми могли дізнатися, який з них доступний, а який ні? Я вже видалив їх unavailable oneза допомогою xcrun simctl delete unavailable, але папка все ще занадто велика ..
boog

За бажанням можна видалити інші пристрої-симулятори. Швидше за все, вам фактично не потрібен екземпляр кожного пристрою в кожній версії iOS. Можливо, просто збережіть кілька репрезентативних прикладів, наприклад, найменший із доступних iPad та iPhone та найбільший із доступних iPad та iPhone. Я вважаю, що Apple також отримала відгук про те, скільки місця вони займають, оскільки примітки до випуску для Xcode 11 (на даний момент у бета-версії) підкреслюють, що він автоматично створить лише кілька пристроїв-симуляторів, не всіх з них.
Аарон

1

Я мав подібну проблему деякий час тому, xcode займав 47G на моєму диску. Я спробував видалити деякі симулятори, які зупинили роботу мого xcode (божевільний). Тож я видалив усе, що стосується xcode, і встановив свіжий. Це просто мій досвід.


1

Іноді Xcode любить подвоювати свої симулятори.

Зазвичай виправлення для мене завжди полягало в тому, щоб просто видалити їх усі. Видалити їх нешкідливо, оскільки їх завжди можна завантажити знову пізніше.

Xcode> Налаштування> Завантаження

Тільки пам’ятайте, що якщо у вас є старі симулятори (iOS 8.0-), ви не зможете завантажити їх знову через Xcode.


0

у Xcode 8:

1) Запустіть $ sudo du -khd 1у терміналі, щоб побачити розмір папки кожної папки;

2) Запустіть, $ cd library/developer/coresimulator/devicesщоб переглянути ГБ, що зберігається для всіх ваших симуляторів Xcode;

3) Ви почнете бачити, де ховається тонна сховища! Тепер просто перейдіть до цього місця на вашому Macintosh HD і перегляньте device.plist у кожній папці пристрою;

4) Вирішіть, які папки видаляти та зберігати, видаливши будь-які симулятори / версії iOS, які ви запускали раніше, але більше не потребують тестування. У цих папках існують старі версії sqlite, які можуть виконувати роль старих резервних копій або іншого вмісту, тому враховуйте, що перед тим, як видалити все в цій папці.

Я заощадив понад 50 Гб, коли вперше це зробив.

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