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

Предупреждение: 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>

Эта активность запускается, когда пользователь нажимает кнопку Try Now в Play Store или кнопку Instant play в приложении Google Play Games. Вы также можете запустить эту активность напрямую с помощью API deep link .

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

Код версии мгновенного опыта вашей игры должен быть меньше кода версии устанавливаемой игры. Версионирование вашего приложения таким образом позволяет игрокам перейти от мгновенного опыта 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/конфигурация_безопасности_сети.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 Analyzer : обеспечивает целостное представление содержимого скомпилированного APK. Используя это представление, вы можете определить количество байтов, которые каждый элемент вносит в общий размер. Используйте этот инструмент для быстрой проверки размера ресурсов, активов, логики и собственных библиотек, которые использует ваша игра.
  • Bloaty McBloatface : показывает профиль размера двоичных файлов.
  • Android GPU Inspector : посмотрите, как уменьшение размера текстуры влияет на размер файла, не перекомпилируя игру.

Методы

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

  • Извлеките часть логики вашей игры и поместите ее в один или несколько функциональных модулей , которые не учитываются при подсчете ограничения по размеру.
  • Уменьшите разрешение текстур вашей игры.
  • Рассмотрите возможность использования формата WebP , особенно если вы используете несжатые текстуры на GPU. Формат 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 , то прогресс игрока автоматически переносится в полную версию вашей игры. В противном случае вам необходимо вручную перенести данные, связанные с прогрессом игрока. Для этого используйте API Cookie - пример приложения

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

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

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