Twoja gra jako natywna aplikacja na Androida
JumPHP robi z twojej gry prawdziwą aplikację na Androida, bez przeglądarki: PHP 8.5, SDL, OpenGL ES i OpenAL działają w aplikacji, jak na komputerze. Działa offline, na telefonach (ARM) i tabletach, z Androidem 8.0 lub nowszym.
Potrzebne są: projekt JumPHP na twoim komputerze (na twoim komputerze), Docker, a do Sklepu Play konto deweloperskie Google Play (25 $ jednorazowo). Twój Claude może zrobić wszystko za ciebie: poproś go „zrób natywną aplikację na Androida z mojej gry”.
Drugi sposób, Trusted Web Activity, umieszcza stronę gry w Chrome: lżejszy, ale wymaga sieci i serwisu. Z tym samym pakietem i tym samym kluczem aplikacja natywna zastępuje TWA w Sklepie Play, jak nowa wersja.
Jedno polecenie
bin/jumphp android mon-jeu
- Za pierwszym razem pyta o nazwę pakietu aplikacji (
io.github.ty.mon_jeu: po publikacji już się nie zmienia) i tworzy twój klucz wysyłania w~/.jumphp/android/keys/(ten z TWA, jeśli gra go ma). Zrób jego kopię zapasową, nigdy nie trafia do git. - Umieszcza workflow
.github/workflows/android.ymlw twoim projekcie i, po twoim „tak”, wysyła klucz do sekretów twojego repozytorium GitHub (zaszyfrowanych, odczytywanych tylko przez workflow). - Zapisuje wersję w
games/mon-jeu/android/app.json, robi commit i, po twoim „tak”, wysyła zmiany. - GitHub buduje aplikację (za pierwszym razem ~25 minut, potem ~8: PHP i biblioteki są w pamięci podręcznej) i publikuje release twojego repozytorium z
.apk(na telefon) i.aab(do Google Play), podpisanymi twoim kluczem. Polecenie pobiera je dogames/mon-jeu/dist/android-native/.
Kolejne wersje: bin/jumphp android mon-jeu --version-name 1.1 (numer wersji rośnie za każdym razem o jeden). Bez GitHuba: --local buduje aplikację na twoim komputerze, w Dockerze.
Aby wypróbować ją na telefonie: wyślij mu .apk i otwórz go (zezwól na „instalowanie nieznanych aplikacji”) albo adb install mon-jeu-1.0.apk.
Sterowanie dotykowe
Silnik sam rysuje sterowanie na ekranie, jak w przeglądarce: krzyżak (lub joystick), A, B i START, w czarnych pasach po bokach, gdy takie są. Ustawia się je w game.yaml, tak jak dla przeglądarki:
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } } # pad: stick = joystick, w przeciwnym razie krzyżak
Przycisk wstecz w Androidzie odpowiada Esc. Aby zobaczyć je na komputerze: JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu (myszą).
W aplikacji
- PHP 8.5 skompilowane dla Androida z rozszerzeniami JumPHP (SDL i jego moduły obrazu, dźwięku i czcionek, OpenGL, OpenAL, gd, openssl, mbstring…), SDL2 i OpenAL Soft: to, co uruchamia grę na komputerze.
- Twoja gra, rozpakowywana przy pierwszym uruchomieniu każdej wersji (sekunda lub dwie), w prywatnej pamięci aplikacji. Zapisy i opcje zostają tam między aktualizacjami.
- Nazwa, ikona (ta z PWA:
assets/icon.png) i orientacja (zależna od kształtu gry) pochodzą zgame.yaml.
W Sklepie Play
Wszystkie szczegóły (klucze, próby na telefonie, każda deklaracja w Play Console, weryfikacja, kolejne wersje, pułapki): Publikacja w Play Store krok po kroku. W skrócie:
- W Play Console utwórz aplikację (nazwa, język, „Gra”, bezpłatna) i wypełnij deklaracje: polityka prywatności (strona mówiąca, że gra niczego nie zbiera), klasyfikacja treści, grupa docelowa, brak reklam.
- Podpisywanie aplikacji przez Google Play: Google przechowuje klucz, który podpisuje aplikację dla telefonów; twój dowodzi tylko, że wysyłki pochodzą od ciebie (jeśli go zgubisz, Google może go wymienić).
- Test wewnętrzny: Testuj i publikuj > Testy wewnętrzne > Utwórz wersję > wyślij
.aab> Zapisz > Sprawdź > Wdróż. Dodaj testerów, instalują z linku Google. - Wizytówka: opisy, ikona 512 × 512 (
bin/jumphp buildją tworzy:dist/web/icon-512.png), obraz 1024 × 500, co najmniej 2 zrzuty ekranu (bin/jumphp shot mon-jeulub z telefonu). - Produkcja: gdy testy są dobre, awansuj wersję. Google ją sprawdza (od kilku godzin do kilku dni). Nowe konto osobiste musi najpierw mieć 12 testerów przez 14 dni.
Warto wiedzieć
- HTTPS działa (
$engine->http(), gra online przezwss://): certyfikaty są dołączone do gry. - Aplikacja waży 30 do 40 MB (PHP i biblioteki dla dwóch procesorów).
Szczegóły techniczne: docs/android-native.md w twoim projekcie.