Vibeloy
Kayıt Ol

Ücretsiz Yayın Rehberi

Android (Google Play) Yayınlama Rehberi

Bu rehber, Flutter veya React Native ile geliştirdiğin Android uygulamanı Google Play'e çıkarma sürecinin tamamını 12 adımda baştan sona anlatır. Hesap açmadan her satırı okuyabilir, hazır olduğunda ilerlemeni kaydetmek için kaydolabilirsin.

iOS rehberine geç

Bu rehber herkese açık

Tüm adımları hesap açmadan okuyabilirsin. İlerlemeni kaydetmek, Gizlilik Politikası ve app-ads.txt araçlarının tamamını kullanmak için ücretsiz kaydol; Keystore Kasası ve Ekran Görüntüsü Stüdyosu premium planda açılır.

Ücretsiz Kaydol

Adım 1

Google Play Geliştirici Hesabı Açma

Play Console'da geliştirici hesabı açmak tek seferlik 25 USD ücret ve kimlik doğrulama gerektirir; kişisel ve kurumsal hesap arasındaki fark ileride pek çok kısıtı belirler.

play.google.com/console adresinden bir Google hesabıyla kayıt olun. Kayıt sırasında tek seferlik 25 USD hesap ücreti alınır; bu ücret yıllık tekrarlanmaz ve hesap iptal edilse bile iade edilmez.

  • Kişisel hesap: Bireysel geliştiriciler için; kimlik belgesi + adres doğrulaması istenir. 13 Kasım 2023 sonrası açılan kişisel hesaplar production erişimi için kapalı test şartına tabidir.
  • Kurumsal (Organization) hesap: Şirket adına; D-U-N-S numarası veya yasal şirket kaydı istenir, doğrulama süresi daha uzun sürebilir ama kapalı test şartı yoktur.
Kimlik doğrulaması reddedilirse hesap askıya alınabilir; belgelerin (kimlik, adres, banka ekstresi) güncel ve net taranmış olduğundan emin olun.
Vibeloy'da ekip halinde yayın yapacaksanız baştan kurumsal hesap açmak, ileride hesap sahipliği devrini önler.

Adım 2

Uygulama Kimliği: applicationId, Sürüm ve İkon

applicationId yayınlandıktan sonra asla değiştirilemez; versionCode/versionName ve ikon seçimini bu adımda kesinleştirin.

