Можно ли удалить ненужные симуляторы устройства из Xcode?


64

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

Есть четыре каталога под Application/Xcode.app/Contents/Developer/Platforms/. Я чувствую это WatchSimulator.platformи AppleTVSimulator.platformне нужно, потому что я использую Xcode почти только для базовой разработки под iOS.

Я хотел бы знать, могу ли я удалить эти каталоги платформ напрямую?

Справочники


Просто к вашему сведению ... Вы получите только половину показанного пространства, поскольку они выглядят сжатыми. Посмотрите на лист получения информации, например, в моей системе для платформы WatchOS. На ней показано 50 579 830 байт (28,2 МБ на диске) для 2212 элементов, а на платформе AppleTVSimulator.platform - 1 865 477 227 байт (1,1 ГБ на диске) для 29 705 элементов. Таким образом, вы не получите столько свободного места, сколько указано в вашем ОП.
— user3439894

Файлы сжимаются, и файловая система HFS + от Apple поддерживает прозрачное сжатие, но в Finder и lsв терминале отсутствует флаг, позволяющий увидеть, что файл использует hfsCompression , без таблицы сведений , где можно увидеть, что значение на диске значительно отличается от размера, отображаемого в байтах. , Существует утилита, написанная третьей стороной, которая включает исходный код, если вы хотите скомпилировать его самостоятельно, afsctool . Среди его возможностей - получение информации о существующих сжатых файлах HFS +.
— user3439894

Какая программа помогает вам определить эти большие файлы на вашем диске?
— Пизис

1
@Pysis Похоже, OmniDiskSweeper для меня. Этот инструмент не был обновлен для APFS и сжатия, хотя, похоже, сейчас у них есть несколько новых тестовых сборок.
— Зак Липтон

1
@ Zach Lipton, если OP использует High Sierra и APFS, файлы могут не сжиматься, потому что APFS еще не поддерживает сжатие. Или это изменилось в 10.13.1?
— user3439894

Ответы:


63

Да, вы можете удалить любой симулятор, который вы не используете. Я делаю это регулярно, когда перестаю поддерживать старые версии iOS.

Если вы удалите их, а затем обнаружите, что они вам понадобятся в будущем, вы можете повторно загрузить их с сайта разработчика Apple.

Лучший способ удалить их в Xcode. Перейти к Window -> Devices and Simulators. Это откроет новое окно со всеми устройствами, которые вы используете в XCode.

Вверху нажмите на, Simulatorsи вы увидите список слева.

Оттуда найдите симулятор, который вы хотите удалить, и Cntl- щелкните (или щелкните правой кнопкой мыши) и выберите Delete.

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


8
Я знаю, что этому посту уже пару лет, но похоже, что он не удаляет симулятор, а просто перечисляет его в Xcode. Так что если нужно было удалить его, чтобы сэкономить место на диске, это не правильный метод.
— Шон Паттерсон

34

Xcode теперь делится симуляторами со всеми пользователями. Итак, вам нужно удалить симуляторы из следующей папки:

/Library/Developer/CoreSimulator/Profiles/Runtimes

Например:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes
sudo rm -rf iOS\ 8.4.simruntime/
sudo rm -rf iOS\ 9.3.simruntime/

Ура!


29

Вы можете легко удалить все недоступные симуляторы с помощью этой команды в терминале:

xcrun simctl delete unavailable

1
На самом деле это мало что дает. Если вы запустите, xcrun simctl listвы увидите, что только ~ 10% устройств считаются «недоступными». Также устройства здесь не настоящие космические свиньи. iOS работает. Ответ @ Франсуа намного лучше на практике.
— joshuakcockrell

1
@joshuakcockrell Не обязательно; после многих лет накопления устаревших версий симуляторов это освободило мне нелепое пространство. Так что я думаю, мммм.
— Пол Кантрелл

Я насчитал ( wc -l) 148 строк в списке с «недоступными» и 128 из них. Приведенная выше команда удаления вернула мне 14 ГБ
— Крейг

15

Несмотря на то, что ответ @ fsb позволяет удалить «экземпляры» симулятора, правильный путь для освобождения огромного пространства, используемого старыми платформами симулятора, который больше не нужен, идет в следующую папку:

~/Library/Developer/Xcode/iOS DeviceSupport

и удалите папки, соответствующие симулятору / платформам, которые вам больше не нужны.

Кроме того, есть очень хорошая статья с другими этим и другими советами:


3
кажется, что /Library/Developer/Xcodeбыл удален после нового обновления MacOS. Я не могу найти это нигде.
— Сухайб

1
@Suhaib вы забыли начальную тильду " ~ ", которая заставляет начать путь в вашем домашнем каталоге. Правый каталог: ~/Library/Developer/Xcode/iOS DeviceSupport.
— Рикардо Баррозу

7

Где Xcode хранит симуляторы в 2019+ Catalina, Xcode 11.0

Runtimes

$ open /Library/Developer/CoreSimulator/Profiles/Runtimes

Например: iOS 13.0, watchOS 6.0Они принимают наибольшее пространство, на сегодняшний день. Каждый может быть до ~ 5 ГБ

приборы

$ open ~/Library/Developer/CoreSimulator/Devices

Например: iPhone Xr, iPhone 11 Pro Max. Обычно это <15 мб каждый.

объяснение

Симуляторы разделены между средами выполнения и устройствами. Если вы запускаете, $ xcrun simctl listвы можете увидеть обзор, но если вы хотите найти физическое местоположение этих симуляторов, посмотрите в этих каталогах, которые я показал.

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


1
Спасибо, это мне очень помогло!
— ацидо

5
  • перечислить все симуляторы xcrun simctl list devicesилиxcrun simctl list --json

  • удалить конкретное устройство xcrun simctl delete <device udid>

  • удалить старые устройства для сред выполнения, которые больше не поддерживаются xcrun simctl delete unavailable


Вы можете использовать, xcrun simctl delete allя полагаю
— revau.lt

1

Откройте Terminal.app и запустите следующее:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes

Теперь введите версию iOS, для которой вы хотите удалить симуляторы, в приведенной ниже команде, например, если вы хотите удалить для iOS 12.0, запустите:

sudo rm -rf iOS\ 12.0.simruntime/


1

Чтобы удалить симуляторы по версии iOS:

Если вы хотите удалить симуляторы только для конкретной версии и у вас fastlaneустановлена ​​программа, вы можете запустить интерактивную оболочку ruby ​​и выполнить следующие команды, чтобы удалить все симуляторы iOS 10:

# launch the interactive ruby shell (irb)
$ irb

# require the device manager capabilities of fastlane core
irb(main):001:0> require 'fastlane_core/device_manager'

# delete all iOS 10 simulators
irb(main):002:0> FastlaneCore::Simulator.delete_all_by_version(os_version: "10.0")
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.