İçeriğe geç

Kurulum rehberleri · Expo

Expo (EAS) uygulamaları için Google Play kapalı testi

EAS Build ile derlenen Expo projeleri için: üretim .aab dosyası çıkar, anahtar deposunu EAS'e bırak, paketi kapalı test kanalına koy ve 12 test ediciyi 14 gün opt-in tut. EAS'siz çıplak React Native mi? React Native rehberine bak.

Derleme
eas build -p android --profile production
Sürüm kodu
eas.json → autoIncrement
Hedef API
targetSdkVersion ≥ 36

EAS ile üretim paketini derle

  1. Paket adını belirle

    app.json (ya da app.config.js) içinde android.package değerini ayarla, örneğin com.yourcompany.app. İlk yüklemeden sonra kalıcıdır.

  2. EAS'i kur ve yapılandır

    Aşağıdaki komutlarla CLI'ı kur, giriş yap ve eas.json dosyasını oluştur. Oluşan dosyada bir production profili zaten vardır.

  3. Derle

    Üretim derlemesini çalıştır. Varsayılan üretim profili EAS sunucularında bir Android App Bundle oluşturur; kendi makinende derlemek için --local ekle.

  4. Paketi indir

    Derleme bitince .aab dosyasını expo.dev'deki derleme sayfasından ya da terminaldeki bağlantıdan indir.

Terminal
npm install -g eas-cli
eas login
eas build:configure
Terminal
eas 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.

Terminal
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:

eas.json
{
  "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 android varsayı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 .aab dosyası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: true olan bir derleme geliştirme sunucusu bekler. Test edicilerin üretim profilini aldığından emin ol.
  • Eksik ortam değişkenleri. git'in yok saydığı .env dosyası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.
Terminal
eas submit -p android --profile production

Derlemenin 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.

  1. Production modunu yerelde çalıştır

    npx expo start --no-dev --minify JavaScript'ini bir release paketi gibi çalıştırır ve geliştirme modunun hiç fırlatmadığı hataları gösterir.

  2. 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.

  3. 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.

  4. JavaScript hatalarını okunur yap

    Sentry kullanıyorsan, SENTRY_AUTH_TOKEN hassas bir EAS ortam değişkeni olarak tanımlandığında EAS Build kaynak haritalarını otomatik yükler. eas update sonrasında npx 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ç, .aab dosyası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.

Play Console adımlarını aç

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.

Terminal
eas build -p android --profile production

Yalnı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.

Terminal
eas update --channel production --message "Fix checkout crash" --environment production
  • Kanallar. eas update:configure, preview ve production derleme profillerine bir channel ekler. Bir derleme yalnız kendi kanalına yayınlanan güncellemeleri alır. SDK 55'ten itibaren --environment zorunlu.
  • Çalışma zamanı sürümü. Bir güncelleme yalnız aynı çalışma zamanı sürümüne sahip derlemelere ulaşır. fingerprint politikası, 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.

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

14 gün için 12 gerçek test ediciye mi ihtiyacın var?

Uygulamanı ve kapalı test bağlantını ekle, Starter (15 test edici) ya da Pro (25 test edici) planını seç, her test edicinin etkinliğini panelinde gün gün izle.

TestBunny'nin Google ile bir bağlantısı yoktur. Test ediciler nakit değil, kredi kazanır. Google'ın üretim erişimi kararını kimse garanti edemez, biz de etmeyiz.