Создание набора App Bundle для приложения с мгновенным запуском

Внимание! Google Play Instant больше не будет доступен. С декабря 2025 года приложения с мгновенным запуском нельзя будет публиковать в Google Play, а все Instant API сервисов Google Play перестанут работать. Пользователи больше не будут получать приложения с мгновенным запуском из Google Play.

Мы приняли это решение на основе отзывов разработчиков и наших постоянных инвестиций в улучшение экосистемы с момента запуска Google Play Instant.

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

Вы создаете приложение Google Play Instant, включив его в набор Android App Bundle. Такой набор называется набором App Bundle с мгновенным запуском. В этой статье рассказывается, как настроить среду разработки для наборов App Bundle с мгновенным запуском, а также как настроить, создать, протестировать и опубликовать такой набор.

Если у вас есть проект приложения с мгновенным запуском, в котором используется устаревший плагин com.android.feature, узнайте, как перейти на наборы Android App Bundle.

Настройте среду разработки

Чтобы добавить в набор App Bundle функцию мгновенного запуска, вам потребуется доступ к Google Play Instant Development SDK. Установить SDK можно одним из следующих способов:

  • Установите Android Studio 3.6 или более поздней версии. Откройте Android Studio и скачайте Google Play Instant Development SDK на вкладке SDK Tools в SDK Manager.
  • Установка из командной строки:

    cd path/to/android/sdk/tools/bin && \
      ./sdkmanager 'extras;google;instantapps'
    

Кроме того, если вы хотите протестировать приложение с мгновенным запуском локально, вам понадобится физическое или виртуальное устройство.

Ознакомьтесь с необходимыми условиями выполнения

Google Play Instant запускает наборы App Bundle с мгновенным запуском в специальной изолированной среде SELinux для дополнительной безопасности. В этой песочнице разрешен ограниченный набор разрешений и типов взаимодействия с другими приложениями. Ниже подробно описаны характеристики этой песочницы.

Поддерживаемые разрешения и операции

Наборы App Bundle с мгновенным запуском могут использовать только разрешения из следующего списка:

Как работать с неподдерживаемыми разрешениями

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

  • ACCESS_WIFI_STATE: используйте ACCESS_NETWORK_STATE, который предоставляет информацию, аналогичную ACCESS_WIFI_STATE.
  • BILLING: это разрешение больше не поддерживается. Используйте библиотеку Google Play Платежей, для которой больше не требуется разрешение com.android.vending.BILLING.
  • READ/WRITE_EXTERNAL_STORAGE: у приложений с мгновенным запуском нет доступа к внешнему хранилищу. Используйте внутреннее.
  • com.google.android.c2dm.permission.RECEIVE и permission.C2D_MESSAGE: C2DM больше не поддерживается. Перейдите на Firebase Cloud Messaging (FCM). Для работы FCM не требуются дополнительные разрешения.

Кроме того, наборы App Bundle с мгновенным запуском не могут:

Доступ к установленным приложениям

При разработке приложения с мгновенным запуском помните, что оно не может взаимодействовать с установленными на устройстве приложениями, если не выполняется одно из следующих условий:

  • Для одного или нескольких действий в установленном приложении задан элемент android:visibleToInstantApps со значением true. Этот элемент доступен для приложений, работающих на устройствах с Android 8.0 (уровень API 26) или более поздней версии.
  • В установленном приложении есть фильтр интентов, который включает CATEGORY_BROWSABLE.
  • Приложение с мгновенным запуском отправляет намерение, используя действие ACTION_SEND, ACTION_SENDTO или ACTION_SEND_MULTIPLE.

Как настроить проект для мгновенного запуска

Чтобы набор App Bundle с мгновенным запуском был совместим с Google Play Instant, необходимо тщательно настроить несколько аспектов. Ниже описаны эти факторы.

Объявление зависимостей проекта

Чтобы использовать API Google Play Instant в приложении, добавьте в файл конфигурации build.gradle модуля приложения следующее объявление:

Яркий

implementation "com.google.android.gms:play-services-instantapps:17.0.0"

Kotlin

implementation("com.google.android.gms:play-services-instantapps:17.0.0")

Укажите правильные коды версий

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

Чтобы схема управления версиями соответствовала ожиданиям пользователей, выберите одну из следующих стратегий:

  • Начните нумерацию версий для Google Play Instant с единицы.
  • Увеличьте код версии устанавливаемого APK-файла на большое число, например на 1000, чтобы у вас было достаточно места для увеличения номера версии приложения с мгновенным запуском.

Вы можете разрабатывать приложение с мгновенным запуском и устанавливаемое приложение в двух разных проектах Android Studio. Однако в этом случае для публикации приложения в Google Play вам потребуется:

  1. Используйте одно и то же название пакета в обоих проектах Android Studio.
  2. Загрузите оба варианта в одно приложение в Google Play Console.

Подробнее о том, как указать версию приложения…

