Site icon AppTractor

Derived Data: 5 ошибок iOS-разработчиков

Папка Derived Data (производные данные) — один из важнейших каталогов, используемых iOS-разработчиком. Хотя вы не работаете с ней напрямую, Xcode активно использует её для кэширования информации и оптимизации разработки.

Тем не менее, у iOS-разработчиков есть множество возможностей максимально эффективно использовать Derived Data. Будь то удаление файлов для оптимизации сборки или просмотр информации о каталоге, все эти действия могут улучшить работу разработчиков. Давайте рассмотрим 5 ошибок, которые совершают iOS-разработчики.

1. Непонимание назначения каталога Derived Data

Во-первых, важно знать о каталоге Derived Data. Хотя можно создавать приложения и без него, я всё же считаю, что понимание его предназначения имеет дополнительную ценность.

Папка Derived Data содержит различные типы данных, облегчающие процесс сборки для iOS-разработчиков.

Как видно на скриншоте выше моей папки с производными данными, там много данных, которые могут показаться незнакомыми. Лично мне знакомы такие названия проектов, как SimulatorCapturing и RocketSim, и в них есть три каталога noindex.

Каталоги ModuleCache.noindex, SDKStatCaches.noindex и SymbolCache.noindex — те, которые вы не будете трогать. Иногда я видел, как они влияют на работу Xcode или Simulator. После удаления этих каталогов проблема решалась. Однако в большинстве случаев проблемы можно решить, используя другие каталоги производных данных.

Итак, какие каталоги полезны? Мы рассмотрим это позже.

2. Поиск папки Derived Data вручную

Ещё одна распространённая ошибка разработчиков iOS — попытка открыть папку Derived Data вручную. Если вы не можете её легко найти, вы вряд ли будете ею часто пользоваться!

Xcode предлагает простой способ перейти к папке, перейдя в Settings → Locations:

Маленькая синяя стрелка — это кнопка, на которую можно нажать. После нажатия откроется соответствующий каталог в Finder.

3. Удаление всех папок с производными данными при возникновении проблем

Уверен, многие iOS-разработчики знакомы с этим, но если нет: удаление папки с производными данными — часть распространённой стратегии отладки.

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

  1. Сбросьте настройки симулятора
  2. Запустите чистую сборку в Xcode
  3. Удалите папку с производными данными

После этого вы запустите проект в чистом состоянии, что, скорее всего, решит ваши проблемы. Если это не решит проблему, по крайней мере, появится более понятное сообщение об ошибке.

Ключевой момент заключается в том, что многие разработчики удаляют всю папку с производными данными. Чтобы понять, почему это неправильно, я объясню, как это работает.

У каждого проекта Xcode есть своя собственная папка с производными данными. Она хранит информацию для повышения скорости сборки и сокращения времени загрузки пакетов Swift. Другими словами, если вы удалите папку проекта, вам придётся скомпилировать его с нуля и снова загрузить все пакеты Swift.

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

4. Неиспользование расширенных инсайтов о сборке

Команды разработчиков могут сильно выиграть от этого. Xcode предоставляет большой объём информации о сборке в интерфейсе обзора сборки. Однако он изолирован от вашего локального компьютера, и кто на самом деле часто в него заглядывает?

Работая в команде, полезно знать подробности о производительности сборки.

Подумайте: если ваша сборка замедляется на 5 секунд, и:

Это означает, что ваша команда внезапно будет ждать завершения сборки почти на 3 часа дольше в день.

Вот почему так важно настроить метрики для времени сборки. Это незаметно снижает производительность, особенно когда проекты становятся всё более сложными.

Папка Derived Data в Xcode содержит каталог с логами сборки: Derived Data → <папка проекта> → Logs → Build. Существуют решения с открытым исходным кодом для парсинга этих данных в HTML-страницы, например, XCLogParser. Однако гораздо эффективнее использовать готовый инструмент.

Использование RocketSim Team Build Insights

RocketSim — это инструмент для iOS-разработчиков, добавляющий более 30 утилит в симулятор Xcode. Команды отмечают, что после его использования работа стала до двух раз быстрее, и отчасти это связано с возможностью отслеживать производительность сборки.

RocketSim работает на локальном компьютере каждого разработчика и отслеживает длительность сборки в рамках схемы проекта. Он синхронизирует эту информацию о сборке со своим бэкэндом, объединяя данные о длительности локальной сборки Xcode для каждого разработчика iOS.

Вместо использования непрерывной интеграции (CI) для отслеживания времени сборки теперь вы можете отслеживать реальную производительность.

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

Вот пример обзора панели управления для одного из моих приложений:

Аналитика сборки в RocketSim может существенно повлиять на производительность команды.

На панели инструментов отображается следующая информация:

Представьте: к команде присоединяется новый коллега с совершенно новым компьютером. Он обновляет Xcode и ОС до последних версий, и ваша панель инструментов показывает, что производительность сборки значительно возросла. Это отличный момент, чтобы обсудить с вашим руководителем переход всей команды на новейший MacBook.

Преимущество заключается в том, что вы можете начать бесплатный 14-дневный пробный период со своей командой.

Вот что сказал Макс Годфри, разработчик iOS в Tilt:

«RocketSim Team Insights наконец-то даёт нам представление о времени сборки, а не просто интуитивное ощущение. Мы можем реально оценить влияние добавления SDK или улучшения конфигураций, наблюдая результаты в инкрементальных и чистых сборках. Это оказалось бесценным для принятия таких решений, как обновление оборудования — мы можем использовать реальные данные, показывающие, как разные машины влияют на время сборки. Метрики прекрасно детализированы, не требуется никаких дополнительных настроек или хаков на этапе сборки — всё работает незаметно в фоновом режиме. Честно говоря, мы никогда бы не оправдали разработку этого решения собственными силами, но это полностью изменило ситуацию».

5. Не углубление в сборку продуктов

Ещё один каталог, который стоит изучить подробнее, находится в папке Derived Data → <Имя проекта> → Build → Products → Debug → <имя_приложения>.app.

В большинстве случаев этот же файл можно найти в обзоре файлов Xcode в папке Products.

Этот файл .app — скомпилированная версия вашего приложения. Хотя перед изучением лучше ознакомиться с конфигурацией схемы выпуска, вы можете получить дополнительную информацию и из отладочных продуктов.

Вот как это сделать:

Вот несколько распространённых примеров, с которыми вы можете столкнуться:

Каждое из этих действий может повлиять на размер вашего приложения, что в конечном итоге может повлиять на бизнес-показатели, такие как количество установок.

Заключение

Папка Derived Data — важный каталог для iOS-разработчиков. Хотя мы не работаем с ней ежедневно, он может стать источником улучшения производительности. Очистка данных сборки или мониторинг метрик с помощью RocketSim — вам необходимо знать о нем.

Спасибо!

Источник

Exit mobile version