· Workflow · 9 dakika okuma

Expo App Store ekran görüntüleri: EAS Submit neden onları atlıyor ve hızlı nasıl gönderilir (2026)

Expo App Store ekran görüntüleri: EAS Submit neden onları atlıyor ve hızlı nasıl gönderilir (2026)
TL;DR. EAS Submit, .ipa/.aab dosyanı App Store Connect ve Play Console'a yükler — ve liste kaydın için yaptığı tek şey budur. Mağaza ekran görüntülerini oluşturmaz, yüklemez veya yönetmez. Bu yüzden Expo geliştiricilerinin ayrı bir ekran görüntüsü hattına ihtiyacı var: dev/önizleme derlemesinden kare yakalamak (simülatör, emülatör veya Maestro/Detox) ve ardından ham kareleri pazarlama panellerine dönüştürmek — çerçevelenmiş, metinli, çok dilli. Bu yazı yakalama komutlarını dürüstçe ele alıyor; ardından kompozisyon aracının nereye girdiğini açıklıyor — bu araç senin için hiçbir şeyi yakalamıyor.

Expo uygulaması gönderiyorsan, yayın sürecin muhtemelen tek bir satırda bitiyor: eas submit. EAS'ın ürettiği derleyi alıp Apple veya Google'a teslim ediyor. Temiz, sıradan, güvenilir. Ardından App Store Connect'i açıp derlemeyi yayına alıyorsun ve — ekran görüntüsü yuvaları boş. Her seferinde.

Bu durum pek çok kişiyi şaşırtıyor çünkü EAS her şeyi yapıyor gibi hissettiriyor. Derliyor, imzalıyor, gönderiyor. Ekran görüntülerini de halleder, değil mi? Hayır, halletmiyor; belgeler bunu açıkça söylüyor. Bu bir hata ya da şikayet edebileceğin eksik bir özellik değil — EAS Submit'in kapsamı dışında, nokta.

EAS Submit'in gerçekte ne yaptığı (ve ne yapmadığı)

EAS Submit bir ikili dosya teslim hizmetidir. Tam olarak bir şey yükler: derlenmiş uygulama arşivini — iOS için .ipa, Android için .aab — mağazanın işleme hattına. Expo belgeleri sınırı açıkça ortaya koyuyor:

"EAS Submit ikili dosyanı yükler ama mağaza listesi meta verilerini, ekran görüntülerini veya sürüm notlarını yönetmez."

Bir kardeş araç olan EAS Metadata, App Store listeni — uygulama adı, alt başlık, yerelleştirilmiş açıklamalar, anahtar kelimeler, destek URL'leri — bir yapılandırma dosyasından kısmen otomatize edebiliyor. Gerçekten kullanışlı ve kurulmaya değer. Ama kapsamını dikkatli oku: ekran görüntüleri yok. EAS Metadata metin gönderiyor, görsel değil. Her iki mağazadaki ekran görüntülerin sana ait; kendin üreteceksin, kendin yükleyeceksin.

Dolayısıyla Expo ekran görüntüsü sorunu iki ayrı işe bölünüyor; bunları zihninde ayrı tutman işe yarıyor:

  1. Yakalama — uygulamanın gerçek ekranlarından ham kareleri çıkarmak.
  2. Kompozisyon ve yerelleştirme — ham kareleri mağazaların gerçekten gösterdiği çerçeveli, metinli, çok dilli pazarlama panellerine dönüştürmek.

EAS ikisini de yapmıyor. Expo'nun kendi mağaza varlıkları rehberi seni kareleri kendin yakalamaya ve panelleri Figma gibi bir araçta tasarlamaya yönlendiriyor. Gelin her iki işi de somut komutlarla ele alalım.

İş 1: dev veya önizleme derlemesinden kare yakalama

Gerçek uygulamanın ekran görüntülerini istiyorsun, bu yüzden uygulamanın yakalayabileceğin bir yerde çalışması gerekiyor. Expo için bu, dev istemcisi veya önizleme derlemesi anlamına geliyor — Expo Go değil; çünkü Expo Go, Expo sarmalayıcı arayüzünü gösteriyor ve yerel yapılandırman farklı olabilir. Standart Expo komutlarıyla yerel olarak derle ve çalıştır:

  • npx expo run:ios — yerel iOS'u önceden derliyor, çalıştırıyor ve uygulamanı iOS Simulator'da başlatıyor.
  • npx expo run:android — aynısını Android emülatörü (veya bağlı bir cihaz) için yapıyor.

Uygulama iOS Simulator'da ekrandayken yakalama, Mac terminalinden tek bir komutla yapılıyor:

