Przekształć istniejącą grę w grę błyskawiczną

Ostrzeżenie: aplikacja błyskawiczna w Google Play nie będzie już dostępna. Od grudnia 2025 r. nie będzie można publikować aplikacji błyskawicznych w Google Play, a wszystkie interfejsy Instant API Usług Google Play przestaną działać. Użytkownicy nie będą już otrzymywać aplikacji błyskawicznych z Google Play za pomocą żadnego mechanizmu.

Wprowadzamy tę zmianę na podstawie opinii deweloperów i naszych ciągłych inwestycji w ulepszanie ekosystemu od czasu wprowadzenia aplikacji błyskawicznych w Google Play.

Aby nadal optymalizować wzrost liczby użytkowników, zachęcamy deweloperów do kierowania użytkowników do standardowej aplikacji lub gry za pomocą precyzyjnych linków, które w razie potrzeby przekierowują ich do określonych ścieżek lub funkcji.

Czynności konfigurowania aplikacji do uruchamiania w Aplikacji błyskawicznej w Google Play, opisane w tym artykule, dotyczą też gier. W tym przewodniku opisujemy niektóre kroki konfiguracji, które są specyficzne dla gier.

Gry na potrzeby aplikacji błyskawicznych w Google Play możesz tworzyć za pomocą Unity (z wtyczką Google Play Instant Unity lub bez niej), Cocos2D, Android Studio lub własnego silnika.

W tym przewodniku zakładamy, że wiesz już, jakiego rodzaju rozgrywkę chcesz zapewnić. Jeśli chcesz poznać pomysły i sprawdzone metody tworzenia wysokiej jakości gier, przeczytaj artykuł Sprawdzone metody dotyczące wrażeń użytkowników w przypadku gier w Google Play Instant.

Przed opublikowaniem gry, którą można uruchomić w Google Play Instant, zapoznaj się z listą kontrolną wymagań technicznych.

Punktem wejścia do aplikacji błyskawicznej w Google Play staje się aktywność, która zawiera ten filtr intencji:

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

Ta aktywność jest uruchamiana, gdy użytkownik kliknie przycisk Wypróbuj teraz w Sklepie Play lub przycisk Natychmiastowa gra w aplikacji Gry Play. Możesz też uruchomić tę aktywność bezpośrednio za pomocą interfejsu Deep Link API.

Określ prawidłowe kody wersji

Kod wersji aplikacji błyskawicznej gry musi być niższy niż kod wersji gry instalowanej. Wersjonowanie aplikacji w ten sposób umożliwia graczom przejście z wersji błyskawicznej w Google Play do pobrania i zainstalowania gry na urządzeniu. Platforma Androida traktuje tę zmianę jako aktualizację aplikacji.

Aby mieć pewność, że stosujesz zalecany schemat wersji, skorzystaj z jednej z tych strategii:

  • Zresetuj kody wersji aplikacji błyskawicznej w Google Play do 1.
  • Zwiększ kod wersji aplikacji instalowanej o dużą liczbę, np. 1000, aby zapewnić wystarczającą ilość miejsca na zwiększenie numeru wersji aplikacji błyskawicznej.

Możesz tworzyć grę natychmiastową i grę do zainstalowania w 2 osobnych projektach Android Studio. Jeśli to zrobisz, aby opublikować grę w Google Play, musisz wykonać te czynności:

  1. Użyj tej samej nazwy pakietu w obu projektach Android Studio.
  2. W Konsoli Google Play prześlij obie wersje do tej samej aplikacji.
Nazwa wersji widoczna dla użytkownika nie podlega żadnym ograniczeniom.

Więcej informacji o ustawianiu wersji gry znajdziesz w artykule Obsługa wersji aplikacji.

Obsługa środowiska wykonawczego

Podobnie jak inne aplikacje, gry w Aplikacjach błyskawicznych w Google Play działają w ograniczonym środowisku testowym na urządzeniu. Aby obsługiwać to środowisko wykonawcze, wykonaj czynności opisane w poniższych sekcjach.

Rezygnacja z ruchu w formie zwykłego tekstu

Gry w Google Play Instant nie obsługują ruchu HTTP. Jeśli Twoja gra jest kierowana na Androida 9 (poziom API 28) lub nowszego, Android domyślnie wyłącza w niej obsługę zwykłego tekstu.

