Snapshot (Fastlane) — özü, ekran görüntüsü oluşturma ve mobil uygulamalarda kurulum

Yazar: IT Sectr Yayınlanma: 2026-04-15 Okuma süresi: 10 dk

Snapshot (Fastlane), desteklenen tüm cihazlarda ve dillerde iOS uygulamalarının otomatik ekran görüntüsü oluşturma aracıdır. Simülatör aracılığıyla manuel ekran görüntüsü oluşturmanın aksine, Snapshot UI testlerini çalıştırır ve uygulamanın belirtilen noktalarında ekran görüntüsü alır. Resmi Fastlane belgelerine (2026) göre, Snapshot sürüm için ekran görüntüsü hazırlama süresini 4 saatten 15 dakikaya düşürür.

Ana noktalar

  • Snapshot, tüm cihazlarda ve dillerde UI testleri aracılığıyla iOS uygulamalarının otomatik ekran görüntüsü oluşturması için bir Fastlane yardımcı programıdır.
  • Araç, XCTest UI testleriyle entegre olur: geliştirici, uygulamanın önemli ekranlarında görüntüleri yakalamak için test koduna snapshot() komutları ekler.
  • Snapshot, App Store tarafından gereken tüm iPhone ve iPad cihaz boyutlarını destekler: 6.5, 5.5, 6.7, 12.9 inç ve diğer ekran formatları.
  • Yapılandırma, oluşturma için cihazların, dillerin, yerelleştirmenin ve simülatör başlatma parametrelerinin belirtildiği Snapfile dosyası aracılığıyla yapılır.
  • Sonuçlar, Deliver ile uyumlu screenshots/ dizininde kaydedilir — ekran görüntüleri ek işlem gerektirmeden App Store'a yüklenmeye hazırdır.

Snapshot (Fastlane) nedir?

Snapshot (Fastlane), App Store için uygulama ekran görüntüsü oluşturmayı otomatikleştiren Fastlane ekosisteminin bir bileşenidir. iOS simülatörlerinde UI testlerini çalıştırır, belirtilen uygulama durumlarında ekran görüntüleri alır ve her dil ve cihaz için doğru adlarla yapılandırılmış bir dizine kaydeder.

Snapshot olmadan, geliştiriciler simülatörü manuel olarak başlatır, her ekranı açar, Cmd+S ile ekran görüntüsü alır, dili değiştirir ve tüm kombinasyonlar için işlemi tekrarlar. Ekran görüntüsü otomasyonu, ASO optimizasyonunun önemli bir unsurudur, çünkü App Store her yeni sürüm için güncel ekran görüntüleri gerektirir ve 60+ ekran görüntüsünü manuel olarak güncellemek saatler süren çalışma gerektirir.

App Store Connect Belgelerine (2025) göre, yerelleştirilmiş ekran görüntülerine sahip uygulamalar, hedef ülkelerde %25 daha fazla dönüşüm elde eder. Snapshot, ekiplerin tek bir çalıştırmada 32 dil için görsel içeriği güncellemesine olanak tanır; bu, uygulamanın yeni özelliklerine bağlı pazarlama kampanyaları için özellikle önemlidir.

App Store'da yayınlanan herhangi bir projede Snapshot'ı kullanın — sürüm sürecini otomatikleştirmek ve ASO'yu iyileştirmek isteyen ekipler için standart araçtır.

Snapshot ekran görüntülerini nasıl oluşturur

Snapshot'ta ekran görüntüsü oluşturma süreci birkaç aşamadan oluşur: UI testlerinin hazırlanması, Snapfile'ın yapılandırılması, simülatörlerin başlatılması ve sonuçların toplanması. Snapshot, belirtilen cihazlar ve diller için sırayla her simülatörü başlatır, UI testlerini çalıştırır ve snapshot() işlevinin çağrıldığı noktalarda ekran görüntüsü alır.

Tüm testler tamamlandıktan sonra Snapshot, App Store gereksinimlerini karşılayan adlarla screenshots/[Language]/ dizininde ekran görüntülerini toplar. Her ekran görüntüsü, hedef cihaza karşılık gelen çözünürlükte PNG formatında kaydedilir. Snapshot ayrıca oluşturulan tüm ekran görüntülerinin görsel doğrulaması için bir HTML raporu oluşturur.

Snapshot için UI testleri ayarlama

