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ę kierując się opinią deweloperów i naszymi ciągłymi inwestycjami 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 przekierują ich do określonych ścieżek lub funkcji.

Czynności konfigurowania aplikacji do uruchamiania w Aplikacji błyskawicznej w Google Play, opisane w artykule Tworzenie pierwszej aplikacji błyskawicznej, dotyczą również 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 aplikacjach błyskawicznych w Google Play.

Przed opublikowaniem gry, która może działać 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 Google Play. Możesz też uruchomić tę aktywność bezpośrednio za pomocą interfejsu Deep Link API.

Określ prawidłowe kody wersji

Kod wersji wersji błyskawicznej gry musi być mniejszy niż kod wersji gry do zainstalowania. Wersjonowanie aplikacji w ten sposób umożliwia graczom przejście z aplikacji błyskawicznej w Google Play do pobrania i zainstalowania gry na urządzeniu. Platforma Android 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.

Grę natychmiastową i grę instalacyjną możesz tworzyć w 2 oddzielnych projektach Androida 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 sekcjach poniżej.

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 konfiguracji zabezpieczeń sieci. 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 do momentu wyczyszczenia pamięci podręcznej aplikacji błyskawicznej, co następuje w jednej z tych sytuacji:

  • Pamięć podręczna aplikacji błyskawicznej została oczyszczona, ponieważ na urządzeniu jest mało dostępnej 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 używanych przez grę.
  • Bloaty McBloatface: wyświetla profil rozmiaru plików binarnych.
  • Android GPU Inspector: sprawdź wpływ zmniejszenia rozmiaru tekstury 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 takiej samej jakości jak obrazy 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ć dostarczanie 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 15-megabajtowym pliku APK, 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 pliku APK. Podczas 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 dane gry i poziomu. 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.

Stosowanie sprawdzonych metod dotyczących wygody użytkownika

Po skonfigurowaniu gry tak, aby obsługiwała wersje błyskawiczne, dodaj logikę przedstawioną w kolejnych sekcjach, aby zapewnić użytkownikom dobrą jakość.

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 funkcji błyskawicznych

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

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 wyświetlić graczowi prośbę 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 instalację, znajdziesz w artykule Sprawdzone metody dotyczące UX w przypadku gier w Aplikacji błyskawicznej w Google Play.

Przenoszenie danych do zainstalowanej usługi

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 są automatycznie przenoszone do pełnej wersji gry. W przeciwnym razie musisz ręcznie przenieść dane dotyczące postępów gracza. W tym celu użyj interfejsu Cookie API – przykładowa aplikacja

Dodatkowe materiały

Więcej informacji o Aplikacjach błyskawicznych w Google Play znajdziesz w tych materiałach:

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