Настройка Google Play Instant для Android (мини-приложения)
Google Play Instant позволяет пользователю запустить часть приложения без установки — прямо из браузера, поиска Google или Play Store по кнопке «Попробовать». Сценарии: демо-версия игры, онбординг нового пользователя, просмотр конкретного контента по deep link без предварительной установки.
Технически instant app — это тот же APK, только с жёсткими ограничениями по размеру и функционалу. Не отдельное приложение — срез существующего.
Технические ограничения
Размер: instant experience не может превышать 15 МБ. Это главное ограничение. Для приложений с большим количеством ресурсов, шрифтов и библиотек — серьёзный вызов. Android App Bundle с динамическими модулями (dynamic-feature) позволяет вынести в instant только нужный функционал.
API-ограничения: instant apps работают в песочнице. Недоступны: READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, доступ к контактам, SMS, постоянные уведомления. Некоторые hardware API ограничены. Bluetooth, камера, микрофон — доступны с разрешения пользователя, как в обычном приложении.
INSTANT_APPS_ACCESS разрешение нужно добавить в манифест instant-модуля.
Хранилище: SharedPreferences в instant scope — временные, сбрасываются. Для сохранения данных между instant и installed версией используется InstantApps.getPackageManagerCompat() с Cookie API — маленький буфер (~16 КБ) для передачи состояния при установке.
Структура проекта с Instant App
Приложение разбивается на модули через Android App Bundle:
-
app— базовый модуль (всегда устанавливается) -
feature_instant— модуль сdist:instant="true", который включается в instant experience - остальные
feature_*— динамические модули, скачиваются по запросу
В feature_instant/AndroidManifest.xml:
<dist:module dist:instant="true">
<dist:delivery>
<dist:install-time />
</dist:delivery>
</dist:module>
install-time для instant означает «включить в instant experience», не «установить вместе с базовым модулем».
Код instant-модуля запускается через intent с deep link — тот же URL, который используется для App Links. Когда пользователь устанавливает приложение, instant experience бесшовно переходит в installed.
Что чаще всего мешает реализации
Размер 15 МБ. Анализ apkanalyzer показывает, что съедает место: обычно это неоптимизированные drawable (webp вместо png), шрифты (только нужные начертания через downloadable fonts), крупные библиотеки. ProGuard/R8 с isMinifyEnabled = true и isShrinkResources = true обязательны. Иногда приходится заменять зависимость — например, вместо полного Google Maps SDK использовать Static Maps API с ImageView.
Навигация. Instant app запускается через URL. Если навигация построена не на deep links, а на внутренних ID — нужна доработка. NavDeepLinkBuilder в Navigation Component упрощает это, но требует, чтобы каждый экран instant experience имел соответствующий URL.
Тестирование. Instant app можно запустить напрямую из Android Studio через конфигурацию с Launch: Instant App URL. На устройстве нужно включить «Google Play Instant» в Developer Options. Без реального тестирования на устройстве сложно проверить ограничения песочницы.
Cookie API для передачи состояния. Если пользователь прошёл онбординг в instant-версии и устанавливает приложение — без Cookie API этот прогресс теряется. Реализация: в instant записываем в cookie через InstantApps.setInstantAppCookie(), при первом запуске installed-версии читаем через InstantApps.getInstantAppCookie().
Настройка Google Play Instant для существующего приложения: 3-5 дней при условии, что приложение уже использует multi-module структуру. Для монолитного проекта — предварительная модуляризация добавляет время. Стоимость рассчитывается индивидуально.