Snapshot'ın çalışması için, uygulamanın XCTest UI test koduna snapshot() çağrıları eklemek gerekir. İşlev, çağrı anında mevcut ekran durumunun ekran görüntüsünü alır. Geliştirici, her önemli eylemden (ekran açma, veri girişi, sekmeler arasında gezinme veya sonuçları görüntüleme) sonra snapshot() yerleştirir.

UI test yapısı örneği: test uygulamaya giriş yapar, giriş ekranını yakalamak için snapshot("01-LoginScreen") çağrısı yapar, ardından ana ekrana gider ve ana ekranı yakalamak için snapshot("02-HomeScreen") çağrısı yapar. XCTest, iOS uygulamalarının birim ve UI testi için Apple'ın framework'üdür ve doğrudan Xcode'a entegre edilmiştir.

objective-c
// Snapshot için UI testi
- (void)testScreenshots {
    XCUIApplication *app = [[XCUIApplication alloc] init];
    [app launch];
    
    snapshot(@"01-LoginScreen");
    
    [app.textFields[@"email"] tap];
    [app.textFields[@"email"] typeText:@"user@company.com"];
    [app.buttons[@"Login"] tap];
    
    snapshot(@"02-HomeScreen");
}

Diller ve cihazlarla çalışma

Snapshot, Snapfile'da belirtilen her dil için simülatör dilini otomatik olarak değiştirir. Uygulama ilgili yerelleştirme ile başlatılır ve UI testleri bu dilde çalışır. Ekran görüntüsü yerelleştirmesi, ASO için kritik bir faktördür: kullanıcıların %75'i, App Store'daki ekran görüntüleri de dahil olmak üzere ana dillerinde içeriğe sahip uygulamaları tercih eder.

Her cihaz için Snapshot, ilgili ekran boyutunda ayrı bir simülatör başlatır. App Store tarafından gereken tüm boyutlar desteklenir: iPhone 6.5 inç (iPhone 15 Pro Max), 5.5 inç (iPhone 8 Plus), 6.7 inç (iPhone 15 Plus) ve iPad 12.9 inç. iOS Simülatörü, fiziksel bir cihaz olmadan uygulamaları test etmek için Xcode'da yerleşik olarak bulunan bir iOS cihazının yazılım emülasyonudur.

bash
# Tüm cihazlar ve diller için ekran görüntüleri oluştur
fastlane snapshot

# Yalnızca belirtilen cihazlar için oluştur
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# Ekran görüntüsü oluşturmadan önce temizle
fastlane snapshot --reinstall_app --erase_simulator

Snapfile ile Snapshot yapılandırması

Snapfile, ekran görüntüsü oluşturma parametrelerini (cihaz listesi, diller, zaman aşımı ve başlatma seçenekleri) tanımlayan bir Fastlane yapılandırma dosyasıdır. Snapfile, fastlane dizininde saklanır ve projeyle birlikte sürümlenir, böylece tüm ekip üyeleri için birleşik bir yapılandırma sağlanır.

ruby
# Snapfile — ekran görüntüsü yapılandırması
devices([
    "iPhone 15 Pro Max",
    "iPhone 15",
    "iPad Pro (12.9-inch)"
])

languages([
    "en-US",
    "ru",
    "de-DE"
])

scheme("MyAppUITests")
output_directory("./screenshots")
clear_previous_screenshots(true)
reinstall_app(true)
erase_simulator(true)

clear_previous_screenshots parametresi, oluşturmaya başlamadan önce eski ekran görüntülerini siler — bu, çıktı dizininde güncelliğini yitirmiş ekran görüntülerinin birikmesini önler. reinstall_app, her çalıştırmadan önce uygulamayı simülatöre yeniden yükleyerek yeni oluşturma üzerinde önceki testlerin etkisi olmadan temiz bir oturum sağlar.

erase_simulator parametresi, testlere başlamadan önce simülatör içeriğini (önbellek, ayarlar ve önceki oturumların verileri dahil) temizler. Bu, özellikle uygulamanın ilk başlatılmasını veya karşılama akışını kontrol eden testler için önemlidir. Snapshot ayrıca simülatördeki iOS sürümünü belirtmek için ios_version parametresini ve ilk UI testi hatasında oluşturmayı durdurmak için stop_after_first_error'u destekler.

SwiftUI projeleri için, sistem bölgesini değiştirmek yerine simülatör ayarları aracılığıyla dil değiştirmeyi kontrol eden use_simulator_for_language parametresi mevcuttur. Snapshot ayrıca uygulama başlatılırken ek argümanlar iletmek için launch_arguments'u destekler — farklı arka uç yapılandırmaları veya A/B testleri için kullanışlıdır.