Jeśli jednak Twoja gra jest kierowana na Androida 8.1 (API na poziomie 27) lub starszego, musisz utworzyć plik Network Security Config. W tym pliku ustaw wartość cleartextTrafficPermitted na false, jak pokazano w tym fragmencie kodu:

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>

Aktualizowanie docelowej wersji piaskownicy

Zaktualizuj plik AndroidManifest.xml gry błyskawicznej, aby był kierowany na środowisko piaskownicy obsługiwane przez aplikacje błyskawiczne w Google Play. Aby wprowadzić tę zmianę, dodaj atrybut android:targetSandboxVersion do elementu <manifest> gry, jak pokazano w tym fragmencie kodu:

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

Więcej informacji znajdziesz w dokumentacji atrybutu targetSandboxVersion.

Nie polegaj na obecności pamięci podręcznej ani danych aplikacji

Aplikacja błyskawiczna pozostaje pobrana na urządzeniu użytkownika, dopóki nie zostanie wyczyszczona pamięć podręczna aplikacji błyskawicznej. Dzieje się to w jednej z tych sytuacji:

  • Pamięć podręczna aplikacji błyskawicznej została oczyszczona, ponieważ na urządzeniu brakuje pamięci.
  • Użytkownik ponownie uruchamia urządzenie.

W takim przypadku użytkownik musi ponownie pobrać reklamę natychmiastową, aby móc z niej korzystać.

Jeśli w systemie jest bardzo mało miejsca na dane, dane użytkownika związane z szybką reklamą mogą zostać usunięte z pamięci wewnętrznej. Dlatego zalecamy okresowe synchronizowanie danych użytkownika z serwerem gry, aby zachować postępy użytkownika.

Zmniejszanie rozmiaru aplikacji

W przeciwieństwie do innych typów aplikacji gry w Google Play Instant mają limit rozmiaru pobierania wynoszący 15 MB. Aby utworzyć grę o takim rozmiarze, może być konieczne refaktoryzowanie logiki gry. W tej sekcji opisujemy narzędzia i techniki, które pomogą Ci zoptymalizować rozmiar gry.

Narzędzia

Poniższa lista narzędzi pomoże Ci określić, co wpływa na rozmiar gry:

  • Analizator APK: zapewnia całościowy widok zawartości skompilowanego pliku APK. W tym widoku możesz określić liczbę bajtów, jaką każdy element wnosi do ogólnego rozmiaru. Za pomocą tego narzędzia możesz szybko sprawdzić rozmiar zasobów, komponentów, logiki i bibliotek natywnych, których używa Twoja gra.
  • Bloaty McBloatface: wyświetla profil rozmiaru plików binarnych.
  • Android GPU Inspector: sprawdź, jak zmniejszenie rozmiaru tekstury wpływa na rozmiar pliku bez konieczności ponownej kompilacji gry.

Techniki

Oto lista technik, których możesz użyć, aby zmniejszyć rozmiar gry:

  • Wyodrębnij część logiki gry i umieść ją w co najmniej 1 module funkcji, który nie jest wliczany do limitu rozmiaru.
  • Zmniejsz rozdzielczość tekstur w grze.
  • Rozważ użycie formatu WebP, zwłaszcza jeśli używasz nieskompresowanych tekstur na GPU. Format WebP tworzy obrazy o jakości porównywalnej z obrazami JPEG, ale o 15–30% mniejsze. Chociaż dekompresja obrazów WebP trwa dłużej, czas ten jest nadal znacznie krótszy niż czas pobierania tekstur gry. Google zintegrowało też ten format z silnikiem gry open source.
  • kompresować lub ponownie wykorzystywać dźwięki i muzykę;
  • Użyj różnych flag kompilacji, aby zmniejszyć rozmiar pliku binarnego:
    • -fvisibility=hidden – najważniejszy. W cmake możesz określić go w ten sposób:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz – również ważne w przypadku zmniejszania rozmiaru. Jeśli kompilujesz za pomocą gcc, użyj zamiast tego -Os.
    • -flto – czasami zmniejsza rozmiar pliku.
    • Flagi linkera – używaj --gc-sections w połączeniu z flagami kompilatora, takimi jak -ffunction-sections-fdata-sections.
  • Użyj Proguarda, aby zmniejszyć rozmiar kodu i zasobów.
  • Użyj narzędzia Gradle w wersji 4.4 lub nowszej, aby generować mniejsze pliki DEX.
  • Wdrożyć przesyłanie zasobów w chmurze.

