Снижение стоимости данных для миллиардов

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

Здесь вы можете найти некоторые стратегии, которые помогут оптимизировать объем данных, которые ваше приложение использует как по сети, так и во внутреннем хранилище.

Уменьшить размер приложения

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

Уменьшить размер графического ресурса APK

  • Графические ресурсы часто вносят наибольший вклад в размер APK. Их оптимизация может привести к уменьшению количества загрузок и, следовательно, к сокращению времени установки для пользователей.
  • Для графических ресурсов, таких как значки, используйте формат масштабируемой векторной графики (SVG). Изображения SVG имеют крошечный размер по сравнению с растровой графикой и могут отображаться во время выполнения с любым разрешением. Библиотека поддержки Android обеспечивает обратную совместимость реализации векторных ресурсов для Android 2.1 (уровень API 7). Начните работу с векторами, прочитав этот пост на Medium .
  • Для невекторных изображений, таких как фотографии, используйте WebP , чтобы сократить время загрузки изображений и сэкономить пропускную способность сети. Доказано, что WebP обеспечивает меньший размер файлов, чем его аналоги PNG и JPG, при по крайней мере таком же качестве изображения. Даже при настройках с потерями WebP может создать изображение, почти идентичное оригиналу. В Android включена поддержка WebP с потерями начиная с Android 4.0 (уровень API 14: Ice Cream Sandwich) и поддержка прозрачного WebP без потерь с версии Android 4.2 (уровень API 17: Jelly Bean).
  • Если у вас много больших изображений разной плотности, рассмотрите возможность использования поддержки нескольких APK , чтобы разделить APK по плотности. В результате создаются сборки, ориентированные на определенную плотность, а это означает, что пользователям устройств с низкой плотностью не придется нести штраф за загрузку неиспользуемых ресурсов с высокой плотностью.
  • Дополнительную информацию об уменьшении размера APK см. в разделе «Уменьшение размера APK и сокращение кода и ресурсов» . Кроме того, вы можете найти подробное руководство по уменьшению размера APK в этой серии статей на Medium .

Уменьшить размер кода

  • Каждая библиотека в вашем проекте Android добавляет в APK потенциально неиспользуемый код. Будьте особенно осторожны при использовании внешних библиотек, поскольку не все библиотеки предназначены для использования в мобильных приложениях. Убедитесь, что библиотеки, которые использует ваше приложение, оптимизированы для использования на мобильных устройствах.
  • Рассмотрите возможность оптимизации скомпилированного кода с помощью такого инструмента, как ProGuard . ProGuard идентифицирует код, который не используется, и удаляет его из вашего APK. Также включите сжатие ресурсов во время сборки, установив minifyEnabled=true , shrinkResources=true в build.gradle — это автоматически удалит неиспользуемые ресурсы из вашего APK.
  • При использовании сервисов Google Play вам следует выборочно включать в APK только необходимые API.
  • Дополнительную информацию об уменьшении размера кода в APK см. в обучении Android о том, как избежать фреймворков внедрения зависимостей .

Разрешить перемещение приложения на внешнее хранилище (SD)

  • Недорогие устройства часто имеют мало встроенной памяти. Пользователи могут расширить это с помощью SD-карт; однако приложениям необходимо явно заявить, что они поддерживают установку на внешнее хранилище, прежде чем пользователи смогут их переместить.
  • Разрешите установку вашего приложения во внешнее хранилище с помощью флага android:installLocation в вашем AndroidManifest.xml. Дополнительную информацию о том, как разрешить перемещение вашего приложения на внешнее хранилище, см. в руководстве Android по месту установки приложения .

Уменьшите использование диска приложения после установки.

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

Предлагайте настраиваемое использование сети

Платформа Android включает в себя ряд способов предоставить пользователю контроль над использованием сети вашим приложением, оптимизируя его для своих нужд. Например, при первом использовании ваше приложение может помочь пользователю выполнить различные настройки, связанные с сетью. Вы также можете открыть экран сетевых настроек вне приложения.

Обеспечьте ознакомление с выбором сети для пользователей.

  • Приложения, которые позволяют пользователям сократить использование данных, хорошо принимаются, даже если у них высокие требования к данным. Если ваше приложение использует значительную часть пропускной способности (например, приложения для потоковой передачи видео), вы можете предоставить пользователям возможность настройки использования сети. Например, вы можете разрешить пользователю принудительно передавать видеопотоки с более низким битрейтом в сотовые сети.
  • Дополнительные настройки для пользователей, позволяющие управлять синхронизацией данных, предварительной загрузкой и поведением при использовании сети (например, предварительная загрузка всех помеченных категорий новостей только по Wi-Fi), также помогают пользователям адаптировать поведение вашего приложения к своим потребностям.
  • Дополнительную информацию об управлении использованием сети см. в обучающем курсе Android «Управление использованием сети» .

Предоставить экран сетевых настроек

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

Дополнительные ресурсы

Чтобы узнать больше по этой теме, просмотрите следующие дополнительные ресурсы:

Сообщения в блоге