Xcode Simulator: как удалить старые ненужные устройства?

211

Я использую Xcode 4.3.1 iOS-Simulator, который изначально поддерживает только iOS 5.1.

Мне нужно протестировать мой код с iOS 4.3, поэтому я использовал функцию «Установить» Xcode, чтобы установить его, как описано в разделе «Установка Xcode с имитатором устройства iOS 4.3?»

Теперь я закончил тестирование, но не могу найти способ удалить части 4.3 («iPhone 4.3 Simulator» и «iPad 4.3 Simulator»). Я хочу уменьшить беспорядок в меню Схемы.

Никто из списков рассылки Apple Xcode не знал ответа!

РЕДАКТИРОВАТЬ: обратите внимание, что многое изменилось с Xcode 4.3, поэтому рекомендуем всем, кто читает этот взгляд на все ответы. Новейшие, такие как Стив Мозер, могут быть более полезными для вас!

РЕДАКТИРОВАТЬ 10/2017: Опубликовано в Twitter Хулио Карреттони

Если вы являетесь разработчиком iOS, выполните это:
$ xcrun simctl delete unavailable
Он удаляет старые симуляторы, которые Xcode больше не используют. Для меня это был 6Gb Сам не пробовал ...

[Кроме того, я только что видел, как Расс Бишоп упомянул об этом в комментарии ниже ...]

Дэвид Х
источник

Ответы:

172

Вы пытались просто удалить 4.3 SDK из пакета XCode?

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs

также удалите соответствующий файл .dmg в

~ / Library / кэша / com.apple.dt.Xcode / Загрузки

чтобы предотвратить повторную установку того же пакета Xcode снова.


для XCode> = 6 см. ответ @ praveen-matanam

childno͡.de
источник
3
Ты гений! Спасибо! Не могу поверить, что нет на Xcode listserv знал об этом. Я смотрю в нескольких местах, но не там, где вы предложили.
Дэвид Х
Это не будет работать в xcode 4.5.2. Как только вы снова запустите компилятор, он попросит вас установить старые устаревшие устройства снова. Отмена закроет xcode, поэтому вы вынуждены установить снова.
Алехандро Луенго
Это верно, Алехандро, Apple, похоже, изменила «лицензию», так что вам всегда нужна действительная учетная запись разработчика, и вы должны устанавливать все расширения снова и снова при каждом крупном обновлении в приложении. Устаревшие системы также в основном не поддерживаются; (
childno͡.de
1
Посмотрите ответ Дана Риза ниже для чего-то, что работает на Xcode 4.6.
Би Джей Гомер
2
Работал для Xcode 6.3.1 вместе с этим ответом stackoverflow.com/a/30206853/286618 . Очистил старую документацию и сохранил 9ГБ !!!
RoLYroLLs
204

В Xcode 6+ вы можете просто перейти в «Меню»> «Окно»> «Устройства»> «Симуляторы» и удалить ненужный имитатор.

tomi44g
источник
1
Вопрос был актуален в версии 4 и, вероятно, 5. Как видите, это было довольно сложно. С тех пор я избегал использования старых симуляторов.
Дэвид Х,
3
Это верно. Если вы хотите, чтобы симуляторы действительно исчезли, или переустановите их в Xcode -> Preferences -> Downloads, вы должны удалить среду выполнения симулятора, как указано ниже stackoverflow.com/a/30206853/1344293
mathz
Спасибо, это самый простой способ управлять симуляторами. вместо удаления симуляторов из папок xcode. Это работает для меня :)
Chirag
Как удалить устройство с более старой версией iOS? В окне устройств отображаются только симуляторы с iOS 9.1 (на Xcode 7.1). Я хотел бы избежать редактирования device_set.plist и удаления папок в Finder.
биография
Вы также можете использовать этот скрипт для воссоздания симуляторов: gist.github.com/cabeca/3ff77007204e5479f7af
tomi44g
154

В Xcode 6 и выше вы можете найти и удалить симуляторы из пути /Library/Developer/CoreSimulator/Profiles/Runtimes. Перезапустите XCode для вступления в силу (может не потребоваться).

