PL

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 pod https://play.jumphp.net/mon-jeu/privacy.html (albo PRIVACY.md twojego 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) lub games/mon-jeu/android/app.json (aplikacja natywna). Nigdy dist/.
  • Nazwa pod ikoną: pwa: {short_name: …} w game.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.
  • .apk podpisany 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.

  1. Utwórz aplikację: nazwa, domyślny język, Gra, Bezpłatna, deklaracje.
  2. 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.
  3. 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.
  4. Główna wizytówka: tytuł (30 znaków), krótki opis (80), pełny opis (4000), ikona 512 × 512 PNG (bin/jumphp build ją 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.
  5. 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.
  6. Aplikacja webowa: po tej pierwszej wysyłce dodaj odcisk klucza Google (krok 3), zainstaluj z linku testowego i sprawdź pełny ekran.
  7. Produkcja: Produkcja > Kraje / regiony > Dodaj, wybierz, Zapisz (wersja bez krajów jest odrzucana), potem Utwórz wersję > .aab > informacje > Dalej > Zapisz.
  8. 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.