Screengrab (Fastlane) — nedir, özellikleri ve ekran görüntüsü otomasyonu

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

Screengrab, Android ve iOS’ta mobil uygulamalar için ekran görüntüsü oluşturmayı otomatikleştiren Fastlane ekosisteminden bir araçtır. Onlarca cihazda ekranları manuel olarak kaydırmak yerine, geliştirici tek bir komut çalıştırır ve Screengrab bağımsız olarak gereken tüm ekranları yakalar. Fastlane Docs, 2026’ya göre, araç aynı anda 30 dile ve yapılandırmada belirtilen herhangi bir ekran çözünürlüğüne kadar destekler.

Önemli Noktalar

  • Screengrab — Android ve iOS’ta mobil uygulamalar için otomatik ekran görüntüsü oluşturma aracı.
  • Otomasyon, yüzlerce ekran görüntüsünün manuel oluşturulmasını terminalde tek bir komutla değiştirir.
  • Yerelleştirme — ek yapılandırma olmadan onlarca dilde eş zamanlı ekran görüntüsü oluşturma.
  • CI/CD — herhangi bir boru hattıyla entegrasyon: Jenkins, GitHub Actions, GitLab CI.
  • Esneklik — tek bir çalıştırmada birden çok cihaz, yönlendirme ve dil desteği.

Screengrab Nedir ve Neden Gereklidir

Screengrab, mobil uygulamaların otomatik ekran görüntüsü oluşturması için tasarlanmış Fastlane ekosisteminin bir bileşenidir. Araç, 2015 yılında şu soruna yanıt olarak ortaya çıktı: Google Play ve App Store’da yayınlamak için her dil için 4 ila 10 ekran görüntüsü gerekir. 30 dil desteğiyle bu, 120–300 manuel çekim anlamına gelir.

Manuel Ekran Görüntüsü Oluşturma Sorunu

Bir geliştirici, uygulamayı bir simülatör veya cihazda manuel olarak başlatır, istenen ekrana kaydırır, ekran görüntüsü alır, bilgisayara aktarır, kırpar ve doğru klasöre kaydeder. Prosedür her dil ve her yönlendirme için tekrarlanır. Google Play Console’a göre, ortalama bir uygulama iki haftada bir güncellenir ve bu da ekran görüntülerini düzenli bir rutin haline getirir.

Otomasyonun Avantajları

Screengrab sorunu kökten çözer: geliştirici bir UI çerçevesi (Android için Espresso, iOS için XCTest) kullanarak test senaryolarını tanımlar ve Screengrab bunları gereken tüm cihazlarda ve dillerde otomatik olarak çalıştırır. Fastlane süreci koordine eder: uygulamayı derler, testleri çalıştırır, ekran görüntülerini toplar ve bunları gerekli klasör yapısına paketler.

Sonuç — birkaç saatlik manuel çalışma yerine 10–15 dakikada yüz ekran görüntüsü. Google, önemli her arayüz değişikliğinde ekran görüntülerinin güncellenmesini önerir ve otomasyon olmadan bu öneri genellikle göz ardı edilir.

Screengrab Nasıl Çalışır: Mimari ve Çalışma Prensibi

Screengrab’in mimarisi, iki temel bileşen etrafında inşa edilmiştir: cihazdaki bir istemci (screengrab-lib) ve test yürütmesini ve sonuç toplamayı yöneten bir çalıştırıcı. Android’de enstrümante test çerçevesini kullanır; iOS’ta — XCTest.

Tek Bir Çalıştırmanın Yaşam Döngüsü

Fastlane, Screengrabfile yapılandırma dosyasını okuyan screengrab eylemini çağırır. Çalıştırıcı, bağlı screengrab-lib kitaplığıyla test APK’sını derler, bağlı cihazlara veya emülatörlere yükler ve ekran görüntüleri için ek açıklamalarla işaretlenmiş UI testlerini çalıştırır.

ruby
# Fastfile — ekran görüntüleri için lane açıklaması
lane :screenshots do
  capture_android_screenshots(
    output_directory: "fastlane/metadata/android/screenshots",
    locales: ["ru-RU", "en-US", "de-DE"],
    devices: ["pixel_6", "pixel_tablet"],
    use_tests_external_storage: true
  )
end

Çıktı Dosya Yapısı

Screengrab bir klasör hiyerarşisi oluşturur: dil → cihaz → ekran görüntüleri. Yapı, Google Play Console ve App Store Connect gereksinimleriyle tamamen eşleşir. App Store, her cihaz türü için kesin olarak tanımlanmış boyutlar gerektirir ve Screengrab, özelliklere tam olarak uygun çekimler yapar.

Çoklu Cihaz Desteği

Araç, bağlı tüm cihazlarda ve emülatörlerde paralel olarak test çalıştırabilir. Android emülatörleri aktif değillerse otomatik olarak başlatılır. iOS için Screengrab, Xcode simülatörlerini kullanır.

Android için Screengrab Kurulumu ve Yapılandırması