Правин Матанам
источник
6.4 здесь. Нужно перезагрузить мою машину, чтобы она вступила в силу.
Aasatt
2
7.2 - перезапуск не требуется
TheEye
xcode 8.0 требовался перезапуск, чтобы очистить недействительные симуляторы в окне устройств
Doug Amos
2
@thiagoveloso потому что вы установили не любую другую версию симуляторов, кроме iOS 10.0+. У меня там было только 9,3, 8,4 и 8,3 .simruntimeфайла
Алексей Потапов
1
Я могу быть также в~/Library/Developer/...
Роберто
127

Октябрь 2018 обновление

Как уже упоминалось, вы можете использовать, xcrunчтобы сделать несколько вещей:

  • xcrun simctl list devicesили xcrun simctl list --jsonперечислить все симуляторы
  • xcrun simctl delete <device udid> удалить конкретное устройство
  • xcrun simctl delete unavailable удалить старые устройства для сред выполнения, которые больше не поддерживаются

Больше вещей, которые вы можете сделать xcrun(см. Фрагмент кода)

Оригинальный ответ

Сентябрь 2017, Xcode 9

Runtimes

Вы найдете их здесь:

/Library/Developer/CoreSimulator/Profiles/Runtimes

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

приборы

Для удаления устройства перейдите сюда:

~/Library/Developer/CoreSimulator/Devices

Намного проще удалить их, используя Xcode: Xcode-> Window-> Devices and Simulators введите описание изображения здесь

Помогите Xcode «забыть» о средах выполнения и предотвратить их переустановку - удалите файл .dmg здесь:

~/Library/Caches/com.apple.dt.Xcode/Downloads

Я надеюсь, что это поможет кому-то 🙂

Павел Ковалев
источник
8
Пожалуйста, не удаляйте устройства из файловой системы; использовать xcrun simctl delete <device udid>. Вы также можете запустить, xcrun simctl delete unavailableчтобы удалить старые устройства для сред выполнения, которые больше не поддерживаются.
русский епископ
1
У меня нет ~ / Library / Caches / com.apple.dt.Xcode / Downloads (нет папки «Загрузки» в ~ / Library / Caches / com.apple.dt.Xcode /), интересно, почему
auspicious99
1
путь к папке, которую вы перечислили, не существует, Xcode 9.4
Питер Каллен,
Это то, что я искал: не удалять 12.2 симулируемых устройств по одному, а удалять весь симулятор 12.2 из системы. Путь работал с XCode 10.3. После удаления мне пришлось его перезапустить, а количество симуляторов просто уменьшилось вдвое.
catanore
77

Запустите эту команду в терминале, чтобы удалить симуляторы, к которым нет доступа из текущей версии Xcode (8+?), Используемой на вашем компьютере.

xcrun simctl delete unavailable

Кроме того, если вы хотите восстановить пространство, связанное с симулятором, Майкл Цай обнаружил, что удаление журналов сима сэкономило ему 30 ГБ.

~/Library/Logs/CoreSimulator
Стив Мозер
источник
2
Спасибо! Очевидно, что оригинальный вопрос был для Xcode 4, так что с тех пор многое изменилось!
Дэвид Х
2
Это выпустит почти 20 ГБ для меня. Спасибо
Libor
26

Xcode 4.6 предложит вам переустановить все старые версии симулятора iOS, если вы просто удалите SDK. Чтобы избежать этого, вы также должны удалить кэш Xcode. Тогда вам не придется переустанавливать старый SDK при запуске.

Чтобы удалить симулятор iOS 5.0, удалите их и перезапустите Xcode:

  1. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/PhoneSimulator5.0.sdk
  2. ~ / Library / кэша / com.apple.dt.Xcode

Например, после чистой установки Xcode я установил симулятор iOS 5.0 из настроек Xcode. Позже я решил, что 5.1 достаточно, но не смог удалить версию 5.0. Xcode заставлял меня переустанавливать его при запуске. После удаления файла кеша и SDK он больше не спрашивается.

Дэн Риз
источник
1
Чуть более точный ответ здесь , хотя я сам еще не проверял его.
Дэн Риз
22

У меня такая же проблема. Мне не хватало места.

Удаление старых симуляторов устройства НЕ помогло.

Моя проблема с пространством была вызвана xCode. Он сохранил копию каждой версии iOS на моем macOS, так как я установил xCode.

Удалите ненужную версию iOS и освободите место на диске. Я сэкономил 50 ГБ + места.

введите описание изображения здесь ПРИМЕЧАНИЕ. -> если у вас есть несколько пользователей на одном компьютере с macOS, обязательно найдите каталог ТОЛЬКО с учетной записью пользователя, которая изначально установила xCode.

rustyMagnet
источник
Я считаю 9G выше - как вы восстановили 75G?
Дэвид Х
Привет @DavidH - 75 ГБ было до моей очистки. Поскольку я работал с xCode в течение многих лет, xCode установил на свой компьютер все варианты iOS 7, 8, 9 и 10. В реальности мне, вероятно, нужны только iOS10 и iOS11, чтобы идти вперед.
rustyMagnet
1
Это здорово - я никогда не знал об этом месте. У меня здесь были десятки ГБ, когда я устанавливал каждую версию Xcode.
Эшелон
Папка существует с xCode 9.4 @PeterCullen. Вы просто должны получить доступ к нему из учетной записи пользователя, который первоначально установил xCode. У меня есть две учетные записи на моем Mac, которые используют общий код xCode. Только учетная запись пользователя, которая установила xCode, может просматривать эту папку.
rustyMagnet
1
Вы открываете Finder и выбираете «Перейти в папку»? Библиотека по умолчанию является скрытой папкой.
ржавый магнит
9

следуя некоторым из ответов здесь, удаление некоторых симуляторов из моего меню XCode> Window> Devices> Simulators никак не помогло моему умирающему дисковому пространству: введите описание изображения здесь

Тем не менее, cd ~/Library/Developer/Xcode/iOS\ DeviceSupportи работает, du -sh *я получил все эти ребята:

2.9G    10.0.1 (14A403)
1.3G    10.1.1 (14B100)
2.9G    10.3.2 (14F89)
1.3G    10.3.3 (14G60)
1.9G    11.0.1 (15A402)
1.9G    11.0.3 (15A432)
2.0G    11.1.2 (15B202)
2.0G    11.2 (15C114)
2.0G    11.2.1 (15C153)
2.0G    11.2.2 (15C202)
2.0G    11.2.6 (15D100)
2.0G    11.4 (15F79)
2.0G    11.4.1 (15G77)
2.3G    12.0 (16A366)
2.3G    12.0.1 (16A404)
2.3G    12.1 (16B92)

Все вместе это 33 ГБ!

Кровавая баня последовала

подробности смотрите здесь

abbood
источник
6

В дополнение к ответу @ childno.de, ваш каталог Mac

/private/var/db/receipts/

может по-прежнему содержит устаревший iPhoneSimulatorSDK .bomи .plistтакие файлы:

/private/var/db/receipts/com.apple.pkg.iPhoneSimulatorSDK8_4.bom /private/var/db/receipts/com.apple.pkg.iPhoneSimulatorSDK8_4.plist

Это может привести к тому, что на вкладке «Загрузки» в настройках XCode появится галочка ( ) для этой устаревшей версии симулятора.

Чтобы удалить ненужные симуляторы, вы можете выполнить поиск с помощью этой команды bash с вашего терминала Mac:

sudo find / -name "*PhoneSimulator*"

Затем перейдите в соответствующие каталоги, чтобы вручную удалить ненужные SimulatorSDK

Раймонд
источник
4

В XCode откройте Окно - Устройства, затем выберите и удалите устаревшие симуляторы.

catanore
источник
3

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

Для этого перейдите: Target-> Summary, затем измените цель развертывания.

werdsackjon
источник
Возможно, все изменилось с тех пор, как я опубликовал вопрос, но когда я это сделал, вы увидели разные симуляторы в меню Схемы, и это просто затруднило выбор правильного.
Дэвид Х
3

Я перепробовал все ответы. Никто из них не работал для меня.

То, что работало для меня на Sierra + Xcode 8.2, собиралось:

/Library/Developer/CoreSimulator/Devices и удаление всех устройств.

(Может быть , это не будет работать для вас, может быть , это является решением как автономный, или , может быть , вы должны сделать это в дополнение к другим ответы, но я сделал все решения здесь и поэтому не уверен , что сделал поступок). Просто имейте в виду, что некоторые из ответов здесь старые и местоположение симулятора изменилось. Ответ Snowcrash, кажется, самый последний.

Мед
источник
Могу ли я предположить, что вы сначала отключили XCode, сделали это, а затем перезапустили XCode?
Дэвид Х,
@ Давид, прости, я не помню, что я сделал. У меня была проблема в течение 3-4 недель. Каждый раз, когда это происходило, когда я переключался между проектами / сим-устройствами ... Я просто пробовал все, и это, казалось,
Милая
@DavidH ты тоже пробовал этот ответ
Милая,
Для Xcode 10 и новее папка: ~/Library/Developer/CoreSimulator/Devices.
blackjacx
3

