Преобразование существующей игры в мгновенную игру

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

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

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

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

Вы можете разрабатывать игры для Google Play Instant, используя Unityплагином Google Play Instant Unity или без него), Cocos2D , Android Studio или свой собственный движок.

Это руководство предполагает, что вы уже знаете, какой игровой опыт хотите предоставить. Если вы хотите узнать идеи и рекомендации по созданию качественных игр, ознакомьтесь с рекомендациями по UX-дизайну для игр в Google Play Instant .

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

Действие, включающее следующий фильтр намерений, становится точкой входа для Google Play Instant:

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

Это действие запускается, когда пользователь нажимает кнопку «Попробовать сейчас» в Play Маркете или кнопку «Мгновенное воспроизведение» в приложении Google Play Игры. Вы также можете запустить это действие напрямую, используя API глубокой ссылки .

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

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

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

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

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

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

Более подробную информацию о настройке версии игры можно найти в разделе Версия вашего приложения .

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

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

Отказаться от открытого текстового трафика

Игры в Google Play Instant не поддерживают HTTP-трафик. Если ваша игра предназначена для Android 9 (уровень API 28) или выше, Android по умолчанию отключает поддержку открытого текста в вашей игре.

Однако, если ваша игра предназначена для Android 8.1 (уровень API 27) или ниже, необходимо создать файл конфигурации сетевой безопасности . В этом файле установите для cleartextTrafficPermitted значение false , как показано в следующем фрагменте кода:

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

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

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

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

Более подробную информацию см. в документации по атрибуту targetSandboxVersion .

Не полагайтесь на наличие кэша или данных приложения

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

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

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

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

Уменьшите размер вашего приложения

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

Инструменты

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

  • Анализатор APK : предоставляет целостное представление содержимого скомпилированного APK-файла. С помощью этого представления можно определить, сколько байтов каждый элемент вносит в общий размер. Используйте этот инструмент для быстрой проверки размера ресурсов, ресурсов, логики и нативных библиотек, используемых вашей игрой.
  • Bloaty McBloatface : показывает профиль размера двоичных файлов.
  • Android GPU Inspector : посмотрите, как уменьшение размера текстуры влияет на размер файла без необходимости перекомпиляции игры.

Методы

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

  • Извлеките часть логики вашей игры и поместите ее в один или несколько функциональных модулей , которые не учитываются при подсчете ограничения по размеру.
  • Уменьшите разрешение текстур вашей игры.
  • Рассмотрите формат WebP , особенно если вы используете несжатые текстуры на видеокарте. Формат WebP создаёт изображения такого же качества, как JPEG, но на 15–30% меньше. Хотя распаковка изображений WebP занимает больше времени, это время всё равно значительно меньше времени загрузки текстур вашей игры. Google также интегрировала этот формат в игровой движок с открытым исходным кодом .
  • Сжимайте или повторно используйте звуки и музыку.
  • Используйте различные флаги компиляции, чтобы уменьшить размер двоичного файла:
    • -fvisibility=hidden – Самый важный. В cmake его можно указать следующим образом:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz – Также важно для уменьшения размера. Если вы компилируете с помощью gcc , используйте -Os .
    • -flto – Иногда уменьшает размер файла.
    • Флаги компоновщика – используйте --gc-sections вместе с флагами компилятора, такими как -ffunction-sections и -fdata-sections .
  • Используйте Proguard для сокращения размера кода и ресурсов .
  • Используйте Gradle 4.4 или выше для создания DEX-файлов меньшего размера.
  • Реализовать облачную доставку активов .

Разделите большую игру на несколько APK-файлов

Оптимизировать работу Google Play Instant так, чтобы игра поместилась в один APK-файл размером 15 МБ, может быть сложно, даже после применения рекомендаций по уменьшению размера APK . Чтобы решить эту проблему, можно разделить игру на несколько APK-файлов. Игроки начинают со загрузки основного, базового APK-файла; по мере игры остальные разделённые APK-файлы становятся доступны игре в фоновом режиме.

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

Внедрение лучших практик UX

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

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

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

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

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

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

Отобразить приглашение к установке

Если вы создали пробную версию Google Play Instant, в какой-то момент игра должна предложить игроку установить полную версию на своё устройство. Для этого используйте метод showInstallPrompt() в API Google для Android .

Дополнительную информацию о том, как и когда следует предлагать проигрывателю выполнить установку, см. в разделе Рекомендации по UX для игр в Google Play Instant .

Передача данных в установленный опыт

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

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

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

Узнайте больше о Google Play Instant из этих дополнительных ресурсов:

Codelab: Создайте свое первое мгновенное приложение
Добавить поддержку Google Play Instant в существующее приложение.
Codelab: Создание многофункционального мгновенного приложения
Модулируйте многофункциональное приложение.