Play Store'da yayınlama, adım adım
Bir JumPHP oyununu Google Play'e koymak ve orada tutmak için eksiksiz kullanım kılavuzu: neyi üretmek, neyi saklamak, telefonda neyi kontrol etmek gerekir ve baştan sona Play Console. İki tür uygulama için de geçerlidir:
| Web uygulaması (Google Play'de) | Yerel uygulama (Yerel Android uygulaması) | |
|---|---|---|
| Komut | bin/jumphp twa mon-jeu --url https://jumphp.net/mon-jeu |
bin/jumphp android mon-jeu |
| Nedir | oyunun sayfası Chrome'da, tam ekran | uygulamanın içinde PHP, SDL ve oyun, ağsız |
| Oyun nasıl güncellenir | siteyle birlikte, hemen (yeni uygulama gerekmez) | uygulamanın yeni bir sürümüyle |
Claude'unuz bu rehberi bilir (projenizin AGENTS.md dosyasında ve docs/google-play.md içinde): ona “oyunumu Google Play'e koy” deyin. Teknik işi o yapar; seçimler ve gönderimler sizde kalır (sona bakın).
0. Başlamadan önce
- Bir Google Play geliştirici hesabı: play.google.com/console, bir kez 25 $, kimlik doğrulamasıyla. Bu sizin hesabınızdır: Google'ın koşullarını siz kabul edersiniz.
- Yeni bir kişisel hesap, üretimde yayınlayabilmek için önce 14 gün boyunca en az 12 test kullanıcılı bir kapalı test yapmalıdır. Erken başlatın.
- Paket adı (
io.github.<github hesabınız>.<mon_jeu>): uygulamanın Google Play'deki kimliği. Bir daha asla değişmez. Komut ilk seferde sorar. - Android SDK lisansı: onu ilk seferde terminalinizde siz kabul edersiniz (SDK, ~1 GB,
~/.jumphpiçine gider). Claude'unuz komutu sizin çalıştırmanızı ister (! bin/jumphp twa …). - Herkese açık bir adreste gizlilik politikası: oyun hiçbir şey toplamasa bile Google ister. Kısa bir sayfa yeterlidir: oyun hiçbir kişisel veri toplamaz, göndermez ve paylaşmaz; hesap yok, reklam yok, takip yok; ayarlar ve kayıtlar cihazda kalır; bir iletişim adresi. Bunu oyunun sitesine koyun,
games/mon-jeu/site/privacy.html:https://play.jumphp.net/mon-jeu/privacy.htmladresinde sunulur (ya da herkese açık deponuzunPRIVACY.mddosyası). Google'a vermeden önce adresi bir kez açın: bir 404 hatası incelemeyi engeller.
1. Anahtarlar: önce onları yedekleyin
İlk üretim yükleme anahtarınızı oluşturur: ~/.jumphp/android/keys/<paket>.keystore ve parolası <paket>.env içinde.
- Asla git'te, bir notta ya da mesajda da değil. İki dosyayı başka bir yerde yedekleyin (parola yöneticisi, şifreli disk). Onlar olmadan yeni bir üretim başka bir anahtar oluşturur ve Google Play güncellemeyi reddeder.
- Google Play uygulama imzalama ile (varsayılan), Google kendi anahtarını, uygulamayı telefonlarda imzalayan anahtarı saklar. Sizinki yalnızca gönderimlerin sizden geldiğini kanıtlar; kaybolursa Google onu değiştirebilir (Kurulum > Uygulama imzalama), ancak bu günler sürer.
- Dolayısıyla iki SHA-256 parmak izi vardır: sizin anahtarınızınki (komut gösterir) ve Google'ın anahtarınınki (Play Console > Kurulum > Uygulama imzalama, ilk gönderimden sonra).
2. Uygulamayı üretin
bin/jumphp twa mon-jeu --url https://jumphp.net/mon-jeu # web uygulaması
bin/jumphp android mon-jeu # ya da yerel uygulama
- Her üretim sürüm numarasını + 1 yapar (Google Play, daha önce gönderilmiş bir numarayı reddeder; başarısız bir deneme bir numara harcar, önemli değil).
- Sürüm dosyasını hemen commit'leyin:
games/mon-jeu/android/twa-manifest.json(web uygulaması) ya dagames/mon-jeu/android/app.json(yerel uygulama).dist/asla. - Simgenin altındaki ad:
game.yamliçindepwa: {short_name: …}(12 karakter tam görünür). Simge:assets/icon.png.
3. Yalnızca web uygulaması: site uygulamaya kefil olur
Android, sayfayı yalnızca site uygulamayı beyan ederse tam ekran açar: paket adı ve iki parmak izi (sizinki ve Google'ınki). Yalnızca sizinkiyle, .apk dosyanızdan kurulan uygulama çalışır, ancak Google Play'den kurulan uygulama bir adres çubuğuyla (ya da bir “Şununla aç” seçimiyle) açılır.
Stüdyo'da, oyunun sayfasındaki Android uygulaması bölümünde (ya da Claude'unuzla: update_project). Site bunları https://jumphp.net/.well-known/assetlinks.json adresinde yayınlar. Kendi sunucunuzda: https://sizin-alan-adiniz/.well-known/assetlinks.json.
4. Gerçek bir telefonda deneyin
USB hata ayıklaması açıkken ve adb ile:
adb install -r games/mon-jeu/dist/android/mon-jeu-<version>.apk
adb shell pm get-app-links <paquet> # web uygulaması: « jumphp.net: verified »
adb exec-out screencap -p > capture.png # bakın: oyun orada olmalı
- Uygulama oyunun başlık ekranında açılmalıdır.
- Anahtarınızla imzalanmış bir
.apk, Google Play'den gelen aynı uygulamanın üzerine kurulmaz (INSTALL_FAILED_UPDATE_INCOMPATIBLE): önce kaldırın (uygulamanın kayıtları kaybolur). - Web uygulaması açılıp hemen kapanıyor, bir “Şununla aç” seçimiyle: telefonda iki Chrome var, genellikle bir klon alan / ikinci alan / çift uygulama yüzünden (Xiaomi, Samsung…). JumPHP'nin uygulaması ana profilin Chrome'unu ister; bu, oyuncular için sorunu çözer; test telefonunuzda klon alanı silmek, içindeki tüm uygulamaları siler.
- Oyunun Chrome'da açılması, uygulamanın çalıştığını kanıtlamaz: uygulamayı deneyin.
5. Play Console, ilk seferde
Kontrol panelindeki “Uygulamanızı ayarlayın” listesi (11'de X) geriye ne kaldığını gösterir; “İncelemeye gönder” bir şey eksik olduğu sürece soluk kalır.
- Uygulamayı oluşturun: ad, varsayılan dil, Oyun, Ücretsiz, beyanlar.
- Uygulama içeriği (Politika > Uygulama içeriği), her beyan:
- Gizlilik politikası: 0. adımdaki herkese açık adres;
- Reklamlar: reklam yok (JumPHP eklemez);
- Uygulamaya erişim: her şey özel bir erişim olmadan erişilebilir (hesap yok);
- Hedef kitle: oyunun yapıldığı yaşlar. 13 yaşın altındaki yaşları seçmek uygulamayı Aileler programına sokar (daha sıkı kurallar, daha az görünürlük): bunu yalnızca oyun gerçekten çocuklar için yapıldıysa yapın;
- İçerik derecelendirmesi (IARC anketi): Oyun kategorisi; oyununuz için dürüstçe yanıtlayın (çizgi film ya da fantastik şiddet, kan, korku, kumar, oyuncuların oluşturduğu içerik, oyuncular arası etkileşim, konum, satın alımlar);
- Veri güvenliği: hesapsız ve istatistiksiz bir JumPHP oyunu hiçbir veri toplamaz ve paylaşmaz (kayıtlar cihazda kalır; oyununuz bir web servisini çağırıyorsa bunu beyan edin);
- Reklam kimliği: kullanılmıyor;
- Devlet uygulamaları, finansal özellikler, sağlık: hayır.
- Play Store ayarları (Geliştir > Play Store'da varlık > Ayarlar): kategori (Arcade, Aksiyon, Bulmaca…) ve iletişim e-posta adresi. İkisi de zorunludur: onlar olmadan “Your app cannot be published yet”. Adres herkese açıktır.
- Ana mağaza sayfası: başlık (30 karakter), kısa açıklama (80), tam açıklama (4000), 512 × 512 PNG simge (
bin/jumphp buildüretir:dist/web/icon-512.png), 1024 × 500 görsel, en az 2 telefon ekran görüntüsü (bin/jumphp shot mon-jeu, tam sayı katsayıyla büyütülmüş, ya da telefonda alınmış). Sonraki sürümlerde yeniden yapmak için görselleri oyunun içinde tutun (games/mon-jeu/store/). - Testler: Test et ve yayınla > Testler > Dahili testler (ya da yeni bir hesabın 12 test kullanıcısı için Kapalı test) > Sürüm oluştur >
.aab> sürüm notları > Kaydet > İncele > Kullanıma sunmaya başla. Test kullanıcıları: bir adres listesi; her biri davet bağlantısını o Google hesabıyla giriş yapmış olarak açar ve Test kullanıcısı ol'a dokunur. - Web uygulaması: bu ilk gönderimden sonra Google'ın anahtarının parmak izini ekleyin (3. adım), test bağlantısından kurun ve tam ekranı kontrol edin.
- Üretim: Üretim > Ülkeler / bölgeler > Ekle, seçin, Kaydet (ülkesiz bir sürüm reddedilir), ardından Sürüm oluştur >
.aab> notlar > İleri > Kaydet. - Yayın genel bakışı > İncelemeye gönder, onaylayın. İnceleme birkaç saatten 7 güne sürer; konsol ve hesabın e-postası uygulamanın ne zaman yayında olduğunu söyler.
6. Sürüm notları
Dil başına bir blok, etiketler kendi satırında:
<tr-TR>
İlk sürüm.
</tr-TR>
<en-US>
First release.
</en-US>
7. Sonraki sürümler
- Web uygulaması: oyun siteyle birlikte güncellenir (push'larsınız, yayınlanır): yeni uygulama gerekmez. Yeni uygulama yalnızca ad, simge, renkler, başlangıç adresi ya da paket değişirse:
bin/jumphp twa mon-jeu. - Yerel uygulama: oyundaki her değişiklik yeni bir uygulamadır:
bin/jumphp android mon-jeu --version-name 1.1.
Ardından: sürüm dosyasını commit'leyin, .apk dosyasını bir telefonda deneyin, sonra Play Console > aynı kanal > Sürüm oluştur > yeni .aab > notlar > İncelemeye gönder. Beyanlar, oyun onların anlattığı şeyi değiştirmedikçe (çevrimiçi oyun, satın alımlar, veriler) geçerli kalır: değiştiyse önce onları güncelleyin.
8. Karşılaşılan tuzaklar
| Belirti | Neden, çözüm |
|---|---|
| Uygulama bir adres çubuğuyla açılıyor | sitede bir parmak izi (Google'ınki) ya da paket eksik: 3. adım |
| Web uygulaması açılıp hemen kapanıyor | telefonda iki Chrome (klon alan): 4. adım |
INSTALL_FAILED_UPDATE_INCOMPATIBLE |
kurulu uygulama Google Play'den geliyor (başka anahtar): önce kaldırın |
| “Sürüm kodu zaten kullanıldı” | yeniden üretin (sürüm + 1) |
| Google Play güncellemenin anahtarını reddediyor | yükleme anahtarı kaybolmuş ya da yeniden oluşturulmuş: yedeği geri yükleyin ya da Google'dan sıfırlamasını isteyin |
| “Your app cannot be published yet” | Play Store ayarları: kategori ve iletişim e-postası |
| “İncelemeye gönder” soluk | “Uygulamanızı ayarlayın” içinde bir adım eksik; ülkesiz bir sürüm |
| “En az 1 kaynak yükleyin” | görsel kitaplıkta ama mağaza sayfasına eklenmemiş: kitaplık panelinden ekleyin |
| Bir test kullanıcısı eklenmiyor | adresi yazıp Enter'a basın (etiket oluşur), sonra Kaydet ve onaylayın |
| Gizlilik politikası reddediliyor | adresi 404 veriyor ya da herkese açık değil: gizli sekmede açın |
Claude'unuzun sizsiz yapmadıkları
- Android SDK lisansını, Google'ın koşullarını kabul etmek ya da derecelendirme anketini size yanıtlarını söylemeden yanıtlamak;
- hedef kitleyi seçmek (oyunun “çocuklar için” olduğunu söylemek kuralları ve görünürlüğü değiştirir);
- o gönderim için onayınız olmadan üretime göndermek;
- telefonunuzdaki bir klon alanı silmek ya da bir uygulamayı kaldırmak (veriler kaybolur);
- anahtarları, parolaları ya da
dist/klasörünü git'e koymak.