Publikacja w Play Store krok po kroku
Kompletna instrukcja, jak umieścić grę JumPHP w Google Play i tam ją utrzymać: co trzeba zbudować, co zachować, co sprawdzić na telefonie i Play Console od początku do końca. Dotyczy obu rodzajów aplikacji:
| Aplikacja webowa (W Google Play) | Aplikacja natywna (Natywna aplikacja na Androida) | |
|---|---|---|
| Polecenie | bin/jumphp twa mon-jeu --url https://jumphp.net/mon-jeu |
bin/jumphp android mon-jeu |
| Czym jest | strona gry w Chrome, na pełnym ekranie | PHP, SDL i gra w aplikacji, bez sieci |
| Aktualizacja gry | razem z serwisem, od razu (bez nowej aplikacji) | z nową wersją aplikacji |
Twój Claude zna ten przewodnik (jest w AGENTS.md twojego projektu i w docs/google-play.md): poproś go „wrzuć moją grę do Google Play”. Zajmuje się techniką; wybory i wysyłki pozostają twoje (zobacz koniec).
0. Zanim zaczniesz
- Konto deweloperskie Google Play: play.google.com/console, 25 $ jednorazowo, z weryfikacją tożsamości. To twoje konto: to ty akceptujesz warunki Google.
- Nowe konto osobiste musi przeprowadzić test zamknięty z co najmniej 12 testerami przez 14 dni, zanim będzie mogło publikować w produkcji. Zacznij go wcześnie.
- Nazwa pakietu (
io.github.<twoje konto github>.<mon_jeu>): identyfikator aplikacji w Google Play. Nigdy się już nie zmienia. Polecenie pyta o nią za pierwszym razem. - Licencja Android SDK: to ty ją akceptujesz, w swoim terminalu, za pierwszym razem (SDK, ~1 GB, trafia do
~/.jumphp). Twój Claude poprosi, żebyś sam uruchomił polecenie (! bin/jumphp twa …). - Polityka prywatności pod publicznym adresem: Google jej wymaga, nawet jeśli gra niczego nie zbiera. Wystarczy krótka strona: gra nie zbiera, nie wysyła i nie udostępnia żadnych danych osobowych; brak konta, reklam i śledzenia; ustawienia i zapisy zostają na urządzeniu; adres kontaktowy. Umieść ją w serwisie gry,
games/mon-jeu/site/privacy.html: jest serwowana podhttps://play.jumphp.net/mon-jeu/privacy.html(alboPRIVACY.mdtwojego publicznego repozytorium). Otwórz ten adres raz przed podaniem go Google: błąd 404 blokuje weryfikację.
1. Klucze: najpierw zrób ich kopię zapasową
Pierwsze budowanie tworzy twój klucz wysyłania: ~/.jumphp/android/keys/<pakiet>.keystore i jego hasło w <pakiet>.env.
- Nigdy w git, ani w notatce czy wiadomości. Zachowaj oba pliki gdzie indziej (menedżer haseł, zaszyfrowany dysk). Bez nich nowe budowanie tworzy inny klucz, a Google Play odrzuca aktualizację.
- Przy podpisywaniu aplikacji przez Google Play (domyślnie) Google przechowuje własny klucz, ten, który podpisuje aplikację na telefonach. Twój dowodzi tylko, że wysyłki pochodzą od ciebie; jeśli go zgubisz, Google może go wymienić (Konfiguracja > Podpisywanie aplikacji), ale trwa to dni.
- Są więc dwa odciski SHA-256: twojego klucza (wyświetlany przez polecenie) i klucza Google (Play Console > Konfiguracja > Podpisywanie aplikacji, po pierwszej wysyłce).
2. Zbuduj aplikację
bin/jumphp twa mon-jeu --url https://jumphp.net/mon-jeu # aplikacja webowa
bin/jumphp android mon-jeu # albo aplikacja natywna
- Każde budowanie podnosi numer wersji o 1 (Google Play odrzuca numer, który już został wysłany; nieudana próba zużywa numer, to nic groźnego).
- Od razu zrób commit pliku wersji:
games/mon-jeu/android/twa-manifest.json(aplikacja webowa) lubgames/mon-jeu/android/app.json(aplikacja natywna). Nigdydist/. - Nazwa pod ikoną:
pwa: {short_name: …}wgame.yaml(12 znaków widać w całości). Ikona:assets/icon.png.
3. Tylko aplikacja webowa: serwis poręcza za aplikację
Android otwiera stronę na pełnym ekranie tylko wtedy, gdy serwis deklaruje aplikację: nazwę pakietu i oba odciski (twój i Google). Tylko z twoim aplikacja zainstalowana z twojego .apk działa, ale ta zainstalowana z Google Play otwiera się z paskiem adresu (albo z wyborem „Otwórz za pomocą”).
W Studiu, na stronie gry, w części Aplikacja na Androida (albo twój Claude: update_project). Serwis publikuje je w https://jumphp.net/.well-known/assetlinks.json. Na własnym serwerze: https://twoja-domena/.well-known/assetlinks.json.
4. Wypróbuj ją na prawdziwym telefonie
Z włączonym debugowaniem USB i adb:
adb install -r games/mon-jeu/dist/android/mon-jeu-<version>.apk
adb shell pm get-app-links <paquet> # aplikacja webowa: „jumphp.net: verified”
adb exec-out screencap -p > capture.png # obejrzyj: gra musi tam być
- Aplikacja musi otworzyć się na ekranie tytułowym gry.
.apkpodpisany twoim kluczem nie instaluje się na tej samej aplikacji pochodzącej z Google Play (INSTALL_FAILED_UPDATE_INCOMPATIBLE): najpierw odinstaluj (zapisy aplikacji przepadną).- Aplikacja webowa otwiera się i od razu zamyka, z wyborem „Otwórz za pomocą”: telefon ma dwa Chrome, zwykle z powodu przestrzeni klonu / drugiej przestrzeni / podwójnej aplikacji (Xiaomi, Samsung…). Aplikacja JumPHP żąda Chrome z głównego profilu, co rozwiązuje sprawę u graczy; na twoim telefonie testowym usunięcie przestrzeni klonu kasuje wszystkie aplikacje, które zawiera.
- To, że gra otwiera się w Chrome, nie dowodzi, że aplikacja działa: wypróbuj aplikację.
5. Play Console, za pierwszym razem
Lista „Skonfiguruj swoją aplikację” na pulpicie (X z 11) pokazuje, co zostało do zrobienia; „Wyślij do sprawdzenia” pozostaje wyszarzone, dopóki czegoś brakuje.
- Utwórz aplikację: nazwa, domyślny język, Gra, Bezpłatna, deklaracje.
- Treść aplikacji (Zasady > Treść aplikacji), każda deklaracja:
- Polityka prywatności: publiczny adres z kroku 0;
- Reklamy: brak reklam (JumPHP ich nie dodaje);
- Dostęp do aplikacji: wszystko jest dostępne bez szczególnego dostępu (brak konta);
- Grupa docelowa: wiek, dla którego gra jest zrobiona. Wybranie wieku poniżej 13 lat włącza aplikację do programu Rodzina (surowsze zasady, mniejsza widoczność): rób to tylko wtedy, gdy gra naprawdę jest dla dzieci;
- Klasyfikacja treści (kwestionariusz IARC): kategoria Gra; odpowiadaj szczerze dla swojej gry (przemoc rysunkowa lub fantastyczna, krew, strach, hazard, treści tworzone przez graczy, komunikacja między graczami, lokalizacja, zakupy);
- Bezpieczeństwo danych: gra JumPHP bez konta i bez statystyk nie zbiera i nie udostępnia żadnych danych (zapisy zostają na urządzeniu; jeśli twoja gra wywołuje usługę webową, zadeklaruj to);
- Identyfikator reklamowy: nieużywany;
- Aplikacje rządowe, funkcje finansowe, zdrowie: nie.
- Ustawienia sklepu Play (Rozwijaj > Obecność w sklepie Play > Ustawienia): kategoria (Arcade, Akcja, Logiczne…) i adres e-mail kontaktowy. Oba są obowiązkowe: bez nich „Your app cannot be published yet”. Adres jest publiczny.
- Główna wizytówka: tytuł (30 znaków), krótki opis (80), pełny opis (4000), ikona 512 × 512 PNG (
bin/jumphp buildją tworzy:dist/web/icon-512.png), obraz 1024 × 500, co najmniej 2 zrzuty ekranu telefonu (bin/jumphp shot mon-jeu, powiększone o całkowity współczynnik, albo zrobione na telefonie). Trzymaj obrazy w grze (games/mon-jeu/store/), aby odtworzyć je przy kolejnych wersjach. - Testy: Testuj i publikuj > Testy > Testy wewnętrzne (albo Test zamknięty dla 12 testerów nowego konta) > Utwórz wersję >
.aab> informacje o wersji > Zapisz > Sprawdź > Rozpocznij wdrażanie. Testerzy: lista adresów; każdy otwiera link z zaproszeniem zalogowany tym kontem Google i dotyka Zostań testerem. - Aplikacja webowa: po tej pierwszej wysyłce dodaj odcisk klucza Google (krok 3), zainstaluj z linku testowego i sprawdź pełny ekran.
- Produkcja: Produkcja > Kraje / regiony > Dodaj, wybierz, Zapisz (wersja bez krajów jest odrzucana), potem Utwórz wersję >
.aab> informacje > Dalej > Zapisz. - Przegląd publikacji > Wyślij do sprawdzenia, potwierdź. Weryfikacja trwa od kilku godzin do 7 dni; konsola i e-mail konta informują, kiedy aplikacja jest online.
6. Informacje o wersji
Jeden blok na język, znaczniki w osobnych wierszach:
<fr-FR>
Première version.
</fr-FR>
<en-US>
First release.
</en-US>
7. Kolejne wersje
- Aplikacja webowa: gra aktualizuje się razem z serwisem (wypychasz zmiany, jest publikowana): bez nowej aplikacji. Nowa aplikacja tylko wtedy, gdy zmienia się nazwa, ikona, kolory, adres startowy lub pakiet:
bin/jumphp twa mon-jeu. - Aplikacja natywna: każda zmiana gry to nowa aplikacja:
bin/jumphp android mon-jeu --version-name 1.1.
Potem: zrób commit pliku wersji, wypróbuj .apk na telefonie, a następnie Play Console > ta sama ścieżka > Utwórz wersję > nowy .aab > informacje > Wyślij do sprawdzenia. Deklaracje pozostają ważne, chyba że gra zmienia to, co opisują (gra online, zakupy, dane): zaktualizuj je wcześniej.
8. Napotkane pułapki
| Objaw | Przyczyna, rozwiązanie |
|---|---|
| Aplikacja otwiera się z paskiem adresu | brakuje odcisku (Google) lub pakietu w serwisie: krok 3 |
| Aplikacja webowa otwiera się i od razu zamyka | dwa Chrome na telefonie (przestrzeń klonu): krok 4 |
INSTALL_FAILED_UPDATE_INCOMPATIBLE |
zainstalowana aplikacja pochodzi z Google Play (inny klucz): najpierw odinstaluj |
| „Kod wersji został już użyty” | zbuduj ponownie (wersja + 1) |
| Google Play odrzuca klucz aktualizacji | klucz wysyłania zgubiony lub utworzony na nowo: przywróć kopię zapasową albo poproś Google o jego zresetowanie |
| „Your app cannot be published yet” | Ustawienia sklepu Play: kategoria i e-mail kontaktowy |
| „Wyślij do sprawdzenia” wyszarzone | brakuje kroku z „Skonfiguruj swoją aplikację”; wersja bez krajów |
| „Prześlij co najmniej 1 zasób” | obraz jest w bibliotece, ale nie jest przypisany do wizytówki: dodaj go z panelu biblioteki |
| Tester nie został dodany | wpisz adres, potem Enter (plakietka), potem Zapisz i potwierdź |
| Polityka prywatności jest odrzucana | jej adres zwraca 404 lub nie jest publiczny: otwórz go w trybie prywatnym |
Czego twój Claude nie robi bez ciebie
- akceptować licencji Android SDK, warunków Google ani odpowiadać na kwestionariusz klasyfikacji bez podania ci swoich odpowiedzi;
- wybierać grupy docelowej (stwierdzenie, że gra jest „dla dzieci”, zmienia zasady i widoczność);
- wysyłać do produkcji bez twojej zgody na tę konkretną wysyłkę;
- usuwać przestrzeni klonu ani odinstalowywać aplikacji z twojego telefonu (dane przepadają);
- umieszczać kluczy, haseł ani
dist/w git.