EAS ile üretim paketini derle
Paket adını belirle
app.json(ya daapp.config.js) içindeandroid.packagedeğerini ayarla, örneğincom.yourcompany.app. İlk yüklemeden sonra kalıcıdır.EAS'i kur ve yapılandır
Aşağıdaki komutlarla CLI'ı kur, giriş yap ve
eas.jsondosyasını oluştur. Oluşan dosyada birproductionprofili zaten vardır.Derle
Üretim derlemesini çalıştır. Varsayılan üretim profili EAS sunucularında bir Android App Bundle oluşturur; kendi makinende derlemek için
--localekle.Paketi indir
Derleme bitince
.aabdosyasını expo.dev'deki derleme sayfasından ya da terminaldeki bağlantıdan indir.
npm install -g eas-cli
eas login
eas build:configureeas build -p android --profile productionÜretim profilinde android.buildType değerini apk yapma. APK Google Play'e gönderilemez.
Kimlik bilgileri: yükleme anahtarını EAS saklasın
İlk Android derlemesinde EAS bir anahtar deposu oluşturmayı önerir ve onu Expo sunucularında saklar; sonraki derlemeler aynısını kullanır. Google Play için bu anahtar deposu senin yükleme anahtarındır. İlk paketi yüklediğinde Play Uygulama İmzalama kurulur ve uygulama imzalama anahtarını Google saklar.
Yapılandırılmış anahtar deposunu görmek, yedeğini indirmek ya da değiştirmek için eas credentials kullan. Yedeği güvenli bir yerde tut: bir gün yerelde derlersen ya da EAS'ten ayrılırsan gerekecek.
eas credentials -p androidİlk yüklemeden sonra yeni bir anahtar deposu oluşturma. Farklı bir yükleme anahtarıyla imzalanmış paket, Play Console'dan yükleme anahtarı sıfırlaması isteyene kadar reddedilir.
Sürüm kodu ve hedef API düzeyi
Play Console versionCode değeri daha önce kullanılmış her paketi reddeder. En basit kurulumda EAS bunu uzaktan yönetir ve her üretim derlemesinde artırır:
{
"cli": { "appVersionSource": "remote" },
"build": {
"production": { "autoIncrement": true }
},
"submit": {
"production": {
"android": { "track": "alpha", "releaseStatus": "draft" }
}
}
}appVersionSource değeri remote olunca sürüm kodunu EAS saklar ve uygulama yapılandırmasındaki android.versionCode değerini yok sayar. Daha önce elle derleme yüklediysen, EAS'in son numaradan devam etmesi için bir kez eas build:version:set çalıştır.
31 Ağustos 2026'dan beri yeni uygulamalar ve güncellemeler Android 16'yı (API düzeyi 36) hedeflemek zorunda. Hedef SDK'yı her Expo SDK sürümü kendisi belirler; güvenilir çözüm 36 hedefleyen bir SDK sürümüdür. expo-build-properties yapılandırma eklentisi targetSdkVersion değerini ezebilir, ama bunu yalnız SDK'n ve kitaplıkların destekliyorsa yap.
Expo tuzakları
- eas submit dahili teste gider.
eas submit -p androidvarsayılan olarak derlemeyi dahili test kanalına gönderir; bu kanal 12 test edici kuralına sayılmaz. Gönderim profiline yukarıdaki gibi"track": "alpha"(Google'ın varsayılan kapalı kanalı) yaz ya da indirdiğin.aabdosyasını kapalı kanala elle yükle. - İlk sürümler yalnız taslak. Uygulama hiç yayınlanmamışken Google API üzerinden yalnız taslak sürüm kabul eder.
"releaseStatus": "draft"değerini koru ve dağıtımı Play Console'da tamamla. - Hizmet hesabı gerekir.
eas submit, uygulamanın kimlik bilgileri altında EAS'e yüklediğin bir Google hizmet hesabı anahtarı kullanır. Yoksa elle yükle. - Geliştirme derlemeleri.
developmentClient: trueolan bir derleme geliştirme sunucusu bekler. Test edicilerin üretim profilini aldığından emin ol. - Eksik ortam değişkenleri. git'in yok saydığı
.envdosyasındaki değerler EAS Build'e yüklenmez. Üretim değerlerini EAS ortam değişkeni olarak tanımla, yoksa sürüm derlemesi yanlış sunucuya bağlanır. - Native değişiklikler yeni derleme ister. İzinler, paket adı ve yapılandırma eklentileri test edicilere OTA güncellemeyle değil, yalnız yeni bir EAS derlemesiyle ulaşır.
eas submit -p android --profile productionDerlemenin test edicilerde neden çöktüğünü bul
Production derlemesi Expo Go'dan ve development derlemelerinden farklı davranır: geliştirme sunucusu yoktur, JavaScript küçültülmüştür ve yalnız içine derlediğin yerel modüller vardır. Tahmin etmeden önce test edicilerin gördüğünü yeniden üret.
Production modunu yerelde çalıştır
npx expo start --no-dev --minifyJavaScript'ini bir release paketi gibi çalıştırır ve geliştirme modunun hiç fırlatmadığı hataları gösterir.Yerel günlükleri oku
Telefonu USB ile bağla ve
adb logcatçalıştır. Bir JavaScript hata sınırı (error boundary) sorunu yakalamadığında yerel günlükler çoğu zaman asıl nedeni gösterir.Play Console'a bak
Test edici çökmeleri İzle ve iyileştir → Android vitals → Çökmeler ve ANR'ler altında görünür. Google'ın her yüklemeden sonra otomatik oluşturduğu lansman öncesi rapor da uygulamayı test cihazlarında çalıştırır ve bulduğu çökmeleri listeler.
JavaScript hatalarını okunur yap
Sentry kullanıyorsan,
SENTRY_AUTH_TOKENhassas bir EAS ortam değişkeni olarak tanımlandığında EAS Build kaynak haritalarını otomatik yükler.eas updatesonrasındanpx sentry-expo-upload-sourcemaps distçalıştır ki güncellemeler de okunur olsun.
Yerel hata ayıklama mı lazım? npx expo prebuild -p android Android Studio'nun hata ayıklayıcısını bağlayabilmen için android klasörünü oluşturur. Projenin Expo tarafından yönetilmeye devam etmesi için işin bitince klasörü sil.
Kısaca Play Console: kapalı testten üretime
Expo paketin derlenip imzalandıktan sonra gerisi Play Console'da geçer ve her çatıda aynıdır. Bu, kısa kontrol listesi; her menü ve ekran Play Console adımlarının tamamında anlatılıyor.
- Uygulama kurulumunu bitir: Kontrol Paneli'nde gizlilik politikası, uygulama erişimi, reklamlar, içerik derecelendirmesi, hedef kitle, veri güvenliği ve mağaza girişi.
- Kapalı test sürümü oluştur: Test et ve yayınla → Test → Kapalı test altında test edicilerinin ülkelerini seç,
.aabdosyasını yükle ve incelemeye gönder. - Test edicileri Google Group ile ekle: Test ediciler sekmesinde grubu ekle ve opt-in bağlantısını paylaş. Bağlantı, kanal Yayınlandı durumuna geçince çalışır.
- En az 12 test ediciyi 14 gün kesintisiz opt-in tut. Dahili test sayılmaz; ayrılıp geri dönen birinin 14 günü baştan başlar.
- Test sırasında en az bir güncelleme yayınla ve test edicilerin ne bulduğunu, senin neyi değiştirdiğini not et.
- Üretime başvur: Kontrol Paneli'nden başvur ve testin, uygulaman ve hazırlığın hakkındaki üç bölümü yanıtla. Karar Google'ındır; kimse onayı garanti edemez.
Ayrılanları hesaba kat: 12 kişiden fazlasını bul ki biri ayrıldığında takvimin uzamasın. Play Console adımlarının tamamını gör.
Play Console adımlarının tamamı
Kapalı test kanalı, Google Group ve opt-in bağlantısı, 12 test edici / 14 gün kuralı ve üretim başvurusu, tek sayfada adım adım.
Düzeltmeleri hızlı gönder: yeni derlemeler ve EAS Update
Uzaktan sürümlemeyle üretim derlemesini yeniden çalıştır ve kapalı test kanalına yükle ya da gönder; sürüm kodu kendiliğinden artar.
eas build -p android --profile productionYalnız JavaScript'i etkileyen düzeltmeler için EAS Update, mağazaya yeniden göndermeden yeni bir paket ulaştırabilir. Google Play'in Cihaz ve Ağ Kötüye Kullanımı politikası, JavaScript gibi bir yorumlayıcıda ya da sanal makinede çalışan kodun bu şekilde güncellenmesine izin verir; yerel kod indirmeye izin vermez. Güncellemeleri gerçek düzeltmeler için kullan ve incelenen derlemenin yaptığı işin sınırları içinde tut.
eas update --channel production --message "Fix checkout crash" --environment production- Kanallar.
eas update:configure,previewveproductionderleme profillerine birchannelekler. Bir derleme yalnız kendi kanalına yayınlanan güncellemeleri alır. SDK 55'ten itibaren--environmentzorunlu. - Çalışma zamanı sürümü. Bir güncelleme yalnız aynı çalışma zamanı sürümüne sahip derlemelere ulaşır.
fingerprintpolitikası, yerel çalışma zamanını etkileyen her değişiklikte sürümü değiştirir; böylece uyumsuz güncelleme ihtimali çok düşer. - Yeniden başlatma. Release derlemeleri güncellemeyi arka planda indirir ve uygulama yeniden başladıktan sonra uygular. Test edicilerden uygulamayı kapatıp açmalarını iste, gerekirse iki kez.
- Yerel değişiklikler derleme ister. Yeni izinler, config plugin'ler ya da yerel kitaplıklar test edicilere yalnız kapalı test kanalındaki yeni bir production derlemesiyle ulaşır; bu da Play Console'da görünür bir sürüm bırakır.
Sık sorulan sorular
Test ediciler Expo Go kullanmalı mı?
Hayır. Test ediciler uygulamanı opt-in bağlantısıyla Google Play'den kurar; yani kapalı test kanalındaki bir production EAS derlemesini. Expo Go ve development derlemeleri senin içindir, 12 test edicin için değil.
Önce kendi telefonuma bir derleme koyabilir miyim?
Evet. Bir preview profilinde android altına "buildType": "apk" ekle ve eas build -p android --profile preview çalıştır. Bir .aab doğrudan kurulamaz; yalnız Google Play içindir.
Hangi çalışma zamanı sürümü politikasını seçmeliyim?
appVersion basittir ama uygulama sürümünü artırmadan yerel kodu değiştirirsen derlemeler ve güncellemeler eşleşmez olur. fingerprint yerel değişiklikleri otomatik izler, karşılığında daha sık derleme gerekir; kısa bir kapalı teste genellikle bu uyar.
Bir güncelleme uygulamayı bozarsa ne olur?
Güncelleme derlemede olmayan yerel kodu çağırırsa expo-updates hatayı fark edip önceki çalışan güncellemeye geri dönebilir. Son kararlı güncellemeyi bozuk olanın üzerine yeniden de yayınlayabilirsin.
Kaynaklar
Teknik ayrıntılar aşağıdaki resmi belgelerle kontrol edildi. Menüler ve varsayılanlar sürümden sürüme değişir; şüphede kalırsan resmi sayfa esastır.
- Expo: Submit to the Google Play Store
- Expo: App version management
- Expo: eas.json reference
- Expo: Managed credentials
- Android Developers: Target API level requirements
- Expo: EAS Update introduction
- Expo: Runtime versions and updates
- Expo: Debugging runtime issues
- Expo: Build APKs for Android emulators and devices
- Play Policy: Device and Network Abuse
- Play Console Help: Pre-launch reports
- Play Console Help: App testing requirements for new personal developer accounts
- Play Console Help: Set up an open, closed, or internal test
- Play Console Help: Deobfuscate or symbolicate crash stack traces
12 test edici kuralında yeni misin?
Genel rehber Google'ın şartını, bir TestBunny kampanyasının gün gün nasıl ilerlediğini ve neyi garanti edip edemediğimizi anlatır.
Genel rehberi oku