xcrun simctl io booted screenshot home.png

booted, halihazırda çalışan simülatörü hedef alıyor ve çalışma dizinine piksel-hassas bir PNG yazıyor. Mağaza çalışmaları için iki bayrak önemli: --type=png (varsayılan ve mağazaların istediği) ve --mask=ignored ile --mask=black — maske, çentiğin ve yuvarlak köşelerin görüntüye işlenip işlenmeyeceğini kontrol ediyor. App Store yüklemeleri için genellikle düz dikdörtgen pikseller isteniyor; cihaz çerçevesi daha sonra kompozisyon aşamasında ekleniyor, dolayısıyla maskelenmemiş yakalama çoğunlukla doğru başlangıç noktası.

Android'de emülatörden (veya cihazdan) doğrudan adb ile yakala:

adb exec-out screencap -p > home.png

exec-out kullan, shell screencap değil. Düz shell yolu, PNG'yi bazı kurulumlarda ikiliyi bozan bir sözde terminal üzerinden iletiyor (yabancı satır başı karakterleriyle bozulmuş bir dosya elde ediyorsun); exec-out baytları doğrudan akıtıyor ve güvenilir olan bu. Birden fazla emülatör çalıştırıyorsan, adb devices komutundan alınan adb -s <seri> ile birini hedef al.

Manuel yakalama araç seti bundan ibaret: iki komut, platform başına birer tane; Expo yerel derlemesi için zaten sahip olduğun Xcode ve Android SDK'nın ötesinde hiçbir bağımlılık yok.

İş 1, otomatik: Maestro veya Detox

Doğru ekrana gidip bu komutları elle çalıştırmak, bir avuç görüntü için gayet uygun. Ama iki cihaz sınıfında sekiz ekranın olduğu ya da ekran görüntülerinin gerçek arayüzden hiç sapmaması için her sürümde yeniden oluşturulmasını istediğin zaman, uygulamayı hem sürebilen hem de kare yakalayabilen bir uçtan uca test aracıyla yakalamayı otomatize ediyorsun.

Maestro, Expo'nun belgelenmiş EAS Workflows örneklerinde başvurduğu araç. Akışlar sade YAML, bu da giriş engelini düşük tutuyor. Bir ekrana gidip yakalayan bir akış şöyle görünüyor:

appId: com.you.yourapp --- - launchApp - tapOn: "Get started" - assertVisible: "Your dashboard" - takeScreenshot: dashboard

