Внимание: функция Google Play Instant больше не будет доступна. Начиная с декабря 2025 года, публикация Instant-приложений через Google Play будет невозможна, и все API Instant для сервисов Google Play перестанут работать. Пользователи больше не смогут получать Instant-приложения от Play никаким способом.
Мы вносим это изменение, основываясь на отзывах разработчиков и наших постоянных инвестициях в улучшение экосистемы с момента запуска Google Play Instant.
Для дальнейшей оптимизации с целью увеличения числа пользователей мы рекомендуем разработчикам направлять пользователей в свои основные приложения или игры, используя диплинки для перенаправления их на определенные страницы или функции, когда это необходимо.
Google Play Instant предоставляет богатый, нативный пользовательский опыт по веб-ссылке. Пользователи могут опробовать ваше приложение без предварительной установки, что обеспечивает более высокий уровень и качество взаимодействия. Однако, чтобы мгновенное приложение загружалось так же быстро, как обычная мобильная веб-страница, необходимо создать хорошо структурированное и эффективное приложение. Чем меньше размер исполняемого файла вашего мгновенного приложения, тем быстрее оно загружается и тем удобнее взаимодействие с пользователем.
В этом документе изложены лучшие практики управления структурой и размером бинарного файла вашего приложения для обеспечения бесперебойной и мгновенной работы приложения. Вы можете применить эти же методы и к своему устанавливаемому приложению.
Разделить на несколько функциональных модулей.
Наибольшее сокращение размера бинарного файла вашего приложения достигается путем его рефакторинга в несколько функциональных модулей. Начните с базового функционального модуля , а затем выделите тематически связанные рабочие процессы в отдельные функциональные модули. Назначьте каждому функциональному модулю начальное действие и уникальный URL-адрес, чтобы пользователи могли успешно завершить рабочий процесс модуля.
При создании функциональных модулей старайтесь максимально уменьшить размер базового функционального модуля. В частности, уделяйте особое внимание тем частям приложения, которые требуют доступа к зависимым библиотекам. Если только один функциональный модуль использует данную библиотеку, импортируйте её в сам функциональный модуль, а не в базовый функциональный модуль. Помните, что для выпуска мгновенного приложения для конкретного функционального модуля общий размер этого модуля и базового функционального модуля должен быть менее 15 МБ .
Передовые методы
При рефакторинге приложения учитывайте следующие рекомендации:
- Используйте один и тот же код для обоих типов приложений.
- Вы можете упростить процесс управления проектом вашего приложения, используя одну и ту же модульную кодовую базу для создания как устанавливаемого приложения, так и приложений, запускаемых мгновенно.
- Проектирование для многофункциональных модулей
- Даже если ваше приложение имеет только один рабочий процесс и на данный момент требует только одного функционального модуля, все равно целесообразно разработать его с учетом нескольких функциональных модулей. Таким образом, вы сможете добавлять существующие модули в приложение, не влияя на размер исходного функционального модуля.
- Не стоит зацикливаться на ограничении размера функционального модуля на начальном этапе.
- Ограничения на размер модулей функций не распространяются на локально собранные бинарные файлы. Вы также можете выпустить мгновенное приложение через внутренний тестовый трек, где действует ограничение в 15 МБ на размер модулей функций. Только в альфа-версии и производственной версии действует ограничение в 15 МБ .
Обновить ресурсы приложения
В некоторых приложениях, особенно в тех, которые имеют долгую историю разработки кода, содержатся ресурсы, которые бинарные файлы вашего приложения больше не используют. При поиске способов уменьшения размера модулей вашего приложения, рассмотрите следующие распространенные источники ненужного кода.
Уменьшите размер файлов изображений.
Вы можете значительно уменьшить общий размер изображений вашего приложения, используя формат файлов WebP вместо PNG. Google Play Instant обеспечивает полную поддержку WebP, включая прозрачность и сжатие без потерь, поэтому качество изображения остается неизменным.
По возможности удалите все требования обратной совместимости для использования других изображений в формате PNG. Если вам необходимо использовать изображения в формате PNG, поместите их в модуль, используемый для сборки и установки вашего приложения.
Удалить неиспользуемые языки
Если ваше приложение поддерживает несколько языков, сократите количество локализованных ресурсов до минимума. Этот шаг особенно полезен, если вы используете библиотеку совместимости приложений, например, android.support.v7.appcompat . Эта библиотека содержит сообщения на многих языках, некоторые из которых ваше приложение может не поддерживать.
Чтобы узнать больше, ознакомьтесь с тем, как удалить неиспользуемые альтернативные ресурсы , особенно неиспользуемые языки.
Удалите лишние файлы
Ваше приложение может больше не использовать некоторые ресурсы, импортированные в проект. Для удаления этих ресурсов Android Studio предлагает проверку Lint, предназначенную именно для таких ситуаций. Чтобы воспользоваться этим инструментом, выполните следующие шаги:
- Нажмите Control+Alt+Shift+I ( Command+Alt+Shift+I в Mac OS).
- В появившемся диалоговом окне введите
"unused resources". - Выберите опцию «Неиспользуемые ресурсы» , чтобы запустить процесс проверки использования ресурсов.
Если в вашем приложении остались какие-либо большие ресурсы, подумайте, можно ли их распаковать и загрузить в виде отдельных файлов после того, как пользователь начнет взаимодействовать с приложением. Такая отсрочка загрузки изображений обычно требует изменения кода, но она может существенно уменьшить размер файлов вашего приложения, загружая только те ресурсы, которые пользователь явно запрашивает.
Удалите неиспользуемые библиотеки
По мере расширения функционала приложение может приобретать удивительно большое количество зависимостей, особенно следующих типов:
- Нативные библиотеки: библиотеки, содержащие нативный код, который ваше мгновенное приложение никогда не запускает.
- Транзитивные зависимости: библиотеки, от которых зависят импортированные в ваше приложение библиотеки.
В Android Studio есть несколько полезных инструментов для выявления любых лишних зависимостей в проекте вашего приложения:
- Внешние библиотеки
В окне « Проект» в Android Studio есть раздел «Внешние библиотеки» .
В этом разделе представлены все библиотеки, используемые вашим приложением, включая нативный код и все транзитивные зависимости. Здесь вы найдете неиспользуемые или дублирующиеся библиотеки, которые вашему приложению не требуются.
- Анализатор APK
С помощью инструмента APK Analyzer вы можете сравнивать различные сборки, включая мгновенные сборки приложений.
После того, как вы определили, какие библиотеки не нужны вашему приложению, исключите их, добавив в файл сборки Gradle строки, аналогичные следующим:
<feature_module>/build.gradle
Классный
dependencies { implementation('some-important-but-large-library') { exclude group: 'com.example.imgtools', module: 'native' } }
Котлин
dependencies { implementation('some-important-but-large-library') { exclude(group = "com.example.imgtools", module = "native") } }
Для получения дополнительной информации о сокращении общего размера импортируемых зависимостей вашего приложения см. руководство Gradle по управлению зависимостями .
Внедрить облачную доставку активов.
Если вам потребуется еще больше уменьшить размер, возможно, вам придется полагаться на облачную доставку ресурсов .