Понимание размера Framework в iOS
Обычно при разработке iOS приложения, приходится использовать различные библиотеки, распространяемые как framework. И зачастую их размер может вас удивить, поэтому давайте подробнее рассмотрим некоторые темы, почему это не должно вас пугать.
App Thinning
Apple оптимизирует пакет вашего приложения с помощью процесса утоньшения. Ваши пользователи загружают только код и ресурсы, необходимые конкретно для их устройства. Вы можете сгенерировать отчет о размере вашего приложения с помощью Xcode или посмотреть отчет «Размер файлов магазина приложений» в iTunes Connect, чтобы узнать, каков будет фактический размер начальной загрузки вашего приложения. Обратите внимание, что эти цифры показывают максимальный размер, который будут загружать ваши пользователи. Дополнительную информацию о том, как оптимизируются обновления, см. далее.
Архитектура процессора
Обычно framework включает в себя мульти-архитектурный бинарный код, который содержит части для armv7
, arm64
, i386
и x86_64
архитектур процессора. ARM используется для физического iOS устройства, в то время как i386
и x86_64
только для симулятора и будут вырезаны из вашего приложения во время сборки и архивации. Когда пользователь скачивает ваше приложение из App Store, он получает только ту архитектуру, которую требует его устройство.
Bitcode
Bitcode включен в ARM архитектуры, но не влияет на конечный размер вашего приложения. Bitcode - это неоптимизированное промежуточное представление кода, которое Apple использует для потенциальной перекомпиляции и повторной оптимизации бинарника вашего приложения после отправки в App Store. Как метаданные, предназначенные исключительно для оптимизации сборки, bitcode никогда не загружается вашими пользователями.
Если в вашем проекте bitcode отключен, нет необходимости удалять его из фреймворков, которые его содержат. Независимо от того, использует ли ваше приложение bitcode, версия, которую App Store предоставляет вашим пользователям, никогда его не содержит.
Обновления приложений
При обновлении приложения ваши пользователи загружают только файлы, которые были изменены в этом обновлении. Эти частичные обновления обычно известны как «дельта-обновления». Если ресурсы и двоичные файлы в вашем приложении не изменились, они не будут перезагружены. См. Уменьшение размера файла обновлений iOS приложений, для получения дополнительной информации о том, как использовать преимущества дельта-обновлений.
Отладочные символы
Обычно framework содержат файлы dSYM
и BCSymbolMap
. Они используются для обозначения сбоев и не включены в приложение, которое загружают пользователи.