Обновите целевую версию изолированной среды

Файл AndroidManifest.xml приложения с мгновенным запуском нужно обновить, чтобы он был нацелен на среду изолированной программной среды, которую поддерживает Google Play Instant. Для этого добавьте атрибут android:targetSandboxVersion в элемент <manifest> приложения, как показано в следующем фрагменте кода:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Дополнительную информацию можно найти в документации по атрибуту targetSandboxVersion.

Как объявить модули приложения с мгновенным запуском

Указать, что набор App Bundle поддерживает мгновенный запуск, можно одним из следующих способов:

  • Если у вас есть набор App Bundle, содержащий только основной модуль, вы можете включить мгновенный запуск следующим образом:

    1. Откройте панель Project (Проект), выбрав в строке меню View (Вид) > Tool Windows (Окна инструментов) > Project (Проект).
    2. Нажмите правой кнопкой мыши на базовый модуль (обычно он называется app) и выберите Refactor (Рефакторинг) > Enable Instant Apps Support (Включить поддержку приложений с мгновенным запуском).
    3. В открывшемся диалоговом окне выберите базовый модуль в раскрывающемся меню.
    4. Нажмите ОК.

    Android Studio добавит в манифест модуля следующее объявление:

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • Если у вас уже есть набор App Bundle, содержащий несколько модулей, вы можете создать модуль функции с мгновенным запуском. В результате основной модуль приложения будет поддерживать мгновенный запуск, и вы сможете добавить в приложение несколько точек входа.

Добавьте поддержку входа в аккаунт

Если в приложении с мгновенным запуском есть функция входа, то набор App Bundle должен поддерживать Smart Lock для паролей на устройствах Android. Если вы создаете игру с мгновенным запуском, используйте вход через игровые сервисы Google Play.

Поддержка среды выполнения

Чтобы обеспечить совместимость с изолированной средой SELinux, в которой запускаются приложения с мгновенным запуском, при создании набора App Bundle учитывайте следующее:

  • Не передавайте значение myUid(), которое является UID, назначенным ядром для процесса приложения.
  • Если ваше приложение предназначено для Android 8.1 (уровень API 27) или более ранней версии, создайте файл конфигурации сетевой безопасности и задайте для параметра cleartextTrafficPermitted значение false. Мгновенные впечатления не поддерживают трафик HTTP. В приложениях, предназначенных для Android 9 или более поздней версии, трафик в виде открытого текста по умолчанию отключен.
  • Приложение с мгновенным запуском остается на устройстве пользователя, пока не будет очищен кеш. Это происходит в следующих случаях:

    • Кеш версии с мгновенным запуском очищается, когда на устройстве заканчивается свободная память.
    • Пользователь перезапускает устройство.

    Если это произойдет, пользователю придется скачать приложение с мгновенным запуском заново, чтобы взаимодействовать с ним.

  • Если на устройстве недостаточно места, пользовательские данные приложения с мгновенным запуском могут быть удалены из внутренней памяти. Поэтому рекомендуется периодически синхронизировать пользовательские данные с сервером приложения, чтобы сохранить прогресс пользователя.

Добавьте логику для рабочих процессов мгновенного опыта

После того как вы настроите набор App Bundle для поддержки версий с мгновенным запуском, добавьте логику, описанную в следующих разделах.

Проверьте, запущено ли приложение с мгновенным запуском

Если логика приложения зависит от того, использует ли пользователь приложение с мгновенным запуском, вызовите метод isInstantApp(). Этот метод возвращает true, если текущий процесс является приложением с мгновенным запуском.

Показывать подсказку об установке

Если вы создаете пробную версию приложения или игры, Google Play Instant позволяет показывать в ней приглашение установить полную версию на устройство. Чтобы показать это приглашение, используйте метод InstantApps.showInstallPrompt(), как показано в следующем фрагменте кода:

Kotlin

class MyInstantExperienceActivity : AppCompatActivity {
    // ...
    private fun showInstallPrompt() {
        val postInstall = Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name)

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(this@MyInstantExperienceActivity,
                postInstall, request-code, /* referrer= */ null)
    }
}

Java

public class MyInstantExperienceActivity extends AppCompatActivity {
    // ...
    private void showInstallPrompt() {
        Intent postInstall = new Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name);

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(MyInstantExperienceActivity.this,
                postInstall, request-code, /* referrer= */ null);
    }
}

Перенос данных в установленное приложение

Если пользователю понравится приложение с мгновенным запуском, он может решить установить его полную версию. Чтобы обеспечить удобство работы, важно перенести данные пользователя из приложения с мгновенным запуском в полную версию.

