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ą jakiegokolwiek 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.

Deweloperów, którzy chcą nadal optymalizować wzrost liczby użytkowników, zachęcamy 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 działania w Aplikacji błyskawicznej w Google Play, opisane w Tworzenie pierwszej aplikacji błyskawicznej, dotyczą też gier. W tym przewodniku podkreślamy niektóre czynności konfiguracyjne specyficzne dla gier.

Gry na potrzeby Aplikacji błyskawicznej 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ż, jakie wrażenia z gry chcesz zapewnić. Jeśli chcesz poznać pomysły i sprawdzone metody tworzenia gier wysokiej jakości, przeczytaj artykuł Sprawdzone metody na zapewnienie wygody użytkowania w grach w Aplikacji błyskawicznej w Google Play.

Zanim opublikujesz grę, która może działać w Aplikacji błyskawicznej w Google Play, zapoznaj się z listą kontrolną wymagań technicznych.

Punktem wejścia do aplikacji błyskawicznej w Google Play jest 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 Gra błyskawiczna w aplikacji Gry Google Play. Możesz też uruchomić tę aktywność bezpośrednio za pomocą interfejsu Deep Link API.

Określanie prawidłowych kodów wersji

Kod wersji aplikacji błyskawicznej Twojej gry musi być niższy niż kod wersji gry instalowanej. Dzięki takiemu wersjonowaniu aplikacji gracze mogą przejść z aplikacji 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 obsługi 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 mieć pewność, że jest wystarczająco dużo miejsca na zwiększenie numeru wersji aplikacji błyskawicznej.

Możesz tworzyć grę błyskawiczną i grę instalowaną w 2 osobnych projektach Android Studio. Jeśli tak 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.

Więcej informacji o ustawianiu wersji gry znajdziesz w artykule Wersja aplikacji.

Obsługa środowiska wykonawczego

Podobnie jak inne aplikacje, gry w Aplikacji błyskawicznej w Google Play działają w ograniczonej piaskownicy na urządzeniu. Aby obsługiwać to środowisko wykonawcze, wykonaj czynności opisane w kolejnych sekcjach.

Rezygnowanie z ruchu w postaci tekstu nieszyfrowanego

Gry w Aplikacji błyskawicznej w Google Play nie obsługują ruchu HTTP. Jeśli Twoja gra jest kierowana na Androida 9 (poziom interfejsu API 28) lub nowszego, Android domyślnie wyłącza obsługę tekstu nieszyfrowanego w Twojej grze.

