Expo ile mobil uygulamayı mağazaya göndermek
Expo ve EAS Build ile bir React Native uygulamasını App Store ve Google Play'e gönderme sürecinin gerçek deneyimi ve hazırlık adımları.
Looplio’nun ilk testable build’ini çıkardım; ama gerçek mağaza dağıtımı başka bir şeydi. Geliştirme ortamında çalışan bir uygulama ile mağazada yayınlanmış bir uygulama arasında teknik değil, süreçsel bir mesafe var. Bu mesafeyi geçmek beklediğimden uzun sürdü.
Expo ve EAS (Expo Application Services) bu süreci önemli ölçüde sadeleştiriyor; ama “sadeleştiriyor” kavramı her süreci ortadan kaldırmıyor.
Expo Go’dan EAS Build’e geçiş
Geliştirme sırasında Expo Go uygulaması üzerinde çalışmak hızlı; bir QR kod, telefon, anında test. Ama bu build üretim için kullanılamaz. Mağazaya göndermek için gerçek bir native build gerekiyor: iOS için .ipa, Android için .aab (Android App Bundle).
EAS Build burada devreye giriyor. Expo’nun bulut tabanlı build servisi; iOS ve Android native kodunu Expo’nun sunucularında derleyip size dosyayı teslim ediyor.
# EAS CLI kurulumu
npm install -g eas-cli
# Projeyi EAS'e bağla
eas init
# Build yapılandırması oluştur
eas build:configure
eas build:configure komutu eas.json dosyası oluşturuyor. Üç profil tanımlanabilir: development, preview, production. Production profili mağazaya gönderilecek build için.
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {
"autoIncrement": true
}
}
}
Sertifika ve imzalama
iOS’un en dikkat gerektiren kısmı burada. Apple Developer hesabı gerekiyor; her yıl 99 dolar. EAS, sertifika ve provisioning profile yönetimini otomatikleştirebiliyor — eas credentials komutu ile Expo’nun yönetimine bırakabilir ya da kendi sertifikalarınızı kullanabilirsiniz.
İlk seferde Expo’nun otomatik yönetimine bıraktım. Birkaç soruyu yanıtladıktan sonra gerekli sertifikaları oluşturup build’e bağladı. Bu kısım elle yönetmeye çalışsaydım çok daha uzun sürerdi.
Android’de imzalama benzer; keystore dosyası oluşturmak gerekiyor. EAS bunu da yönetebiliyor. Önemli not: bu dosyayı kaybetmek uygulamayı güncelleyemez hâle getiriyor. Yedekleyin.
app.json / app.config.js yapılandırması
Build öncesi yapılandırma dosyası eksiksiz olmalı. En sık atlanan alanlar:
{
"expo": {
"name": "Looplio",
"slug": "looplio",
"version": "1.0.0",
"ios": {
"bundleIdentifier": "com.looplio.app",
"buildNumber": "1"
},
"android": {
"package": "com.looplio.app",
"versionCode": 1
}
}
}
bundleIdentifier ve package değerleri mağaza kaydında kullandığınız değerlerle eşleşmeli. Bir kez belirlendi mi değiştirmek ciddi sorun çıkarır; dikkatle seçin.
Build çalıştırmak
# iOS için production build
eas build --platform ios --profile production
# Android için production build
eas build --platform android --profile production
# Her ikisi için
eas build --platform all --profile production
Build Expo’nun sunucularında çalışıyor; terminal kapasanız da devam ediyor. Tamamlandığında bir indirme bağlantısı geliyor. iOS için .ipa, Android için .aab dosyası.
İlk build iOS’ta yaklaşık 20 dakika sürdü. Sonraki build’ler daha hızlı; bağımlılıklar önbellekten geliyor.
App Store Connect ve Google Play Console
Build dosyaları elinizde; şimdi mağaza tarafı. iOS için App Store Connect’te uygulama kaydı açmak, Android için Google Play Console’da.
Her mağazanın kendine özgü gereksinimleri var:
App Store: Gizlilik politikası URL’si zorunlu. Uygulama açıklaması ve ekran görüntüleri birden fazla cihaz boyutu için gerekiyor (iPhone ve iPad ayrı). Kategori, dil, yaş derecelendirmesi, fiyatlandırma. İnceleme süreci 24-72 saat.
Google Play: Gizlilik politikası zorunlu. Uygulama açıklaması, ekran görüntüleri. Hedef kitle ve içerik derecelendirmesi formu. İlk inceleme App Store’a kıyasla biraz daha uzun; sonraki güncellemeler daha hızlı.
EAS Submit
EAS’in ikinci büyük özelliği: build’i otomatik olarak mağazaya göndermek.
# iOS için App Store'a gönder
eas submit --platform ios --latest
# Android için Google Play'e gönder
eas submit --platform android --latest
Bunun için App Store Connect API anahtarı ve Google Play servis hesabı JSON dosyası gerekiyor. Bir kez yapılandırınca her seferinde manuel yükleme yapmak zorunda kalmıyorsunuz.
Sürecin gerçeği
“Uygulamayı mağazaya göndermek” bir günlük iş. Ama ilk seferinde — hesap açmak, belgeleri hazırlamak, yapılandırmayı doğrulamak, incelemeyi beklemek — bir haftaya yayılabilir. Bu beklentiyle planlama yapmak önemli.
EAS bu sürecin teknik tarafını önemli ölçüde kolaylaştırdı. Mağaza gereksinimleri, inceleme politikaları — bunlar her zaman orada olacak. Ama en azından native Xcode ve Android Studio karmaşasından büyük ölçüde uzak durabiliyorsunuz.
Looplio için süreç tamamlandı; uygulama her iki mağazada da. Bir sonraki güncelleme çok daha hızlı olacak.