Если пользователь работает на устройстве с Android 8.0 (уровень API 26) или более поздней версии и в вашем приложении указан targetSandboxVersion со значением 2, то данные пользователя автоматически переносятся в полную версию приложения. В противном случае вам придется перенести их вручную. Для этого используйте один из следующих API:

  • Для пользователей устройств с Android 8.0 (уровень API 26) и более поздних версий используйте Cookie API – пример приложения.
  • Если пользователи могут взаимодействовать с вашим продуктом на устройствах с Android 7.1 (API уровня 25) и более ранними версиями, добавьте поддержку Storage API. Пример приложения

Создайте набор App Bundle

Создать набор App Bundle с мгновенным запуском можно в Android Studio или интерфейсе командной строки.

Android Studio

Чтобы создать набор App Bundle в Android Studio, выберите Build (Сборка) > Build Bundle(s) / APK(s) (Создать наборы App Bundle/файлы APK) > Build Bundle(s) (Создать наборы App Bundle). Подробнее о том, как создать проект…

Интерфейс командной строки

Вы также можете создать набор App Bundle из командной строки с помощью Gradle.

Поддержка 64-разрядных устройств

Приложения, опубликованные в Google Play, должны поддерживать 64-разрядную архитектуру. Добавление 64-разрядной версии приложения повышает его производительность и позволяет подготовиться к выпуску устройств, поддерживающих только 64-разрядные версии приложений. Подробнее о поддержке 64-разрядных систем…

Как протестировать приложение с функцией мгновенного запуска

Прежде чем опубликовать набор App Bundle с мгновенным запуском, вы можете протестировать его работу в одном из следующих мест:

Android Studio

Чтобы протестировать приложение с мгновенным запуском на локальном компьютере с помощью Android Studio, выполните следующие действия:

  1. Если на тестовом устройстве установлена версия вашего приложения, удалите ее.
  2. В Android Studio на вкладке General (Общие) в диалоговом окне Run/Debug Configurations (Конфигурации запуска/отладки) установите флажок Deploy as instant app (Развернуть как приложение с мгновенным запуском).
  3. В строке меню выберите Run (Запустить) > Run (Запустить) или нажмите Run (Запустить) на панели инструментов, а затем выберите устройство, на котором вы хотите протестировать мгновенный запуск приложения. На выбранном тестовом устройстве загрузится версия приложения с мгновенным запуском.

Интерфейс командной строки

Чтобы протестировать приложение с мгновенным запуском на локальном компьютере с помощью командной строки, выполните следующие действия:

  1. Если на тестовом устройстве установлена версия вашего приложения, удалите ее.
  2. Установите и запустите приложение с мгновенным запуском на тестовом устройстве, введя следующую команду:
ia run output-from-build-command

Канал внутреннего тестирования

Чтобы протестировать мгновенный запуск приложения из Google Play или баннера на сайте, опубликуйте приложение на канале внутреннего тестирования в Play Console.

Чтобы опубликовать приложение на канале внутреннего тестирования, выполните следующие действия:

  1. Загрузите набор App Bundle, следуя инструкциям в руководстве Как загрузить набор App Bundle в Play Console.
  2. Подготовьте загруженный набор App Bundle к выпуску на канале внутреннего тестирования. Подробнее о том, как подготовить и опубликовать выпуск…
  3. Войдите в аккаунт внутреннего тестировщика на устройстве и запустите приложение с мгновенным запуском одним из следующих способов:

    • Кнопка Попробовать на странице приложения в Google Play.
    • Ссылка из баннера на сайте приложения.

Опубликуйте набор App Bundle в рабочей версии

Чтобы опубликовать набор App Bundle с мгновенным запуском, выполните следующие действия:

  1. Если вы ещё этого не сделали, подпишите набор App Bundle ключом выпуска и загрузите набор в Play Console.
  2. В Play Console выберите Управление релизами > Приложения для Android с мгновенным запуском и перейдите к рабочей версии приложения с мгновенным запуском.
  3. Нажмите Обновить из библиотеки и выберите загруженный набор App Bundle с мгновенным запуском.

Выберите, где опубликовать приложение с функцией мгновенного запуска

Вы можете запустить приложение с мгновенным запуском в некоторых странах и регионах, где доступна его установка. Это полезно, если вы хотите продвигать приложение с мгновенным запуском среди пользователей, проживающих в определенных странах и регионах.

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

Дополнительную информацию о создании приложений с мгновенным запуском и наборов Android App Bundle можно найти в следующих ресурсах:

Видео: как быстро создать пакет приложения
Узнайте, как добавить приложение с мгновенным запуском в Набор Android App Bundle, из этого видео с Саммита для разработчиков Android 2018.
Видео: как публиковать приложения меньшего размера с помощью наборов Android App Bundle
Узнайте, как наборы App Bundle помогают быстрее разрабатывать приложения и создавать APK-файлы меньшего размера.
Практическая работа: ваш первый набор Android App Bundle
Пошаговое руководство по созданию набора Android App Bundle и добавлению в него функций.
Формат Android App Bundle
Узнайте больше о том, как программа командной строки bundletool создает набор App Bundle из кода и ресурсов приложения.