Это очень хороший и справедливый вопрос, который волнует многих пользователей! Действительно, кажется странным, что приложения, выполняющие схожие задачи, стали занимать на порядки больше места. Вот несколько ключевых причин, почему так происходит:
1. Значительно расширенная функциональность:
Калькулятор: Современные приложения-калькуляторы часто включают в себя не только базовые арифметические операции, но и научные функции (тригонометрия, логарифмы и т.д.), конвертеры величин (валюты, единицы измерения), графические возможности, историю вычислений и даже интеграцию с другими сервисами.
Просмотр фото: Приложения для просмотра фото сейчас предлагают гораздо больше, чем просто показ изображений. Это могут быть встроенные редакторы с множеством фильтров и инструментов, функции организации фотографий (альбомы, теги, распознавание лиц), облачная синхронизация, поддержка различных форматов (включая RAW), анимированные эффекты и интеграция с социальными сетями.
WhatsApp: Эволюция WhatsApp просто колоссальна. Начиналось все с текстовых сообщений.
- Голосовые и видеозвонки.
- Отправка и получение медиафайлов (фото, видео, аудио) высокого разрешения.
- Групповые чаты с большим количеством участников.
- WhatsApp Web и Desktop.
- Возможность отправки документов.
- Функции для бизнеса. Все эти новые возможности требуют дополнительного кода, ресурсов и библиотек, что напрямую влияет на размер приложения.
2. Более богатый и сложный пользовательский интерфейс (UI) и пользовательский опыт (UX):
Современные приложения стремятся быть более визуально привлекательными и интуитивно понятными. Это включает в себя использование высококачественных графических элементов (иконки, изображения), анимаций, плавных переходов, кастомных элементов управления. Все эти визуальные ресурсы занимают место.
Поддержка различных тем оформления (светлая, темная).
Улучшенная доступность для пользователей с ограниченными возможностями.
3. Поддержка различных архитектур процессоров и устройств:
Android работает на множестве устройств с разными типами процессоров (ARM, x86 и т.д.). Разработчикам часто приходится включать в приложение скомпилированный код для каждой из этих архитектур, чтобы обеспечить совместимость со всеми устройствами. Это приводит к увеличению размера приложения ("толстый" APK или AAB).
4. Использование сторонних библиотек и фреймворков:
Современная разработка часто подразумевает использование готовых библиотек и фреймворков для упрощения и ускорения процесса. Эти библиотеки предоставляют готовые решения для различных задач (например, работа с сетью, обработка изображений, аналитика). Подключение таких библиотек увеличивает размер приложения, даже если используется лишь небольшая часть их функциональности.
5. Локализация и интернационализация:
Многие приложения поддерживают несколько языков. Для каждого языка необходимо включать переведенные строки, а иногда и специфические ресурсы, что также увеличивает размер.
6. Включение отладочной информации (иногда):
Хотя в релизных версиях стараются минимизировать отладочную информацию, иногда ее часть может случайно попасть в финальную сборку, увеличивая размер.
7. Оптимизация под современные операционные системы и API:
Новые версии Android предоставляют новые возможности и API. Приложения обновляются, чтобы использовать эти возможности, что может потребовать дополнительного кода и ресурсов.
8. Разделение приложения на модули (App Bundles):
Современные инструменты разработки (например, Android App Bundles) позволяют уменьшить размер устанавливаемого приложения за счет разделения его на модули и доставки пользователю только тех частей, которые необходимы для его устройства и языка. Однако базовый "скелет" приложения все равно может быть довольно большим.
9. Рост сложности самих задач:
Даже если кажется, что функция осталась прежней, "под капотом" может происходить гораздо больше. Например, современный калькулятор может использовать более сложные алгоритмы для научных вычислений или более точно обрабатывать десятичные числа.
10. Маркетинговые и аналитические SDK:
Многие приложения включают в себя SDK (Software Development Kits) для сбора аналитики об использовании приложения, показа рекламы и других маркетинговых целей. Эти SDK также добавляют к размеру приложения.
Увеличение размера приложений является результатом комбинации множества факторов. Разработчики стремятся предоставить пользователям более функциональные, удобные и красивые приложения, что неизбежно приводит к росту их размера. Также стоит учитывать, что сами операционные системы и аппаратные возможности устройств за последние 12 лет шагнули далеко вперед, что позволяет разработчикам создавать более сложные и ресурсоемкие приложения.
Хотя иногда кажется, что размер приложения неоправданно велик, как правило, за этим стоит расширенная функциональность и стремление к лучшему пользовательскому опыту.
Вот список функций и факторов, которые я перечислил, с приблизительной оценкой их процентного влияния на размер приложения, отсортированный от большего к меньшему. Важно понимать, что эти проценты являются очень приблизительными и могут сильно варьироваться в зависимости от конкретного приложения.
Значительно расширенная функциональность: 30-50%. Добавление новых возможностей (звонки, медиа, редакторы, конвертеры и т.д.) является одной из основных причин увеличения размера.
Использование сторонних библиотек и фреймворков: 15-30%. Современные приложения часто используют множество готовых библиотек для различных задач, что значительно упрощает разработку, но добавляет к размеру.
Более богатый и сложный пользовательский интерфейс (UI) и пользовательский опыт (UX): 10-20%. Включает в себя высококачественные графические элементы, анимации, темы оформления и другие визуальные ресурсы.
Поддержка различных архитектур процессоров и устройств: 10-20%. Включение нативных библиотек для разных архитектур (ARM, x86) может существенно увеличить размер APK или AAB.
Локализация и интернационализация: 5-15%. Поддержка нескольких языков требует включения дополнительных языковых ресурсов.
Assets и ресурсы (высокое разрешение): 5-10%. Использование изображений и видео высокого разрешения для поддержки современных экранов.
Маркетинговые и аналитические SDK: 2-5%. Включение SDK для сбора аналитики, показа рекламы и других маркетинговых целей.
Оптимизация под современные операционные системы и API: 1-3%. Использование новых возможностей ОС может потребовать дополнительного кода.
Включение отладочной информации (иногда): 0-2%. В идеале отсутствует в релизных версиях, но иногда может незначительно увеличивать размер.
Рост сложности самих задач: 1-2%. Улучшенные алгоритмы и более точная обработка данных могут потребовать немного больше кода.
Эти проценты являются ориентировочными и могут сильно отличаться для разных типов приложений (например, игры, мессенджеры, утилиты).
Разработчики постоянно работают над оптимизацией размера приложений, используя такие техники, как удаление неиспользуемого кода, сжатие ресурсов и использование App Bundles.
Для некоторых приложений, особенно тех, которые изначально были очень простыми, добавление даже нескольких новых функций может привести к значительному относительному увеличению размера.