maestro test flows/home.yaml ile çalıştır. takeScreenshot komutu, test çıktı dizinine bir PNG yazıyor (MAESTRO_TESTS_DIR'i varlıkların nereye inmesini istersen oraya yönlendir). Aynı akışlar EAS Workflows üzerinde CI'da çalışıyor — Expo'nun belgelenmiş örneği, bir e2e-test derleme profiliyle bir .apk oluşturup ardından buna karşı bir .maestro/ akışı çalıştırıyor — böylece ekran görüntüsü yakalamayı e2e paketi çalıştıran aynı işe bağlayabiliyorsun.

Detox, daha sıkı ve programatik bir JavaScript API'siyle diğer yerleşik seçenek:

const path = await device.takeScreenshot('dashboard');

Ama Expo ile Detox kurulumu konusunda kendinle dürüst ol. Detox, Expo'yu resmi olarak desteklemiyor. Pratikte, yerel projeleri oluşturmak için npx expo prebuild yaparsan ve JS paketi gömülü bir sürüm tarzı istemci derlersen (dev istemcisi değil) — ardından Detox'u o ikili dosyaya yönlendirirsen çalışıyor. Maestro'nun YAML'ından daha fazla hareketli parça var ve karşılığı Detox'un daha katı senkronizasyon ve doğrulama API'si. Zaten Detox çalıştırıyorsan yakalama için yeniden kullan; sıfırdan seçim yapıyorsan ve hedefin mağaza ekran görüntüleri ise Maestro daha hafif yol.

İş 1, manuel: seyrek sürümler için doğru tercih

Otomasyon, sık gönderdiğinde karşılığını veriyor. Yılda bir ila üç sürüm yapıyorsan — ki bu çoğu bağımsız Expo uygulaması için geçerli — Maestro akışları veya Detox yapılandırması kurmak, bir kez ödeyip neredeyse hiç amorti edemeyeceğin bir iş. Bu kadans için sadece şunu yap:

  1. Derlemeyi başlat: npx expo run:ios / run:android, gerçekçi demo verileriyle doldur.
  2. Her ana ekrana elle git.
  3. Her birini yakala — yukarıdaki simctl / adb komutuyla.

Yirmi dakikalık tıklama, bir sonraki sürüme kadar nasıl bakacağını unutacağın yarım günlük test iskeletinden daha iyi. Manuel yakalamada utanılacak bir şey yok — mağazalar PNG'nin nasıl yapıldığını bilemez.

İş 2: kompozisyon ve 50 dilde yerelleştirme

İşte yakalama araçlarının kasıtlı olarak dokunmadığı ve mağazaların gerçekte seni değerlendirdiği kısım bu. Ham bir simctl PNG, beyaz arka planda uygulamanın arayüzü. Arama sıralamasını yükselten ve ürün sayfasında dönüşüm sağlayan şey pazarlama paneli: ekranın bir cihaz çerçevesi içinde, markalı bir arka plan üzerinde ve o ekranın neden önemli olduğunu anlatan tek satırlık bir metinle birlikte — genellikle soldan sağa okunan çok panelli bir karusel olarak. App Store'da ise ekran görüntüleri cihaz boyutuna ve dile göre yerelleştiriliyor; ciddi bir lansman beş değil, düzinelerce varyant demek.

İşte tam burada Mokbi devreye giriyor ve sınırı net koymak önemli. Mokbi uygulamanı yakalamıyor — kaynak kareleri yine yukarıdaki Expo komutlarıyla sen üretiyorsun. Yaptığı şey şu: o kareleri alıp tarayıcıda şunları yapmanı sağlıyor — gerçek cihaz çerçevelerine bırak, metinler ve degrade arka planlar ekle, çok panelli karuseller oluştur, metin metinlerini tek tıkla 50 dile çevir ve tüm App Store ile Play Store boyutlarını bir seferde toplu dışa aktar. Filigranlı önizlemeyle tasarım ücretsiz; sınırsız dışa aktarma bir abonelikle geliyor — Solo €29.99/mo (1 uygulama) veya Studio €49.99/mo (5 uygulamaya kadar), tek seferlik satın alma yok. Expo rehberinin geçiştirdiği Figma şablonu adımının yerini alıyor — ne fazlası ne eksiği.

Gerçekçi birleşik iş akışı

  1. Dev/önizleme istemcisi derle. npx expo run:ios ve npx expo run:android, iyi demo verileriyle doldur.
  2. Kaynak kareleri yakala. xcrun simctl io booted screenshot ve adb exec-out screencap -p ile manuel; ya da Maestro takeScreenshot / Detox device.takeScreenshot ile otomatik — her sürümde yeniden oluşturulmaları için tercihen EAS Workflows üzerinde.
  3. Pazarlama panellerini oluştur. Ham karelerden karuseli çerçeve, metin ve düzenle.
  4. Yerelleştir ve toplu dışa aktar. Metinleri hedef dillerine çevir, her iki mağaza için gereken her boyutu dışa aktar.
  5. Liste varlıklarını yükle. Ekran görüntülerini App Store Connect ve Play Console'a; metin alanları için kullanıyorsan EAS Metadata ile eşleştir.
  6. İkili dosyayı gönder. eas submit — EAS'ın gerçekten sahip olduğu tek adım.
  7. Sonraki sürümde: değişen ekranları yeniden yakala, kaydedilen kompozisyon projesini yeniden aç, kareleri değiştir, yeniden dışa aktar. Metinler ve çeviriler yerinde kalır.

Otomasyonu atlayabileceğin durumlar

Maestro veya Detox yakalamaya şu durumda başvur: ekran görüntüsü sapması gerçek bir maliyet haline geldiğinde — haftalık gönderiyorsun, arayüzün sürekli değişiyor ya da pek çok uygulamayı yönetip eski mağaza görselleri için karşılayamıyorsun. Bu durumlarda CI'da yeniden oluşturulan kareler karşılığını veriyor ve React Native ekran görüntüsü araç hikayesi (Expo'nun miras aldığı) yatırıma değiyor.

Herkes için — çeyrek başı bir kez gönderen için — atla. İki terminal komutuyla manuel yakalama, ardından tarayıcı tabanlı kompozisyon ve yerelleştirme; sürümler arası bakım gerektirmeden bir öğle sonrasında cilalı, çok dilli bir listeye ulaştırıyor. Araçları CI panonuzda etkileyici görünene değil, gönderim sıklığına göre seç.

Her iki durumda da ikili dosya tarafı çözülmüş: eas submit hallediyor. Yüklemeden önce ekran görüntülerini güncel mağaza gereksinimlerine göre kontrol et — Apple, tek bir piksel hatasında listeyi reddediyor — ve lansman artık yalnızca tasarım meselesi.

Sıradaki okuma

Editörü aç →