Ü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.
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.
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
dev_dependencies:
flutter_launcher_icons: ^0.14.1
flutter_launcher_icons:
android: true
image_path: "assets/icon/icon.png"
min_sdk_android: 21dart run flutter_launcher_iconsAdı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ı)
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 adımda Vibeloy aracı var
Keystore Kasası aracını kullanmak ve ilerlemeni kaydetmek için ücretsiz kaydol.
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
storePassword=<store-şifreniz>
keyPassword=<key-şifreniz>
keyAlias=upload
storeFile=/Users/kullanici/upload-keystore.jksandroid/app/build.gradle.kts — güncel Kotlin DSL deseni
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
}
}
}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.
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)
flutter build appbundle --release \
--obfuscate \
--split-debug-info=build/app/outputs/symbolsİ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şlaAdı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.
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.
Bu adımda Vibeloy aracı var
Ekran Görüntüleri aracını kullanmak ve ilerlemeni kaydetmek için ücretsiz kaydol.
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ı.
- 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.
Bu adımda Vibeloy aracı var
Gizlilik Politikası aracını kullanmak ve ilerlemeni kaydetmek için ücretsiz kaydol.
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.
İç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.
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.
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
<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.
- 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
Bu adımda Vibeloy aracı var
app-ads.txt aracını kullanmak ve ilerlemeni kaydetmek için ücretsiz kaydol.
İ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