android/app/build.gradle.kts içindeki applicationId, Play Store'daki uygulamanızın kalıcı kimliğidir (örn. com.vibeloy.myapp). Yayınlandıktan sonra değiştirilemez; değiştirmek isterseniz yeni bir liste (yeni URL, sıfırdan yorum/indirme sayısı) açmanız gerekir.

  • Ters alan adı biçimini kullanın (com.sirket.uygulama), rakamla başlamayın, alt çizgi dışında özel karakter kullanmayın.
  • versionCode her yüklemede artan bir tam sayıdır (Play Console'a her aab için benzersiz ve önceki sürümden büyük olmalı); versionName kullanıcıya görünen "1.2.0" gibi metindir.
  • pubspec.yaml içinde version: 1.0.0+1 biçimi versionName+versionCode'u birlikte taşır.

flutter_launcher_icons paketi ile Android ikon setini tek komutla üretme

yaml
dev_dependencies:
  flutter_launcher_icons: ^0.14.1

flutter_launcher_icons:
  android: true
  image_path: "assets/icon/icon.png"
  min_sdk_android: 21
bash
dart run flutter_launcher_icons
applicationId'i sonradan değiştirmek Vibeloy'daki mevcut yayın geçmişinizi de sıfırlar; ilk seçimi dikkatli yapın.

Adım 3

Upload Keystore Oluşturma

Uygulamanızı imzalayacak upload keystore dosyasını keytool ile üretin ve şifrelerini güvenle saklayın; kaybedilirse aynı uygulamayı bir daha güncelleyemezsiniz.

Google Play, yüklediğiniz her AAB'nin bir "upload key" ile imzalanmasını ister. Bu anahtarı Flutter'ın resmi dokümantasyonundaki standart komutla, JDK'nın keytool aracıyla üretirsiniz.

Upload keystore üretme komutu (Flutter resmi dokümanı)

bash
keytool -genkey -v -keystore ~/upload-keystore.jks \
  -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 \
  -alias upload
  • -storetype JKS bayrağı önemlidir: Java 9 ve sonrasında keytool varsayılan olarak PKCS12 kullanır; bu bayrak olmadan dosya .jks uzantılı görünse de içeriği aslında PKCS12 olur.
  • Windows'ta hangi JDK'nın kullanıldığından emin olmak için flutter doctor -v çalıştırıp çıktıdaki "Java binary at:" satırını bulun; keytool o dizinin bin klasöründedir. -keystore parametresini kendi kullanıcı dizininize göre ayarlayın.
  • Sorulan store password ve key password değerlerini bir şifre yöneticisinde saklayın; bu şifreler key.properties dosyasına da girecek.
Bu dosyayı ve şifrelerini kaybetmek yine de ciddi risk taşır: ilk AAB yüklemenizle Play App Signing'e otomatik kaydolacağınız için upload key'i kaybettiğinizde Play Console'dan bir anahtar sıfırlama talep edebilirsiniz; kalıcı kayıp yalnızca Play App Signing'e hiç kaydolmadan dağıtılan (eski) uygulamalar için geçerlidir — o durumda yeni bir applicationId ile baştan başlamanız gerekir. Riski göze almayın, yedek alın.
Vibeloy Kasa aracı (premium) keystore dosyanızı ve şifrelerinizi uçtan uca şifreli olarak saklar; her cihazdan güvenle erişebilirsiniz.

Bu adımda Vibeloy aracı var

Keystore Kasası aracını kullanmak ve ilerlemeni kaydetmek için ücretsiz kaydol.

Kaydol ve kullan

Adım 4

Gradle İmzalama Yapılandırması

key.properties dosyası ile keystore bilgilerini build.gradle.kts'e Kotlin DSL üzerinden bağlayın ve release build type'ı imzalı hale getirin.

android/ dizininde key.properties adlı bir dosya oluşturun (bu dosya asla git'e eklenmemeli, .gitignore'a ekleyin).

android/key.properties içeriği

properties
storePassword=<store-şifreniz>
keyPassword=<key-şifreniz>
keyAlias=upload
storeFile=/Users/kullanici/upload-keystore.jks

android/app/build.gradle.kts — güncel Kotlin DSL deseni

kotlin
import java.util.Properties
import java.io.FileInputStream

val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}

