Предупреждение: Google Play Instant больше не будет доступен. Начиная с декабря 2025 года мгновенные приложения не могут быть опубликованы через Google Play, и все API-интерфейсы мгновенных приложений Google Play больше не будут работать. Пользователи больше не будут получать мгновенные приложения от Play с использованием любого механизма.
Мы вносим это изменение на основе отзывов разработчиков и наших постоянных инвестиций в улучшение экосистемы с момента внедрения Google Play Instant.
Чтобы продолжить оптимизацию для роста числа пользователей, мы призываем разработчиков направлять пользователей в их обычные приложения или игры, используя глубокие ссылки для перенаправления их на определенные пути или функции, когда это уместно.
Google Play Instant обеспечивает богатый, нативный опыт при нажатии на веб-ссылку. Люди могут использовать ваше приложение без предварительной установки, что обеспечивает более высокий уровень и качество взаимодействия. Однако, чтобы мгновенное приложение загружалось так же быстро, как типичная мобильная веб-страница, вам необходимо создать хорошо структурированное, эффективное мгновенное приложение. Чем меньше двоичный файл вашего мгновенного приложения, тем быстрее оно загружается и тем более плавным будет пользовательский опыт.
В этом документе изложены лучшие практики управления структурой и двоичным размером вашего приложения для обеспечения плавного мгновенного опыта работы с приложением. Вы можете применить эти же практики, чтобы получить пользу и для вашего устанавливаемого приложения.
Реорганизация в многофункциональные модули
Наибольшее улучшение двоичного размера вашего приложения происходит, когда вы рефакторите приложение в несколько функциональных модулей. Начните с базового функционального модуля , затем извлеките тематически связанные рабочие процессы в их собственные функциональные модули. Назначьте начальную активность и уникальный URL-адрес каждому функциональному модулю, чтобы пользователи могли успешно завершить рабочий процесс модуля.
При создании модулей функций, делайте базовый модуль функций как можно меньше. В частности, уделите особое внимание частям вашего приложения, которым требуется доступ к вашим зависимым библиотекам. Если только один модуль функций использует данную библиотеку, импортируйте эту библиотеку в сам модуль функций, а не в базовый модуль функций. Имейте в виду, что для выпуска мгновенного приложения для определенного модуля функций общий размер этого модуля функций и базового модуля функций должен быть меньше 15 МБ .
Лучшие практики
При рефакторинге приложения помните о следующих рекомендациях:
- Используйте одну и ту же кодовую базу для обоих типов приложений.
- Вы можете упростить процесс управления проектом своего приложения, используя одну и ту же модульную кодовую базу для создания как устанавливаемого приложения, так и мгновенных приложений.
- Проектирование для многофункциональных модулей
- Даже если в вашем приложении только один рабочий процесс и на данный момент требуется только один функциональный модуль, все равно хорошей идеей будет проектировать для нескольких функциональных модулей. Таким образом, вы сможете добавлять существующие модули в свое приложение, не влияя на размер исходного функционального модуля.
- Не обращайте внимания на ограничение размера функционального модуля в начале
- Ограничения на размер модуля функций не применяются к локально собранным двоичным файлам. Вы также можете выпустить мгновенное приложение через внутренний тестовый трек, который устанавливает ограничение в 15 МБ на размер модуля функций. Только альфа- и производственные треки устанавливают ограничение в 15 МБ .
Обновление ресурсов приложения
Некоторые приложения, особенно те, которые имеют более длинную историю кодовой базы, содержат ресурсы, которые двоичные файлы вашего приложения больше не используют. Когда вы ищете способы сделать модули вашего приложения меньше, рассмотрите следующие распространенные источники ненужного кода.
Уменьшить размер файла изображения
Вы можете значительно уменьшить общий размер чертежей вашего приложения, используя формат файла WebP вместо PNG. Google Play Instant обеспечивает полную поддержку WebP, включая прозрачность и сжатие без потерь, поэтому качество изображения остается прежним.
Если возможно, удалите все требования обратной совместимости для использования других изображений PNG. Если вам необходимо использовать изображения PNG, поместите их в модуль, который используется для сборки и установки вашего приложения.
Удалить неиспользуемые языки
Если ваше приложение поддерживает несколько языков, сократите количество локализованных ресурсов, насколько это возможно. Этот шаг особенно полезно выполнить, если вы используете библиотеку "app compat", например 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 строки, подобные следующим:
<модуль_функции>/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 по управлению зависимостями .
Реализовать облачную доставку активов
Если вам необходимо еще больше уменьшить размер, вам, возможно, придется прибегнуть к облачной доставке ресурсов .