Jeśli jednak Twoja gra jest kierowana na Androida 8.1 (poziom interfejsu API 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 Aplikację błyskawiczną w Google Play. Aby wprowadzić tę zmianę, dodaj atrybut android:targetSandboxVersion do elementu <manifest> w grze , 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 jest usuwana przez moduł odśmiecania, ponieważ na urządzeniu brakuje dostępnej pamięci.
  • Użytkownik ponownie uruchamia urządzenie.

W takim przypadku użytkownik musi ponownie pobrać aplikację błyskawiczną, aby móc z niej korzystać.

Jeśli w systemie jest bardzo mało miejsca na dane, dane użytkownika związane z aplikacją błyskawiczną 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 Aplikacji błyskawicznej w Google Play mają limit rozmiaru pobierania wynoszący 15 MB. Aby utworzyć grę o takim rozmiarze, być może trzeba będzie zmienić architekturę logiki gry. W tej sekcji opisujemy narzędzia i techniki, które pomogą Ci zoptymalizować rozmiar gry.

Narzędzia

Ta lista narzędzi może Ci pomóc określić, co wpływa na rozmiar Twojej gry:

  • APK Analyzer: zapewnia całościowy wgląd w zawartość skompilowanego pliku APK. Dzięki temu widokowi możesz określić liczbę bajtów, które każdy element dodaje do ogólnego rozmiaru. Użyj tego narzędzia, aby szybko sprawdzić rozmiar zasobów, komponentów, logiki i bibliotek natywnych używanych przez Twoją grę.
  • Bloaty McBloatface: pokazuje profil rozmiaru plików binarnych.
  • Android GPU Inspector: pozwala zobaczyć, 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óre nie są wliczane do limitu rozmiaru.
  • Zmniejsz rozdzielczość tekstur gry.
  • 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, ten czas jest nadal znacznie krótszy niż czas pobierania tekstur gry. Google zintegrowało też ten format z silnikiem gry o otwartym kodzie źródłowym.
  • Skompresuj lub ponownie wykorzystaj dźwięki i muzykę.
  • Użyj różnych flag kompilacji, aby zmniejszyć rozmiar pliku binarnego:
    • -fvisibility=hidden – najważniejsza. W cmake możesz ją określić w ten sposób:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz – też ważna do zmniejszenia rozmiaru. Jeśli kompilujesz za pomocą gcc, użyj zamiast niej -Os.
    • -flto – czasami zmniejsza rozmiar pliku.
    • Flagi konsolidatora – używaj --gc-sections w połączeniu z flagami kompilatora, takimi jak -ffunction-sections i -fdata-sections.
  • Użyj Proguarda, aby zmniejszyć rozmiar kodu i zasobów.
  • Użyj Gradle 4.4 lub nowszego, aby generować mniejsze pliki DEX.
  • Wdróż dostarczanie zasobów z chmury.

Dzielenie dużej gry na kilka plików APK

Optymalizacja aplikacji błyskawicznej w Google Play, aby gra zmieściła się w jednym pliku APK o rozmiarze 15 MB, może być trudna, 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. Podczas gry pozostałe podzielone pliki APK są udostępniane grze w tle.

Na przykład podstawowy plik APK może zawierać główny silnik gry i zasoby wymagane do wyświetlania ekranu ładowania. Po uruchomieniu podstawowy plik APK wyświetla ekran ładowania i od razu wysyła żądanie dodatkowego podzielonego pliku APK, który zawiera dane gry i poziomu. Gdy ten dzielony pakiet APK stanie się dostępny, może załadować swoje zasoby do silnika gry i udostępnić graczowi treści potrzebne do rozpoczęcia gry.

Stosowanie sprawdzonych metod na zapewnienie wygody użytkowania

Po skonfigurowaniu gry tak, aby obsługiwała aplikacje błyskawiczne, dodaj logikę pokazaną w kolejnych sekcjach, aby zapewnić użytkownikom wygodę.

Obsługa architektury 64-bitowej

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 64-bitowych. Więcej informacji o obsłudze systemów 64-bitowych.

Sprawdzanie, czy gra działa jako aplikacja błyskawiczna

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

Dzięki temu sprawdzeniu 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() w interfejsach API Google na Androida.

Więcej informacji o tym, jak i kiedy należy prosić gracza o instalację, znajdziesz w artykule Sprawdzone metody na zapewnienie wygody użytkowania w grach w Aplikacji błyskawicznej w Google Play.

Przenoszenie danych do zainstalowanej aplikacji

Jeśli graczowi spodoba się wersja próbna, może zdecydować się na zainstalowanie pełnej wersji gry. Aby zapewnić mu wygodę, ważne jest, aby postępy gracza zostały przeniesione z aplikacji błyskawicznej do pełnej wersji gry.

Jeśli Twoja gra określa targetSandboxVersion jako 2, postępy gracza są automatycznie przenoszone do pełnej wersji gry. W przeciwnym razie musisz ręcznie przenieść dane związane z postępami gracza. Aby to zrobić, użyj interfejsu Cookie API – przykładowa aplikacja

Dodatkowe materiały

Więcej informacji o Aplikacji błyskawicznej w Google Play znajdziesz w tych dodatkowych materiałach:

Ćwiczenia z programowania: tworzenie pierwszej aplikacji błyskawicznej
Dodawanie obsługi Aplikacji błyskawicznej w Google Play w istniejącej aplikacji.
Ćwiczenia z programowania: tworzenie aplikacji błyskawicznej z wieloma funkcjami
Modularyzacja aplikacji z wieloma funkcjami.