Ekran görüntüsü oluşturma için Snapshot komutları

Snapshot arayüzü, oluşturmayı başlatmak için temel komutları ve süreç üzerinde hassas kontrol için genişletilmiş bayrakları içerir. Ana komut fastlane snapshot, Snapfile yapılandırmasına dayalı olarak tam ekran görüntüsü oluşturma döngüsünü çalıştırır.

Hızlı oluşturma ve filtreleme

fastlane snapshot --devices "iPhone 15" komutu, Snapfile'daki diğerlerini yok sayarak yalnızca belirtilen cihazlar için ekran görüntüleri oluşturur. --languages "en-US,ru" oluşturma için dilleri filtreler. Bu bayrakların kombinasyonu, 5 cihaz ve 10 dil için 30 dakikaya kadar sürebilen tam oluşturma döngüsü olmadan tek bir cihaz ve dilde ekran görüntülerini hızlıca kontrol etmek için kullanışlıdır.

bash
# Tek cihaz için hızlı oluşturma
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# Uygulama yeniden yükleme ile oluştur
fastlane snapshot --reinstall_app --erase_simulator

# HTML raporu ile oluştur
fastlane snapshot --output_directory "./build/screenshots"

--output_directory bayrağı, sonuçların kaydedilme dizinini değiştirir. Varsayılan olarak Snapshot, ekran görüntülerini fastlane/screenshots dizinine kaydeder. Deliver ile entegrasyon için, beklenen Deliverfile yapısıyla eşleşen bir dizin belirtin — bu, ekran görüntülerinin klasörler arasında manuel dosya kopyalama olmadan doğrudan yayınlama sürecine iletilmesini sağlar.

Snapshot ParametresiAmaçÖrnek
devicesOluşturma için cihaz listesiiPhone 15, iPad Pro
languagesYerelleştirme dilleri listesien-US, ru, de-DE
reinstall_appTestlerden önce uygulamayı yeniden yükletrue / false
erase_simulatorBaşlatmadan önce simülatörü temizletrue / false
clear_previousEski ekran görüntülerini siltrue / false

Snapshot'ı CI/CD hattına entegre etme

CI/CD'de Snapshot, her sürüm commit'inde otomatik ekran görüntüsü oluşturmadır. Snapshot, Deliver aşamasından önce çalıştırılarak App Store'daki ekran görüntülerinin mevcut uygulama sürümüyle eşleşmesini ve önceki sürümlerden güncelliğini yitirmiş arayüz öğeleri içermemesini sağlar.

Snapshot'ın CI'da çalışması için, iOS simülatörleri yüklü Xcode gereklidir. CI ortamlarında Snapshot, çalıştırıcıya önceden yüklenmiş Xcode simülatörlerini kullanır. GitHub Actions, ek yapılandırma gerektirmeden UI testlerini çalıştırmak için önceden yüklenmiş Xcode ve iOS simülatörleriyle görüntüler sağlar.

bash
# Snapshot'ı CI ortamında çalıştır
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# Ekran görüntülerini CI yapay ürünleri olarak kaydet
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

--skip_open_summary parametresi, oluşturma sonrasında HTML raporunun açılmasını devre dışı bırakır — CI ortamlarında grafik arayüz mevcut değildir. Oluşturma sonuçları, CI görev yapay ürünü olarak iletilen bir dizine kaydedilir ve ardından Deliver tarafından sürümle birlikte App Store'a yüklemek için kullanılır.

CI hattını hızlandırmak için, concurrent_simulators aracılığıyla paralel ekran görüntüsü oluşturma kullanın — aynı anda birden çok simülatörü başlatan bir Snapfile parametresidir. Bu, 4 paralel iş parçacığı kullanıldığında 5 cihaz ve 10 dil için ekran görüntüsü oluşturma süresini 40 dakikadan 15 dakikaya düşürür.

Snapshot ile çalışırken sık karşılaşılan hatalar

Snapshot kullanırken, geliştiriciler en sık UI testi dengesizliği, simülatör sorunları ve yanlış cihaz yapılandırmasıyla ilgili hatalarla karşılaşır. Snapshot'ta hata teşhisi, her adımın ekran görüntülerini ve başarısız testler hakkında bilgileri içeren HTML raporunun analiziyle başlar.

"Failed to build scheme MyAppUITests" hatası, UI test şeması derleme için yapılandırılmadığında oluşur. Çözüm: Xcode'da UI testleri için ayrı bir Scheme oluşturulduğundan ve komut satırı erişimi için Shared seçeneğinin etkinleştirildiğinden emin olun. Xcode Scheme, her eylem için hedefler ve parametreler kümesini tanımlayan uygulamanın derleme, test ve çalıştırma yapılandırmasıdır.