android {
    // ... namespace, compileSdk, defaultConfig ...

    signingConfigs {
        create("release") {
            keyAlias = keystoreProperties["keyAlias"] as String
            keyPassword = keystoreProperties["keyPassword"] as String
            storeFile = keystoreProperties["storeFile"]?.let { file(it) }
            storePassword = keystoreProperties["storePassword"] as String
        }
    }

    buildTypes {
        getByName("release") {
            signingConfig = signingConfigs.getByName("release")
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}
isMinifyEnabled=true (R8) açtığınızda reflection kullanan paketler (bazı eklentiler) çalışmayı durdurabilir; release APK/AAB'yi gerçek cihazda test etmeden mağazaya yüklemeyin ve gerekirse proguard-rules.pro'ya keep kuralları ekleyin.

Adım 5

App Bundle (AAB) Derleme

Play Store artık yalnızca .aab formatını kabul eder; flutter build appbundle --release komutuyla optimize edilmiş bir paket üretin.

bash
flutter build appbundle --release

Çıktı dosyası build/app/outputs/bundle/release/app-release.aab konumunda oluşur. Bu dosyayı doğrudan Play Console'a yükleyeceksiniz; Play App Signing devrede olduğu için Google, dağıtım için kendi imzasını üzerine ekler.

Her yeni yüklemeden önce pubspec.yaml'daki version alanının + işaretinden sonraki versionCode kısmını artırmayı unutmayın; aksi halde Play Console yüklemeyi reddeder.

Kod gizleme (obfuscation) ve hata ayıklama sembollerini ayırma (opsiyonel, önerilir)

bash
flutter build appbundle --release \
  --obfuscate \
  --split-debug-info=build/app/outputs/symbols
--split-debug-info ile üretilen sembol dosyalarını saklayın; crash raporlarında (ör. Play Console'un Android vitals'ında) yığın izlerini okunabilir hale getirmek için gerekir.

İlerlemeni takip et, politikanı ve app-ads.txt'ini oluştur

Vibeloy'a ücretsiz kaydol; Android ve iOS yayın sürecinin tamamını tek yerden yönet. Barındırma, Ekran Görüntüsü Stüdyosu ve Keystore Kasası premium planda seni bekliyor.

Ücretsiz Başla

Adım 6

Play Console'da Uygulama Oluşturma

Play Console'da yeni bir uygulama kaydı açın ve Play App Signing'e katılarak Google'ın imzalama anahtarınızı güvenle saklamasını sağlayın.

  • Play Console > Uygulama oluştur: uygulama adı, varsayılan dil, uygulama mı oyun mu, ücretsiz mi ücretli mi seçin (ücretli seçim sonradan ücretsize çevrilebilir ama tersi mümkün değil).
  • İlk AAB'yi (genelde kapalı test kanalına) yüklediğinizde Play App Signing otomatik olarak devreye girer; Google, upload key'inizle imzalanan paketi alıp kendi güvenli anahtarıyla yeniden imzalayarak dağıtır.
  • Beyanlar (export uyumluluğu, reklam içeriği var mı, hedef kitle vb.) bu aşamada başlar ve sonraki adımlarda tamamlanır.
Play App Signing'i devre dışı bırakmayı veya kendi imzanızla doğrudan dağıtmayı seçmeyin; Google 2021'den beri yeni uygulamalarda bunu zorunlu kılıyor ve devre dışı bırakma seçeneği artık mevcut değil.

Adım 7

Mağaza Listesi: Metinler ve Görseller

Başlık, açıklama karakter sınırlarına uyun; 512x512 ikon, 1024x500 feature graphic ve en az 2 telefon ekran görüntüsü hazırlayın.

  • Uygulama adı: en fazla 30 karakter. Kısa açıklama: en fazla 80 karakter (arama sonuçlarında görünür). Uzun açıklama: en fazla 4000 karakter.
  • Yüksek çözünürlüklü ikon: 512x512 px, 32-bit PNG (alfa kanalı/şeffaflık ile).
  • Feature graphic: tam olarak 1024x500 px, JPEG veya 24-bit PNG, alfa kanalı YOK; kenarlara yakın metin koymayın çünkü Google öne çıkarma alanlarında kırpabilir.
  • Telefon ekran görüntüleri: en az 2, en fazla 8 adet; kısa kenar en az 320px, uzun kenar en fazla 3840px, en-boy oranı 1:2 ile 2:1 arasında olmalı. En yaygın kullanılan boyut 1080x1920 px (dikey).
  • Tablet için 7" ve 10" ekran görüntüleri zorunlu değil ama tablet aramalarında öne çıkmak için şiddetle önerilir.
Vibeloy'un ekran görüntüsü aracı, Flutter uygulamanızdan aldığı ham görüntüleri bu boyut ve oran kurallarına göre otomatik kırpıp çerçeveler.
Ham görüntüleri Vibeloy Ekran Görüntüsü Stüdyosu'na yükleyip başlık/alt yazı ekleyebilir, Canva-vari arka planlar ve dekoratif şekiller seçebilir, telefon çerçevesi uygulayabilir ve tek tasarımı galeri sırasında yan yana duran 2-3 panele bölerek dışa aktarabilirsiniz.

Bu adımda Vibeloy aracı var

Ekran Görüntüleri aracını kullanmak ve ilerlemeni kaydetmek için ücretsiz kaydol.

Kaydol ve kullan

Adım 8

Veri Güvenliği Formu ve Gizlilik Politikası

Uygulamanızın topladığı her veri türünü Veri güvenliği formunda beyan edin ve herkese açık bir gizlilik politikası URL'si sağlayın; AdMob/Analytics kullanımı ek beyan gerektirir.

Play Console > Politika > App content bölümünde Veri güvenliği anketini doldurun: hangi veriler (konum, e-posta, cihaz kimlikleri, reklam kimliği vb.) toplanıyor, hangi amaçla kullanılıyor, üçüncü taraflarla paylaşılıyor mu, şifrelenmiş taşınıyor mu ve silme talebi mekanizması var mı.

Gizlilik politikası URL'si zorunludur ve gerçekten erişilebilir, güncel bir sayfaya işaret etmelidir; boş/placeholder URL uygulamanın reddedilmesine yol açar.
  • AdMob kullanıyorsanız: reklam kimliği (Advertising ID) toplandığı ve reklam kişiselleştirme amacıyla kullanıldığı beyan edilmeli.
  • Firebase Analytics/Crashlytics kullanıyorsanız: kullanım verileri (app interactions), çökme günlükleri ve cihaz tanımlayıcılarının toplandığı beyan edilmeli.
Vibeloy'un politika aracı, kullandığınız paketleri (AdMob, Firebase vb.) tarayıp veri güvenliği formu için hazır bir taslak metin üretir.

Bu adımda Vibeloy aracı var

Gizlilik Politikası aracını kullanmak ve ilerlemeni kaydetmek için ücretsiz kaydol.

Kaydol ve kullan

Adım 9

İçerik Derecelendirme Anketi

IARC anketini doğru ve eksiksiz doldurun; yanlış beyan uygulamanın kaldırılmasına veya derecelendirme iptaline yol açabilir.

Play Console > Politika > App content > İçerik derecelendirmesi bölümünden IARC (International Age Rating Coalition) anketini doldurun. Şiddet, cinsel içerik, kumar benzeri mekanikler, kullanıcı üretimi içerik ve uygulama içi sohbet gibi sorulara verdiğiniz cevaplara göre farklı bölgelerdeki yaş derecelendirmeleri (PEGI, ESRB vb.) otomatik hesaplanır.

Anketi eksik veya yanlış doldurmak (örn. reklam veya kullanıcı içeriği barındırdığı halde beyan etmemek) sonradan tespit edilirse uygulamanız derecelendirmesiz kalır ve mağazadan kaldırılabilir.

İçerik değiştiğinde (örn. sohbet özelliği eklediğinizde) anketi yeniden doldurmanız gerekir.

Adım 10

Kapalı Test: 12 Test Kullanıcısı, 14 Gün

13 Kasım 2023 sonrası açılan kişisel hesaplar, production erişiminden önce en az 12 aktif test kullanıcısıyla kesintisiz 14 günlük kapalı test tamamlamak zorunda.

Play Console > Test > Kapalı test bölümünde bir kanal oluşturup AAB'nizi yükleyin ve test kullanıcılarını e-posta listesi veya Google Grubu ile davet edin. Kural, 13 Kasım 2023'ten sonra açılan kişisel (bireysel) hesaplar için geçerlidir; bu tarihten önce açılmış kişisel hesaplar ve kurumsal hesaplar bu şarttan muaftır.

  • En az 12 test kullanıcısının davetiyeyi kabul edip uygulamayı gerçek bir Android cihazda, gerçek bir Google hesabıyla açması gerekir; emülatör, bot veya çoklu-hesap kabul edilmez.
  • 14 günlük sayaç, sürümünüz Google tarafından onaylandıktan VE en az 12 kişi katılım sağladıktan sonra başlar; katılımcı sayısı 12'nin altına düşerse süreç sıfırlanabilir.
  • Süre dolduktan sonra Play Console'da "Production erişimi için başvur" akışını tamamlayıp uygulamanız, test süreciniz ve production hazırlığınız hakkındaki soruları yanıtlamanız gerekir.
Bu kural sık değişiyor (ör. eski 20 test kullanıcısı şartı 12'ye indirildi); başvurudan önce Play Console'daki güncel şartı mutlaka kontrol edin.

Adım 11

Production Sürümü ve Aşamalı Yayın

Production kanalına yükleyin, Google'ın inceleme sürecini bekleyin ve riski azaltmak için aşamalı yayın (staged rollout) kullanın.

Kapalı test ve gerekli beyanlar tamamlandıktan sonra Play Console > Üretim (Production) bölümünden yeni bir sürüm oluşturup AAB'nizi yükleyin. Google'ın incelemesi genellikle birkaç saatten birkaç güne kadar sürebilir; yeni geliştirici hesaplarında veya hassas izinler (konum, SMS, erişilebilirlik) kullanan uygulamalarda süre uzayabilir.

  • Aşamalı yayın: sürümü kullanıcıların %5-%20 gibi küçük bir yüzdesine açıp, çökme oranları ve ANR (yanıt vermeyen uygulama) verilerini izleyerek kademeli olarak %100'e çıkarın.
  • Sorun tespit ederseniz yayını duraklatabilir (halt) veya durdurabilirsiniz; duraklatma önceki sürümü etkilemeden yeni kullanıcıların güncellemesini engeller.
İlk yayında %20 ile başlayıp Android vitals'ı (çökme, ANR, bekleme oranı) 48-72 saat izlemek, büyük bir hatayı milyonlarca kullanıcıya ulaşmadan yakalamanızı sağlar.

Adım 12

AdMob Entegrasyonu ve app-ads.txt

AdMob uygulama kimliğini AndroidManifest.xml'e ekleyin ve geliştirici web sitenizde app-ads.txt dosyasını yayınlayarak reklam gelirinizi sahte envanterden koruyun.

android/app/src/main/AndroidManifest.xml içine AdMob uygulama kimliği

xml
<manifest ...>
  <application ...>
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY"/>
  </application>
</manifest>

Bu meta-data etiketi eksikse uygulama çöker; AdMob konsolundan aldığınız gerçek app ID'yi kullanın, örnek/test ID'yi production'a bırakmayın.

2025'ten itibaren yeni AdMob uygulamaları app-ads.txt ile doğrulanmak ZORUNDA; doğrulanmamış uygulamalarda reklam gösterimi kısıtlanabilir veya gelir kaybı yaşanabilir. Bu şartın 2026'daki güncel kapsamını AdMob konsolunuzdaki uyarılardan teyit edin.
  • Play Console'daki "Geliştirici web sitesi" alanına, kontrolünüzdeki bir alan adı (domain) girin — AdMob bu siteyi Play Store listenizle eşleştirerek doğrular.
  • O alan adının kök dizinine (https://siteniz.com/app-ads.txt) AdMob konsolunun size verdiği satırı ekleyin, örn: google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0
Vibeloy'un app-ads.txt aracı, alan adınız için doğru satırı üretir ve dosyanın erişilebilir olup olmadığını periyodik kontrol eder.

Bu adımda Vibeloy aracı var

app-ads.txt aracını kullanmak ve ilerlemeni kaydetmek için ücretsiz kaydol.

Kaydol ve kullan

İlerlemeni takip et, politikanı ve app-ads.txt'ini oluştur

Vibeloy'a ücretsiz kaydol; Android ve iOS yayın sürecinin tamamını tek yerden yönet. Barındırma, Ekran Görüntüsü Stüdyosu ve Keystore Kasası premium planda seni bekliyor.

Ücretsiz Başla