SwiftConf 2023 – Бруно Роша: Сохранение небольших размеров приложений Swift: Почему и как

YOUTUBE · 01.12.2025 09:58

Ключевые темы и таймкоды

Важность размера приложения

0:06
  • Бруно Ра, инженер из Spotify, рассказывает о важности размера приложения для пользователей, особенно в развивающихся странах, где стоимость хранения данных и интернет-связь могут быть дорогими.
  • Бруно объясняет, что 85% населения земного шара живут в развивающихся странах, и размер приложения может влиять на количество загрузок и успех приложения.

Исследование Google и Spotify

6:03
  • Google и Spotify провели исследования, которые показали, что размер приложения может влиять на количество загрузок.
  • Бруно рассказывает о подразделении Spotify, которое занимается отслеживанием и улучшением размера приложения, и о том, как они используют CI для отслеживания изменений в размере приложения.

Инструменты для отслеживания размера приложения

9:39
  • Бруно предлагает использовать сторонний инструмент Emerge для отслеживания изменений в размере приложения и получения отчета о том, откуда произошли эти изменения.
  • Он также упоминает, что можно начать с простого отслеживания размера скомпилированного двоичного файла, что уже может быть полезным для разработчиков.

Оптимизация размера приложения

10:36
  • В iOS есть разница между размером установки и загрузки приложения.
  • В iOS размер установки - это то, что видят пользователи в App Store, а размер загрузки - это то, что Apple сжимает перед отправкой.
  • В Spotify используется проверка размера приложения для предотвращения отправки некачественных заданий.

Оптимизация кода

15:10
  • В iOS нет недостатка в ненужных накладных расходах, которые можно уменьшить.
  • Оптимизация кода включает в себя удаление ненужных ресурсов, использование правильных форматов и размещение файлов в каталогах ресурсов.
  • В Spotify используются скрипты для оптимизации размера приложения и удаления ненужных материалов.

Оптимизация размера приложения

20:47
  • Обсуждение использования каталогов для сжатия отдельных файлов в приложении.
  • Рекомендации по использованию определенных ресурсов и оптимизации размера приложения.

Быстрые накладные расходы

22:42
  • Обсуждение использования структур в Swift и их влияния на размер приложения.
  • Рекомендации по оптимизации кода и использованию классов вместо структур.

Неиспользуемый код

26:15
  • Обсуждение проблемы ненужной динамической диспетчеризации в Swift.
  • Рекомендации по оптимизации кода и использованию протоколов только при необходимости.

Сложности и опасности оптимизации

29:38
  • Обсуждение проблем, связанных с настройкой проекта и работой с iOS.
  • Предупреждение о том, что не стоит пытаться оптимизировать проект самостоятельно, если не обладаете необходимыми знаниями и опытом.

Оптимизация приложений

30:29
  • Обсуждение оптимизации приложений, включая использование Swift, LLVM и фреймворков.
  • Упоминание о том, что оптимизация может уменьшить размер приложения на 20 мегабайт.

Советы по оптимизации

33:58
  • Не ставить флаги оптимизации, если не хотите проблем с производительностью.
  • Источники информации: форумы Swift, LLVM, крупные компании, мобильные native foundation.

Архитектура приложений

37:02
  • Важно знать о разных подходах и концепциях, но не обязательно повторять их в своем проекте.
  • Ответ на вопрос о локализации: проблема решена с помощью новых словарей строк.

Удаление ненужных ресурсов

39:24
  • Удаление ненужных ресурсов из сторонних SDK.
  • Процесс удаления ресурсов после публикации: отправка исходного кода, статическое связывание, агрессивные оптимизации.

Обсуждение размера приложений

41:09
  • В видео обсуждается, как уменьшить размер приложения, особенно для уменьшения потребления электроэнергии.
  • Упоминается, что Spotify также занимается этим вопросом.

Использование каталогов активов и HAC

43:50
  • Обсуждается, как использовать каталоги активов и HAC для изображений большего размера.
  • Упоминается, что можно использовать HAC в прототипе актива, но не в самом активе.

Влияние SwiftUI на размер приложения

44:27
  • Обсуждается исследование о сравнении SwiftUI и UIKit, как это влияет на фактический размер приложения.
  • Упоминается, что SwiftUI может уменьшить размер приложения.

Рекомендации по уменьшению размера приложения

47:27
  • Обсуждаются рекомендации по уменьшению размера приложения, включая использование статических ссылок и макросов Swift.
  • Упоминается, что некоторые данные и ресурсы увеличиваются с течением времени, и Spotify предпринимает шаги для уменьшения этого размера.

Макросы Swift и их влияние на размер приложения

49:51
  • Обсуждаются макросы Swift и их влияние на размер приложения.
  • Упоминается, что макросы могут быть полезны, но важно понимать, что на самом деле генерируется.