"No simulators found matching..." hatası, belirtilen cihaz türü veya iOS sürümüyle eşleşen simülatör olmadığını belirtir. Çözüm: simülatör oluşturmak için xcrun simctl create komutunu çalıştırın veya xcrun simctl list listesinden mevcut bir cihaz belirtin. xcrun simctl, iOS simülatörlerini yönetmek için Xcode komut satırı yardımcı programıdır: oluşturma, silme, başlatma ve teşhis.

"UI test failure" hatasında UI testi dillerden veya cihazlardan birinde başarısız olur. Çözüm: --stop_after_first_error bayrağıyla Snapshot'ı çalıştırın, ilk hatada durun, HTML raporundaki ekran görüntüsünü analiz edin ve testi düzeltin. Yaygın bir neden, farklı dillerde farklı metin uzunluğudur, bu da arayüz öğelerinin üst üste binmesine veya ekran sınırlarının dışına çıkmasına neden olur.

Sıkça sorulan sorular

Snapshot hangi iOS cihazlarını destekler?

Snapshot, iPhone 15 Pro Max (6.7 inç), iPhone 15 (6.1 inç), iPad Pro 12.9 inç ve iPad mini dahil olmak üzere tüm iPhone ve iPad ailesi cihazlarını destekler. Her cihaz için Snapshot, Xcode'dan ilgili simülatör görünümlerini yükleyerek doğru ekran çözünürlüğünü sağlar.

Snapshot'ın çalışması için gerçek cihazlar gerekli mi?

Hayır, Snapshot yalnızca Xcode'daki iOS simülatörleriyle çalışır. Gerçek cihazlar gerekli değildir ve desteklenmez — tüm ekran görüntüleri simülatör ortamında oluşturulur ve App Store gereksinimleri için aynı çözünürlük ve renk üretimini sağlar.

Snapshot, ekran görüntülerindeki metin yerelleştirmesini nasıl işler?

Snapshot, Snapfile'daki her dil için UI testlerini çalıştırmadan önce simülatör dilini değiştirir. Uygulama, sistem yerelleştirme ayarları aracılığıyla ilgili dilde görüntülenir. UI testleri, NSLocalizedString aracılığıyla yerelleştirilmiş dizeleri kullanarak tüm ekran görüntülerinde doğru metni sağlar.

macOS uygulamaları için ekran görüntüleri oluşturulabilir mi?

Evet, Snapshot Fastlane sürüm 2.200'den itibaren macOS uygulamalarını destekler. macOS için, app_platform("macOS") parametresi aracılığıyla Snapfile'da platformu belirtin. Snapshot, macOS'ta UI testlerini çalıştırır ve Mac App Store gereksinimlerine göre ekran görüntüleri oluşturur.

Snapshot'ın Cmd+S ile normal ekran görüntüsünden farkı nedir?

Manuel ekran görüntüsü, her ekranı manuel olarak açmayı, dilleri değiştirmeyi, cihazları değiştirmeyi gerektirir — tam bir set için yaklaşık 60 işlem. Snapshot tüm süreci otomatikleştirir: dilleri ve cihazları değiştirir, UI testlerini çalıştırır ve App Store için doğru adlarla ekran görüntülerini 15 dakikada kaydeder.

Özet

  • Snapshot, tüm cihazlarda ve dillerde XCTest UI testleri aracılığıyla iOS uygulamalarının otomatik ekran görüntüsü oluşturması için bir Fastlane yardımcı programıdır.
  • Geliştirici, uygulamanın önemli noktalarında UI test koduna snapshot() çağrıları ekler — Snapshot bu konumlarda ekran görüntüleri alır.
  • Snapfile aracılığıyla yapılandırma, cihazların, dillerin ve simülatör parametrelerinin listesini tanımlar: devices, languages, reinstall_app ve erase_simulator.
  • Sonuçlar, App Store'a doğrudan yükleme için Deliver ile uyumlu biçimde screenshots/[Language]/ dizininde kaydedilir.
  • CI/CD entegrasyonu, süreci hızlandırmak için paralel simülatörlerle her sürümden önce otomatik olarak güncel ekran görüntüleri oluşturulmasını sağlar.
  • Yaygın Snapshot hataları, farklı dillerde dengesiz UI testleri, Xcode'da simülatör eksikliği veya yanlış Scheme yapılandırmasıyla ilgilidir.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun