Управление загрузками в Xcode

17 ноября 2022

Начиная с Xcode 14, симуляторы для watchOS и tvOS доступны в виде отдельных загрузок (iOS и macOS по-прежнему «встроены»). Данное решение позволяет значительно уменьшать размер загрузки приложения, однако теперь вам придется самостоятельно управлять этими большими (3-4 ГБ) компонентами.

При первом запуске Xcode 14 вам будет предложено загрузить дополнительные платформы. Также подсказка появится, когда вы попытаетесь запустить код без среды выполнения.

Но что это за загрузки и где они хранятся? Первый совет — откройте дисковую утилиту (Disk Utility). Вы увидите кучу новых томов «Симулятор», смонтированных в разделе «Образы дисков» (Disk Images):

Дисковая утилита, показывающая четыре среды выполнения симулятора.
 
Выбрав эти тома, вы увидите, что все они монтируются в /Library/Developer/CoreSimulator/Volumes. В каждом томе вы найдете PDF-файл и путь к пакету .simruntime в каталоге Runtimes. Эта структура аналогична дополнительным средам выполнения iOS в /Library/Developer/CoreSimulator/Profile/Runtimes. Пакеты .simruntime содержат всю информацию, необходимую для работы симулятора.

Теперь, когда вы знаете, что использует Xcode, вам будет интересно, откуда он берет образ диска. Он расположен в каталоге: /Library/Developer/CoreSimulator/Images. Эта папка также содержит файл images.plist, в котором хранятся метаданные для образов дисков. Там всего несколько файлов, но на моем Mac они занимают 13 ГБ дискового пространства.

И еще пару часов назад эта папка содержала 7 ГБ данных, которые были несовместимы с текущей версией Xcode. Мне пришлось удалить эти файлы вручную. Но как? Самый простой способ управлять этим пространством — использовать новую панель «Платформы» (Platforms) в настройках Xcode:


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

В этом окне также показано, когда вы в последний раз использовали среду выполнения: благодаря скрину становится понятно, что я могу избавиться от сред выполнения iOS 14 и tvOS 16.0 и сэкономить около 25 ГБ памяти. При необходимости легко вернуть эти рабочие среды, достаточно нажать кнопку +. (После загрузки новой среды выполнения ее можно использовать в окнах «Устройства и симулятор» (Devices & Simulator) для создания нового тестового устройства.)

Если вам больше нравится работать с командной строкой, вы можете использовать xcrun для получения той же информации:

$ xcrun simctl runtime list

 

Добавьте туда -v опцию, если вы хотите получить более подробную информацию (из упомянутого выше images.plist). Чтобы удалить любой из перечисленных элементов, используйте указанный GUID в этой команде:

$ xcrun simctl runtime delete <GUID>

 

В конце концов, этот короткий пост сэкономил мне 32 ГБ дискового пространства. Если вы разрабатываете для платформ, отличных от текущей iOS, вы, вероятно, увидите что-то подобное. Со временем вам нужно будет самому следить за этим: Xcode не может навести порядок за вас, потому что он понятия не имеет, что вам нужно.

Дополнительные сведения см. в документации Apple по установке и управлению средами выполнения Simulator. Спасибо Джейсону Яо за то, что он помог мне разобраться во многих этих вещах!
 

Оригинал статьи

Содержание