Dzielenie dużej gry na kilka plików APK

Zoptymalizowanie aplikacji błyskawicznej w Google Play tak, aby gra mieściła się w jednym pliku APK o rozmiarze 15 MB, może być trudne, nawet po zastosowaniu zaleceń dotyczących zmniejszenia rozmiaru pliku APK. Aby rozwiązać ten problem, możesz podzielić grę na kilka plików APK. Gracze zaczynają od pobrania głównego, podstawowego pliku APK. W trakcie gry pozostałe podzielone pliki APK są udostępniane w tle.

Na przykład podstawowy plik APK może zawierać główny silnik gry i zasoby wymagane do wyświetlania ekranu wczytywania. Podczas uruchamiania podstawowego pliku APK wyświetla się ekran ładowania i natychmiast wysyłane jest żądanie dodatkowego podzielonego pliku APK, który zawiera grę i dane o poziomach. Gdy podzielony plik APK stanie się dostępny, może załadować zasoby do silnika gry i udostępnić graczowi treści potrzebne do rozpoczęcia rozgrywki.

Wdrażanie sprawdzonych metod dotyczących wygody użytkownika

Po skonfigurowaniu gry tak, aby obsługiwała wersje błyskawiczne, dodaj logikę przedstawioną w sekcjach poniżej, aby zapewnić użytkownikom komfort.

Obsługa architektur 64-bitowych

Aplikacje publikowane w Google Play muszą obsługiwać architektury 64-bitowe. Dodanie 64-bitowej wersji aplikacji zwiększa jej wydajność i przygotowuje ją do działania na urządzeniach z 64-bitowym sprzętem. Więcej informacji o obsłudze systemów 64-bitowych

Sprawdzanie, czy gra korzysta z szybkiego podglądu

Jeśli część logiki gry zależy od tego, czy użytkownik korzysta z Twojej aplikacji błyskawicznej, wywołaj metodę isInstantApp(). Ta metoda zwraca wartość true, jeśli aktualnie uruchomiony proces jest aplikacją natychmiastową.

Dzięki temu możesz określić, czy aplikacja musi działać w ograniczonym środowisku wykonawczym, czy może korzystać z funkcji platformy.

Wyświetlanie prośby o instalację

Jeśli masz wersję próbną aplikacji błyskawicznej w Google Play, w pewnym momencie gra powinna poprosić gracza o zainstalowanie pełnej wersji na urządzeniu. Aby to zrobić, użyj metody showInstallPrompt()interfejsach API Google na Androida.

Więcej informacji o tym, jak i kiedy wyświetlać graczowi prośbę o zainstalowanie gry, znajdziesz w artykule Najlepsze praktyki dotyczące UX w przypadku gier w Aplikacji błyskawicznej w Google Play.

Przenoszenie danych do zainstalowanego doświadczenia

Jeśli graczowi spodoba się wersja próbna, może zdecydować się na zainstalowanie pełnej wersji gry. Aby zapewnić użytkownikom wygodę, ważne jest, aby postępy gracza były przenoszone z wersji natychmiastowej do pełnej wersji gry.

Jeśli gra określa targetSandboxVersion o wartości 2, postępy gracza zostaną automatycznie przeniesione do pełnej wersji gry. W przeciwnym razie musisz przenieść dane dotyczące postępów gracza ręcznie. Aby to zrobić, użyj interfejsu Cookie API – przykładowa aplikacja

Dodatkowe materiały

Więcej informacji o Google Play Instant znajdziesz w tych dodatkowych materiałach:

Ćwiczenia z programowania: tworzenie pierwszej aplikacji błyskawicznej
Dodaj obsługę aplikacji błyskawicznej w Google Play do istniejącej aplikacji.
Ćwiczenia z programowania: tworzenie aplikacji błyskawicznej z wieloma funkcjami
Podziel aplikację z wieloma funkcjami na moduły.