Screengrab kurulumu iki bölümden oluşur: kitaplığı projeye ekleme ve yapılandırma dosyasını yapılandırma. Android’de, Espresso UI çerçevesi ve Fastlane deposundan screengrab-lib kitaplığı gereklidir.

Bağımlılıkları Ekleme

Uygulama modülünün build.gradle dosyasına screengrab-lib bağımlılığı eklenir. Kitaplık, çağrı anında ekran görüntüsü alan ScreenCapturer sınıfını sağlar.

groovy
// build.gradle (module: app)
androidTestImplementation(
  'tools.fastlane:screengrab-lib:2.1.0'
)

Ekran Görüntüleriyle Test Yazma

Bir UI testi, gerekli noktalarda Screengrab.screenshot() ek açıklamasıyla işaretlenir. Her çağrı, geçerli ekranı yakalar ve belirtilen adla kaydeder.

kotlin
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule

class ScreenshotTest {

    @get:Rule
    val localeTestRule = LocaleTestRule()

    @Test
    fun testTakeScreenshots() {
        Screengrab.screenshot("main_screen")
        // Eylemler: giriş düğmesine dokun
        Screengrab.screenshot("login_screen")
    }
}

Screengrabfile Yapılandırması

Screengrabfile dosyası, başlatma parametrelerini saklar: cihaz listesi, diller, zaman aşımları ve kaydetme yolu. Dosya genellikle Fastfile’ın yanındaki fastlane klasöründe bulunur.

Ekran Görüntüsü Yerelleştirmesi ve Birden Çok Dil

Yerelleştirme, Screengrab’in temel özelliğidir ve en sık seçilmesinin ana nedenidir. Araç, her test çalıştırmasından önce uygulama dilini otomatik olarak değiştirir ve belirtilen tüm dillerde ekran görüntüleri alır.

Dil Yapılandırması

Diller, Screengrabfile’da locales parametresi kullanılarak ayarlanır. Her dil için Screengrab, uygulamayı ilgili kaynaklarla yeniden yükler ve tam test döngüsünü çalıştırır. Android’de LocaleTestRule, cihazın yerel ayarını otomatik olarak değiştirir.

ruby
# Screengrabfile
locales [
  "ru-RU",
  "en-US",
  "de-DE",
  "fr-FR",
  "es-ES",
  "ja-JP",
  "ko-KR"
]

Yerelleştirilmiş Ekran Görüntüleri için Klasör Yapısı

Screengrab, şu şemaya göre dizinler oluşturur: screenshots/{locale}/{device_name}/{screenshot_name}.png. Bu yapı, Google Play gereksinimleriyle doğrudan eşleşir ve Fastlane deliver aracılığıyla tek bir komutla ekran görüntülerinin yüklenmesine olanak tanır.

iOS için, App Store Connect ekran görüntülerini dile göre düz bir yapıda bekler. Fastlane, yayınlama sırasında Screengrab hiyerarşisini otomatik olarak gerekli biçime dönüştürür.

Screengrab’i CI/CD Boru Hattına Entegre Etme

CI/CD entegrasyonu, Screengrab’in ana avantajlarından biridir. Araç, komut satırından çalışır ve grafik arayüz gerektirmez, bu da onu sunucu derlemeleri için ideal kılar.

GitHub Actions

Bir CI ortamında, bir Android emülatörü veya iOS simülatörü başlatmanız ve ardından ekran görüntüleriyle lane’i çağırmanız gerekir. GitHub Actions, AVD önbelleklemesini destekleyerek tekrarlanan çalıştırmaları hızlandırır.

CI için Parametreler

CI yapılandırmasında bellek ve zaman sınırlamalarını dikkate almak önemlidir. Android emülatörleri cihaz başına en az 2 GB RAM gerektirir ve 7 dilde ve 2 cihazda tam bir çalıştırma 20–40 dakika sürer.

ruby
# Fastfile — zaman aşımlı CI için lane
lane :ci_screenshots do
  capture_android_screenshots(
    locales: ["en-US", "ru-RU"],
    devices: ["pixel_6"],
    clear_previous_screenshots: true,
    tests_timeout: "600",
    output_directory: "screenshots/ci"
  )
end

Jenkins Pipeline

Jenkins için, bundle exec fastlane çağrısıyla sh adımı kullanılır. Geliştirme döngüsünü yavaşlatmamak için ekran görüntülerinin gece veya ana dalda birleştirmeden sonra tetikleyiciyle çalıştırılması önerilir.

Screengrab ve Alternatifleri: Araç Karşılaştırması

Screengrab, ekran görüntüsü otomasyonu için tek araç değildir. Farklı yaklaşımlara sahip alternatifler mevcuttur: yerleşik işletim sistemi araçları, ticari platformlar ve kod içi ekran görüntüsü kitaplıkları.

AraçPlatformYerelleştirmeCI/CD
ScreengrabAndroid, iOSOtomatikYerel
ADB ShellAndroidManuelKomut dosyalarıyla
XCTestiOSManuelxcodebuild ile
Firebase Test LabAndroidYapılandırma gerektirirEvet
AppiumPlatformlar arasıManuelWebDriver ile

