- PVSM.RU - https://www.pvsm.ru -

Почему мобильные приложения занимают все больше места

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

Инфографика 1
Инфографика 2

Авторы инфографик в оригинальных статьях выделяют две причины такого роста:

  • повышение максимального допустимого размера приложений AppStore
  • оснащение телефонов все большим объемом памяти

На мой взгляд, указанные тезисы являются только предпосылками и до конца не отвечают на вопрос "почему приложения становятся больше?".
Конечно, в первую очередь дело в добавлении новых функций. Развитие функциональности приложений требует большего размера.

Инфографика 3

Вот только размер приложений в отличие от их функциональности растет в десятки раз и обычно у этого роста совсем другие причины. Далее на базе разных источников с конкретными примерами я попробую систематизировать разные причины:

Лишние копии ресурсов в приложении

Как ни банально звучит, но в приложениях часто сохраняются одни и те же внутренние ресурсы (картинки, библиотеки, и так далее) по нескольку копий. Это происходит из-за того, что крупные приложения разрабатываются несколькими командами разработчиками, отвечающими за свой конкретный функционал программы. Бывает так, что команда тащит для своего модуля те же ресурсы, что и другая, вызывая задвоение.

В одной из статей [1] автор решил детально разобрать внутреннее строение приложения Facebook для iOS после того, как оно увеличилось за полгода с 165 до 253 мегабайт. Он обнаружил, что в приложении содержалось свыше 40 мегабайт избыточных дублирующих данных. В основном это были картинки, но также были и абсолютно идентичные внутренние программные файлы. Таким образом, просто удалив дубликаты, можно было бы уменьшить размер приложения на 15% процентов. Что, кстати, Facebook впоследствии и сделал [2].

А/Б тестирование и внедрение новых функций

Распространенной практикой при разработке приложения является добавление новой функциональности и по умолчанию отключение ее. Это позволяет в дальнейшем постепенно включать ее для тестовых или пилотных групп и по необходимости корректировать или обратно выключать. Но даже по прошествии длительного времени, как правило, возможность отключить новый функционал и восстановить старый не убирается [3] и все равно остается в приложении на всякий случай и для экономии времени.

Переход на более комфортные языки программирования

В случае с приложениями под iOS переход с Objective-C на Swift может дать увеличение размера скомпилированного кода приложения в 3-4 раза [4]. Это происходит из-за того, что ради удобства и скорости разработки новые языки могут:

  • использовать большие типы данных по умолчанию [5], которые занимают больше места
  • вводить дополнительные тесты и проверки в код при компиляции
  • использовать большую стандартную библиотеку функций

Сюда же можно отнести переход приложений на новые фреймворки, которые тащат с собой много необходимых им файлов.

Включение в программы собственных функций, заменяющих стандартные операционной системы

Одним из трендов мобильной разработки под несколько платформ является стремление минимизировать зависимость от конкретной операционной системы. У этого подхода есть свои плюсы. Во-первых, это позволяет не переписывать много кода при изменении внешних системных библиотек. Во-вторых, это позволяет удержать пользователя в своем приложении и обеспечить более консистентный пользовательский опыт (хотя часто бывает так, что своя реализация визуально не отличима от стандартной).

Среди наиболее популярных "велосипедов", заменяющих стандартные средства ОС, можно выделить:

  • Браузеры
  • Работа с камерой
  • Ввод текста и обработка жестов
  • Проверка орфографии

Рост требований к приложениям

По мере развития телефонов владельцы экосистем (Apple, Google) начинают предъявлять к программам новые требования по поддержке системных появляющихся возможностей телефонов, которые требуют больше места:

  • После появления Retina разработчиков обязали добавлять картинки с большей детализацией и соответственно размеров.
  • Переход iOS с 32 на 64 бита впоследствии заставил всех разработчиков выпускать именно 64-битные приложения.

К слову в AppStore для борьбы с ростом размера приложений по таким требованиям потом была представлена технологий App thinning [6], по которой на конкретный телефон скачивается адаптированная версия приложения без избыточных ресурсов для других версий телефонов.

Автор: OlegPyatakov

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/mobil-ny-e-prilozheniya/259833

Ссылки в тексте:

[1] статей: http://blog.timac.org/?p=1707

[2] сделал: http://blog.timac.org/?p=1744

[3] не убирается: https://blog.halide.cam/one-weird-trick-to-lose-size-c0a4013de331

[4] в 3-4 раза: https://news.ycombinator.com/item?id=14627170

[5] большие типы данных по умолчанию: https://news.ycombinator.com/item?id=14207752

[6] технологий App thinning: https://arstechnica.com/apple/2015/06/app-thinning-will-be-a-major-boon-for-8gb-and-16gb-iphones-and-ipads/

[7] Источник: https://habrahabr.ru/post/332602/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox