Создайте пакет приложений с мгновенной поддержкой

Внимание: функция Google Play Instant больше не будет доступна. Начиная с декабря 2025 года, публикация Instant-приложений через Google Play будет невозможна, и все API Instant для сервисов Google Play перестанут работать. Пользователи больше не смогут получать Instant-приложения от Play никаким способом.

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

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

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

Если у вас есть существующий проект мгновенного приложения, использующий устаревший плагин функций ( com.android.feature ), узнайте, как перевести ваше мгновенное приложение на поддержку Android App Bundles .

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

Для мгновенной загрузки приложения в пакет необходимо иметь доступ к SDK для мгновенной разработки Google Play. Установить SDK можно одним из следующих способов:

  • Установите Android Studio версии 3.6 или выше. После открытия Android Studio загрузите Google Play Instant Development SDK со вкладки «Инструменты SDK» в менеджере SDK .
  • Установка из командной строки:

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

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

Узнайте о необходимых условиях выполнения.

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

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

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

Обработка распространенных неподдерживаемых разрешений

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

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

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

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

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

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

Настройте свой проект для мгновенного доступа к контенту.

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

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

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

Классный

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

Котлин

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

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

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

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

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

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

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

Для получения более подробной информации о настройке версии вашего приложения см. раздел «Версионирование вашего приложения» .

Обновите версию целевой песочницы.

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

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

Для получения более подробной информации см. документацию по атрибуту targetSandboxVersion .

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

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

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

    1. Откройте панель «Проект» , выбрав в строке меню пункт «Вид» > «Окна инструментов» > «Проект» .
    2. Щелкните правой кнопкой мыши по базовому модулю, обычно называемому «app», и выберите «Рефакторинг» > «Включить поддержку мгновенных приложений» .
    3. В появившемся диалоговом окне выберите базовый модуль из выпадающего меню.
    4. Нажмите ОК .

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

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

Добавить поддержку авторизации.

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

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

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

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

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

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

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

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

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

Проверьте, работает ли приложение в режиме мгновенного просмотра.

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

Отобразить запрос на установку.

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

Котлин

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) и ниже, добавьте поддержку API хранилища — пример приложения.

Соберите пакет приложения

Для создания готового к использованию пакета приложения можно использовать либо Android Studio, либо интерфейс командной строки.

Android Studio

В Android Studio вы можете собрать пакет приложения, выбрав Build > Build Bundle(s) / APK(s) > Build Bundle(s) . Для получения дополнительной информации о сборке проекта см. раздел «Сборка проекта» .

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

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

Поддержка 64-битных архитектур

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

Оцените мгновенный опыт использования.

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

Android Studio

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

  1. Если на тестовом устройстве установлена ​​версия вашего приложения, удалите её.
  2. В Android Studio в параметрах установки, отображаемых на вкладке «Общие» диалогового окна «Настройки запуска/отладки» , установите флажок «Развернуть как мгновенное приложение» .
  3. Выберите «Выполнить» > «Выполнить» в строке меню или нажмите «Выполнить». На панели инструментов выберите устройство, на котором вы хотите протестировать мгновенный доступ к приложению. Мгновенный доступ к приложению загрузится на выбранном вами тестовом устройстве.

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

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

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

Внутренний испытательный полигон

Чтобы проверить мгновенный доступ к вашему приложению из Play Store или баннера на вашем веб-сайте, опубликуйте приложение во внутренний тестовый движок в Play Console.

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

  1. Загрузите пакет своего приложения, следуя инструкциям в руководстве «Загрузка пакета приложения в Play Console» .
  2. Подготовьте загруженный пакет для выпуска во внутреннюю тестовую среду. Для получения дополнительной информации см. статью поддержки о том, как подготовить и выпустить релизы .
  3. Войдите во внутреннюю учетную запись тестировщика на устройстве, а затем запустите тестовое приложение с одной из следующих платформ:

    • Кнопка «Попробовать сейчас» на странице вашего приложения в Play Store.
    • Ссылка с баннера на веб-сайте вашего приложения.

Опубликуйте пакет приложения в рабочую среду (production track).

Для публикации пакета приложения с мгновенной активацией выполните следующие шаги:

  1. Если вы еще этого не сделали, подпишите пакет вашего приложения с помощью ключа выпуска и загрузите пакет приложения в Play Console .
  2. В консоли Play откройте «Управление релизами» > «Android Instant Apps» , затем перейдите к разделу «Создание мгновенных приложений» .
  3. Выберите «Обновить из библиотеки» , затем выберите загруженный вами пакет приложений с мгновенным включением.

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

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

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

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

Видео: Мгновенная интеграция приложения в пакет.
В этом докладе с Android Dev Summit '18 вы узнаете, как добавить мгновенный пользовательский опыт в Android App Bundle.
Видео: Публикуйте небольшие приложения с помощью Android App Bundle.
Узнайте, как пакеты приложений помогают вам быстрее разрабатывать приложения и создавать более компактные APK-файлы для ваших пользователей.
Codelab: Ваш первый пакет приложений для Android
Пошаговое руководство по созданию пакета приложений для Android и добавлению в него новых функций.
Формат пакета приложений Android
Узнайте больше о том, как программа командной строки bundletool организует пакет приложения из кода и ресурсов вашего приложения.