Вы создаете функцию Google Play Instant, включая ее в пакет приложений Android . Такой пакет называется пакетом приложений с мгновенной поддержкой . В этом документе показано, как настроить среду разработки для пакетов приложений с мгновенной поддержкой, а также как настроить, собрать, протестировать и опубликовать пакет приложений с мгновенной поддержкой.
Если у вас есть проект приложения с мгновенным запуском, в котором используется устаревший плагин функции ( com.android.feature
), узнайте, как перенести свое приложение с мгновенным запуском для поддержки пакетов приложений Android .
Настройка среды разработки
Чтобы обеспечить мгновенную работу с пакетом приложений, вам необходим доступ к Google Play Instant Development SDK. Установить 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_COARSE_LOCATION
-
ACCESS_FINE_LOCATION
-
ACCESS_NETWORK_STATE
-
BILLING
– прекращено с версии Play Billing Library 1.0 . -
CAMERA
-
INSTANT_APP_FOREGROUND_SERVICE
– только в Android 8.0 (уровень API 26) и выше. -
INTERNET
-
READ_PHONE_NUMBERS
– только в Android 8.0 (уровень API 26) и выше. -
RECORD_AUDIO
-
VIBRATE
-
WAKE_LOCK
Обработка распространенных неподдерживаемых разрешений
Ниже приведен список распространенных неподдерживаемых разрешений, которые необходимо удалить из вашего приложения, а также рекомендуемый путь миграции для каждого из них:
-
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 не нужны никакие дополнительные разрешения.
Кроме того, пакеты приложений с мгновенным запуском не могут выполнять следующие действия:
- Используйте фоновые службы .
- Отправлять уведомления при работе в фоновом режиме.
Доступ к установленным приложениям
При разработке мгновенного интерфейса имейте в виду, что он не может взаимодействовать с установленными приложениями на устройстве, если не выполняется одно из следующих условий:
- Одно или несколько действий в установленном приложении установили для элемента
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 Instant к загрузке и установке приложения на свое устройство. Платформа Android считает этот переход обновлением приложения.
Чтобы убедиться, что вы следуете схеме управления версиями, которую ожидают пользователи, следуйте одной из следующих стратегий:
- Перезапустите коды версий Google Play Instant с 1.
- Увеличьте код версии устанавливаемого APK на большое число, например 1000, чтобы обеспечить достаточно места для увеличения номера версии вашего мгновенного интерфейса.
Разрабатывать мгновенное приложение и устанавливаемое приложение можно в двух отдельных проектах Android Studio. Однако в этом случае вам необходимо сделать следующее, чтобы опубликовать свое приложение в Google Play:
- Используйте одно и то же имя пакета в обоих проектах Android Studio.
- В консоли Google Play загрузите оба варианта в одно приложение.
Дополнительные сведения о настройке версии вашего приложения см. в разделе Версия вашего приложения .
Обновите целевую версию песочницы
Файл AndroidManifest.xml
вашего приложения с мгновенным запуском необходимо обновить, чтобы он соответствовал среде песочницы, которую поддерживает Google Play Instant. Вы можете завершить это обновление, добавив атрибут android:targetSandboxVersion
в элемент <manifest>
вашего приложения, как показано в следующем фрагменте кода:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
...
android:targetSandboxVersion="2" ...>
Дополнительные сведения см. в документации по атрибуту targetSandboxVersion
.
Объявить модули приложения с мгновенной поддержкой
Вы можете объявить, что ваш пакет приложений поддерживает мгновенные возможности, используя один из следующих методов:
Если у вас есть пакет приложений, который содержит только базовый модуль , вы можете мгновенно включить пакет приложений следующим образом:
- Откройте панель «Проект» , выбрав «Просмотр» > «Окна инструментов» > «Проект» в строке меню.
- Щелкните правой кнопкой мыши базовый модуль, обычно называемый «приложением», и выберите «Рефакторинг» > «Включить поддержку мгновенных приложений» .
- В появившемся диалоговом окне выберите базовый модуль из раскрывающегося меню.
- Нажмите ОК .
Android Studio добавляет в манифест модуля следующее объявление:
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
Если у вас есть пакет приложений, содержащий несколько модулей, вы можете создать функциональный модуль с мгновенной поддержкой . Этот процесс также мгновенно активирует базовый модуль вашего приложения, давая вам возможность поддерживать несколько мгновенных точек входа в вашем приложении.
Добавить поддержку входа в систему
Если ваш мгновенный интерфейс позволяет пользователям входить в систему, ваш пакет приложений с мгновенным запуском должен поддерживать Smart Lock для паролей на Android . Если вы создаете игру с мгновенным запуском , вам следует вместо этого использовать вход в игровые сервисы Google Play .
Поддержка среды выполнения
Чтобы обеспечить совместимость с песочницей SELinux, в которой запускаются мгновенные взаимодействия, при создании пакета приложений с мгновенной поддержкой учитывайте следующее:
- Не передавайте значение
myUid()
, которое является UID , назначенным ядром вашего приложения. - Если ваше приложение предназначено для Android 8.1 (уровень API 27) или более ранней версии, создайте файл конфигурации сетевой безопасности и задайте для параметра
cleartextTrafficPermitted
значениеfalse
. Мгновенные возможности не поддерживают HTTP-трафик. Для приложений, ориентированных на Android 9 или более позднюю версию, трафик открытого текста отключен по умолчанию. Ваш Instant Experience остается загруженным на устройство пользователя до тех пор, пока кэш Instant Experience не будет очищен, что происходит в одной из следующих ситуаций:
- Кэш Instant Experience очищается от мусора, поскольку на устройстве недостаточно доступной памяти.
- Пользователь перезагружает свое устройство.
Если происходит какой-либо процесс, пользователю необходимо повторно загрузить ваш мгновенный интерфейс, чтобы взаимодействовать с ним.
Если в системе очень мало места для хранения, возможно, пользовательские данные вашего мгновенного опыта будут удалены из внутренней памяти. Поэтому рекомендуется периодически синхронизировать пользовательские данные с сервером вашего приложения, чтобы прогресс пользователя сохранялся.
Добавьте логику для рабочих процессов мгновенного взаимодействия
После настройки пакета приложений для поддержки мгновенного взаимодействия добавьте логику, показанную в следующих разделах.
Проверьте, работает ли приложение с мгновенным интерфейсом
Если какая-то логика вашего приложения зависит от того, вовлечен ли пользователь в вашу мгновенную работу, вызовите метод 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) } }
Ява
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 — пример приложения.
Создайте пакет приложений
Вы можете использовать Android Studio или интерфейс командной строки для создания пакета приложений с мгновенной поддержкой.
Android-студия
Используя Android Studio, вы можете создать пакет приложений, выбрав «Сборка» > «Сборка пакетов» / «APK» > «Сборка пакетов» . Дополнительные сведения о создании проекта см. в разделе Создание проекта .
Интерфейс командной строки
Вы также можете собрать пакет приложений из командной строки с помощью Gradle.
Поддержка 64-битных архитектур
Приложения, опубликованные в Google Play, должны поддерживать 64-битную архитектуру. Добавление 64-разрядной версии вашего приложения обеспечивает повышение производительности и позволяет использовать устройства только с 64-разрядным оборудованием. Узнайте больше о поддержке 64-разрядных версий .
Проверьте мгновенный опыт
Прежде чем публиковать пакет приложений с поддержкой мгновенного запуска, вы можете протестировать его работу в одном из следующих мест, чтобы проверить функциональность:
- Установите на локальное устройство с помощью Android Studio .
- Установите на локальное устройство с помощью интерфейса командной строки .
- Опубликуйте на внутренней тестовой версии в консоли Google Play.
Android-студия
Чтобы протестировать мгновенную работу вашего приложения на локальном компьютере с помощью Android Studio, выполните следующие действия:
- Если на тестовом устройстве установлена версия приложения, удалите ее.
- В Android Studio в параметрах установки, которые отображаются на вкладке «Общие» диалогового окна «Конфигурации запуска/отладки» , установите флажок «Развернуть как приложение с мгновенным запуском» .
- Выберите «Выполнить» > «Выполнить» в строке меню или нажмите « Выполнить» .
на панели инструментов, затем выберите устройство, на котором вы хотите протестировать мгновенную работу вашего приложения. Мгновенная работа вашего приложения загружается на выбранное вами тестовое устройство.
Интерфейс командной строки
Чтобы протестировать мгновенную работу вашего приложения на локальном компьютере с помощью командной строки, выполните следующие шаги:
- Если на тестовом устройстве установлена версия приложения, удалите ее.
- Загрузите неопубликованное приложение и запустите его на тестовом устройстве, введя следующую команду:
ia run output-from-build-command
Внутренний тестовый трек
Чтобы протестировать мгновенную работу вашего приложения из Play Store или баннера на своем веб-сайте, опубликуйте приложение на внутренней тестовой дорожке в Play Console.
Чтобы опубликовать свое приложение на внутренней тестовой версии, выполните следующие действия:
- Загрузите пакет приложений, выполнив действия, описанные в руководстве по загрузке пакета приложений в Play Console .
- Подготовьте загруженный пакет к выпуску для внутренней тестовой версии. Дополнительную информацию см. в статье поддержки о том, как подготовить и развернуть выпуски .
Войдите во внутреннюю учетную запись тестера на устройстве, а затем запустите мгновенный опыт с одной из следующих поверхностей:
- Кнопка «Попробовать сейчас» на странице вашего приложения в Play Store.
- Ссылка с баннера на сайте вашего приложения.
Опубликуйте пакет приложений в рабочей версии
Чтобы опубликовать пакет приложений с мгновенной поддержкой, выполните следующие действия:
- Если вы еще этого не сделали, подпишите свой пакет приложений ключом выпуска и загрузите его в Play Console .
- В Play Console откройте «Управление выпуском» > «Приложения Android с мгновенным запуском» и перейдите к этапу создания приложений с мгновенным запуском .
- Выберите «Обновить из библиотеки» , затем выберите загруженный вами пакет приложений с мгновенной поддержкой.
Выберите, где опубликовать свой мгновенный опыт
Вы можете запустить мгновенное использование вашего приложения в некоторых странах и регионах, где люди могут установить ваше приложение. Эта возможность полезна в тех случаях, когда вы хотите рекламировать мгновенное взаимодействие с вашим приложением среди пользователей, проживающих в определенном наборе стран и регионов.
Дополнительные ресурсы
Чтобы узнать больше о создании мгновенных возможностей и наборов приложений для Android, посетите следующие ресурсы:
- Видео: Мгновенное объединение приложения
- Узнайте, как добавить мгновенный интерфейс в пакет приложений Android, в этом сеансе Android Dev Summit '18.
- Видео: Публикация небольших приложений с помощью Android App Bundle
- Узнайте, как пакеты App Bundle помогают быстрее разрабатывать приложения и создавать APK-файлы меньшего размера для пользователей.
- Codelab: ваш первый пакет приложений для Android
- Пошаговое руководство по созданию пакета приложений Android и добавлению в него функций.
- Формат пакета приложений для Android
- Узнайте больше о том, как программа командной строки
bundletool
организует пакет приложений из кода и ресурсов вашего приложения.