Я написал однострочный сценарий bash, который удалит ВСЕ ваши симуляторы:

xcrun simctl list devices | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" | xargs -L1 xcrun simctl delete
  • xcrun simctl list devices перечислит все симуляторы, установленные на вашем компьютере
  • grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" захватит устройство UUID
  • xargs -L1 xcrun simctl delete будет пытаться удалить устройство для каждого найденного UUID

Если вы хотите увидеть все, что он будет выполнять, вы можете добавить echoраньше xcrun, т.е.

xcrun simctl list devices | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" | xargs -L1 echo xcrun simctl delete
Толанд Хон
источник
2

Проблема с этими ответами состоит в том, что с каждым обновлением XCode меню и местоположения будут меняться.

Просто зайдите /Applications/Xcode.app/Contents/Developer/Platformsи удалите то, что вам не нужно. Xcode начнется нормально. Если вас это беспокоит, вы можете просто восстановить данные из корзины.

Snowcrash
источник
2
Я серьезно сомневаюсь, что Xcode скачивает симуляторы, вы запрашиваете его в комплекте. Конечно, они идут в библиотеку пользователей, нет? Тем не менее, я никогда не загружал более старый, так как у меня была проблема с Xcode 4.
Дэвид Х
Для каждой платформы (iOS, watchOS, AppleTVOS, MacOS) у меня есть 2 папки: у меня есть «iPhoneOS.platform» и «iPhoneSimulator.platform» Какую из них я предполагаю удалить? Я проверил с коллегой, у него были точно оба из них, но никаких проблем. Причина, по которой я на самом деле здесь, это из-за этой проблемы, и кто-то сказал мне, что это потому, что у меня есть 2 симулятора / X-коды, но если я не правильно это сделаю, я ' я удалил мою другую версию XCode, а также я удалил среду выполнения 9.3 ...
Honey
1
Пожалуйста, пожалуйста, пожалуйста, не делайте этого. Никто не должен возиться с контентом внутри пакета XCode.
русский епископ
2

Некоторые люди пытаются исправить это одним способом, другие - вторым. В основном, есть 2 проблемы, которые, если вы проверите их и решите обе проблемы - в 99% это должно решить эту проблему:

  1. Симуляторы старых устройств, расположенные в YOUR_MAC_NAME(например Macintosh) -> Users-> YOUR_USERNAME( daniel) -> Library-> Developer-> Xcode-> iOS Device Support. Оставьте там, самый новый, на сегодня это 13.2.3 (17B111), но в будущем это изменится. Наибольшее число (здесь 13.2.3) версии iOS указывает, что она более новая.

  2. После этого список ваших устройств Terminal, запустив xcrun simctl list devices. Многие из них могут быть unavailable, поэтому удалите их, запустив xcrun simctl delete unavailable. Это также освободит место. Чтобы быть уверенным, что все в порядке, проверьте это снова, запустив xcrun simctl list devices. Вы должны видеть устройства только из самой последней версии (здесь 13.2.3), как показано на скриншоте ниже.

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

В качестве бонуса, который немного менее актуален в этом вопросе, но все еще свободен некоторое пространство. Перейти к YOUR_MAC_NAME(например Macintosh) -> Users-> YOUR_USERNAME(например daniel) -> Library-> Developer-> Xcode-> Archives. Вы увидите много заархивированных развернутых приложений, скорее всего, вам не нужны все из них. Попробуйте удалить те, которые больше не используются.

Используя эти 2 метода и бонусный метод, я смог получить дополнительные 15 ГБ места на моем Mac.

PS. Простое удаление симуляторов из XCode путем перехода к Xcode-> Window-> Devices and Simulators-> Simulators(или просто CMD+ SHIFT+ 2при использовании сочетания клавиш) и удаление его там не поможет. Вам действительно нужно пойти на описанные шаги.

Даниэль Даниелецкий
источник
-2

Command + Space

Тип "симулятор"

откройте старый бета-симулятор, который вам больше не нужен.

щелкните его правой кнопкой мыши в доке, затем выберите «Параметры»> «Показать в Finder».

Закройте приложение, затем удалите его из папки.

:)

Samer
источник