ADB Shell tam kontrol sağlar ancak her senaryo için komut dosyası yazılmasını gerektirir. XCTest, Xcode’a entegredir ancak yerelleştirmeyi otomatik olarak yönetmez. Firebase Test Lab, bulutta gerçek cihazlarda testler çalıştırarak maksimum kapsama alanı sağlar ancak dakika başına ücret alır.

Screengrab kombinasyon sayesinde kazanır: Fastlane, derlemeden yayınlamaya kadar tüm derleme yaşam döngüsünü yönetir. Google Play, Fastlane deliver aracılığıyla Screengrab klasör yapısını doğrudan kabul eder.

Yaygın Sorunlar ve Çözümleri

Screengrab ile çalışırken geliştiriciler en çok birkaç tekrarlanan sorunla karşılaşır. Yaygın hataları bilmek, ilk çalıştırmada hata ayıklama süresini kısaltır.

Ekran Görüntüleri Boş veya Siyah Çıkıyor

Sorun, Screengrab ekran oluşturma tamamlanmadan önce ekran görüntüsü aldığında ortaya çıkar. Çözüm, screenshot() çağırmadan önce bir Thread.sleep() gecikmesi eklemek veya eşzamansız işlemleri beklemek için Espresso’nun IdlingResource’unu kullanmaktır.

Sürüm Uyumsuzluğu Hatası

screengrab-lib sürümü, Fastlane sürümüyle eşleşmelidir. Fastlane aylık olarak güncellenir ve eski bir kitaplık yeni yapılandırma parametrelerini desteklemeyebilir. Çözüm, sürümleri Gemfile ve gradle.properties aracılığıyla senkronize etmektir.

CI’da Uzun Çalıştırma Süresi

5 cihazda 30 dilde çalıştırma bir saatten fazla sürebilir. Çözüm, çalıştırmaları bölmektir: biri tüm dillerde mağaza için, diğeri iki dilde iç ihtiyaçlar için. GitHub Actions, paralel çalıştırmalar için matris stratejileri kullanılmasına izin verir.

CI’da Emülatör Sorunları

Android emülatörü, CI sunucularında her zaman bulunmayan donanım sanallaştırması gerektirir. KVM etkinleştirilmelidir, aksi takdirde emülatör başlatılmaz. Çözüm, GPU hızlandırması olmadan x86 görüntüleri veya Firebase Test Lab kullanmaktır.

Sıkça Sorulan Sorular

Screengrab, ADB aracılığıyla normal bir ekran görüntüsünden nasıl farklıdır?

ADB, ekranda o anda görüntüleneni yakalar. Screengrab, UI testleriyle entegre olur, otomatik olarak dilleri ve cihazları değiştirir ve insan müdahalesi olmadan bir senaryoya göre bir dizi ekran görüntüsü alır.

Screengrab Fastlane olmadan kullanılabilir mi?

Hayır, Screengrab, Fastlane ekosisteminin bir bileşenidir ve derleme, yükleme ve koordinasyon için altyapısını kullanır. screengrab-lib kitaplığı ayrı olarak çalıştırılamaz — orkestratör olarak Fastlane gereklidir.

10 dilde ekran görüntüsü oluşturmak ne kadar sürer?

Tek bir cihazda, 10 dilde bir çalıştırma 15–25 dakika sürer. Her dil, uygulamanın yeniden yüklenmesini ve tam bir UI test döngüsünü gerektirir. Birden çok cihazda paralel çalıştırma, süreyi orantılı olarak azaltır.

Screengrab iOS uygulamalarını destekliyor mu?

Evet, Screengrab, XCTest ve Xcode simülatörleri aracılığıyla iOS’u destekler. Yapılandırma Android’e benzer: diller ve cihazlar eklenir ve Swift’teki UI testleri XCTest kullanılarak XCUIScreenshot ile yakalanarak yazılır.

Yalnızca yeni diller için ekran görüntüleri nasıl güncellenir?

Screengrab artımlı modu desteklemez — her çalıştırma tam bir ekran görüntüsü kümesi oluşturur. Ana çalıştırmadaki mevcut çekimlerin üzerine yazılmasını önlemek için sınırlı bir dil listesiyle CI için ayrı bir lane ayarlanması önerilir.

Özet

  • Screengrab — Android ve iOS’ta mobil uygulamaların ekran görüntülerini otomatikleştiren bir Fastlane bileşeni.
  • Otomasyon, yüzlerce ekran görüntüsünün manuel oluşturulmasını terminalde tek bir komutla değiştirir.
  • Yerelleştirme — araç, her test çalıştırmasından önce uygulama dilini otomatik olarak değiştirir.
  • CI/CD — grafik arayüz olmadan Jenkins, GitHub Actions, GitLab CI ve diğer boru hatlarıyla entegrasyon.
  • Yapı çıktı dosyalarının doğrudan yükleme için Google Play ve App Store gereksinimleriyle eşleşir.
  • Esneklik — birden çok cihaz, ekran yönlendirmesi ve özel test senaryoları için destek.
  • Tasarruf — her güncellemede birkaç saatlik manuel çalışma yerine 15 dakikada yüz ekran görüntüsü.

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