Screengrab (Fastlane) — bu nədir, imkanları və ekran görüntülərinin avtomatlaşdırılması

Müəllif: IT Sectr Dərc olunub: 2026-04-15 Oxuma vaxtı: 8 dəq

Screengrab — Android və iOS üçün mobil proqramların ekran görüntülərinin yaradılmasını avtomatlaşdırmaq üçün Fastlane ekosistemindən bir vasitədir. Onlarla cihazda ekranları əl ilə sürüşdürmək əvəzinə, tərtibatçı bir əmr işə salır və Screengrab müstəqil olaraq bütün lazımi ekranların şəkillərini çəkir. Fastlane Docs, 2026 məlumatlarına görə, alət eyni anda 30 dilə qədər və konfiqurasiyada göstərilən istənilən ekran təsvir ölçülərini dəstəkləyir.

Əsas məlumat

  • Screengrab — Android və iOS üçün mobil proqramların ekran görüntülərini avtomatik yaratmaq üçün Fastlane vasitəsidir.
  • Avtomatlaşdırma yüzlərlə ekran görüntüsünün əl ilə yaradılmasını terminalda bir əmrlə əvəz edir.
  • Lokallaşdırma — əlavə parametrlər olmadan onlarla dildə eyni vaxtda ekran görüntülərinin generasiyası.
  • CI/CD — istənilən pipeline-larla inteqrasiya: Jenkins, GitHub Actions, GitLab CI.
  • Çeviklik — bir işə salmada bir neçə cihaz, oriyentasiya və dilin dəstəklənməsi.

Screengrab nədir və nə üçün lazımdır

Screengrab — mobil proqramların ekran görüntülərini avtomatlaşdırılmış şəkildə yaratmaq üçün Fastlane ekosisteminin komponentidir. Alət 2015-ci ildə problemə cavab olaraq ortaya çıxdı: Google Play və App Store-da dərc etmək üçün hər dil üçün 4-dən 10-a qədər ekran görüntüsü tələb olunur. 30 dilin dəstəklənməsi ilə bu, 120–300 əl ilə çəkilmiş şəkil deməkdir.

Ekran görüntülərinin əl ilə yaradılması problemi

Tərtibatçı proqramı simulyatorda və ya cihazda əl ilə işə salır, lazımi ekrana qədər sürüşdürür, ekran görüntüsü çəkir, onu kompüterə köçürür, kəsir və lazımi qovluğa yerləşdirir. Prosedura hər dil və hər oriyentasiya üçün təkrarlanır. Google Play Console məlumatlarına görə, orta proqram iki həftədən bir yenilənir ki, bu da ekran görüntülərini müntəzəm bir rutinə çevirir.

Avtomatlaşdırmanın üstünlükləri

Screengrab problemi köklü şəkildə həll edir: tərtibatçı UI framework-də (Android üçün Espresso, iOS üçün XCTest) test ssenarilərini təsvir edir, Screengrab isə onları bütün lazımi cihazlarda və dillərdə avtomatik işə salır. Fastlane prosesi koordinasiya edir: build-i yığır, testləri işə salır, ekran görüntülərini toplayır və onları lazımi qovluq strukturuna yerləşdirir.

Nəticə — bir neçə saatlıq əl işi əvəzinə 10–15 dəqiqə ərzində yüz ekran görüntüsü. Google interfeysdə hər əhəmiyyətli dəyişiklikdən sonra ekran görüntülərini yeniləməyi tövsiyə edir və avtomatlaşdırma olmadan bu məsləhət çox vaxt nəzərə alınmır.

Screengrab necə işləyir: arxitektura və iş prinsipi

Arxitektura Screengrab iki əsas komponent ətrafında qurulub: cihazdakı müştəri (screengrab-lib) və testlərin işə salınmasını və nəticələrin toplanmasını idarə edən runner. Android-də instrumental test framework-u, iOS-da XCTest istifadə olunur.

Bir işə salmanın həyat dövrü

Fastlane screengrab aksiyasını çağırır, o da Screengrabfile konfiqurasiya faylını oxuyur. Runner screengrab-lib kitabxanası ilə birləşdirilmiş test APK-nı yığır, onu qoşulmuş cihazlara və ya emulyatorlara quraşdırır və ekran görüntüləri üçün annotasiyalarla işarələnmiş UI testlərini işə salır.

ruby
# Fastfile — ekran görüntüləri üçün lane təsviri
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

Çıxış fayllarının strukturu

Screengrab qovluq iyerarxiyası yaradır: dil → cihaz → ekran görüntüləri. Struktur tamamilə Google Play Console və App Store Connect tələblərinə uyğundur. App Store hər cihaz növü üçün ciddi şəkildə müəyyən ölçülər tələb edir və Screengrab spesifikasiyalara tam uyğun şəkillər yaradır.

Bir neçə cihazın dəstəklənməsi

Alət testləri bütün qoşulmuş cihazlarda və emulyatorlarda paralel işə sala bilir. Android emulyatorları aktiv deyillərsə, avtomatik işə düşür. iOS üçün Screengrab Xcode simulyatorlarından istifadə edir.

Android üçün Screengrab quraşdırılması və konfiqurasiyası

Screengrab quraşdırılması iki hissədən ibarətdir: kitabxananın layihəyə əlavə edilməsi və konfiqurasiya faylının qurulması. Android-də UI framework Espresso və Fastlane reposundan screengrab-lib kitabxanası tələb olunur.

Asılılıqların qoşulması

Proqram modulunun build.gradle faylına screengrab-lib asılılığı əlavə edilir. Kitabxana çağırış anında ekran görüntüsü çəkən ScreenCapturer sinfini təmin edir.

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

Ekran görüntüləri ilə testin yazılması

UI testi lazımi nöqtələrdə Screengrab.screenshot() annotasiyası ilə işarələnir. Hər çağırış cari ekranın şəklini çəkir və onu göstərilən adla yadda saxlayır.

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")
        // Hərəkətlər: giriş düyməsini klikləyin
        Screengrab.screenshot("login_screen")
    }
}

Screengrabfile konfiqurasiyası

Screengrabfile faylı işə salma parametrlərini saxlayır: cihazların siyahısı, dillər, vaxt limitləri və yaddaş yolu. Fayl adətən fastlane qovluğunda Fastfile ilə yanaşı yerləşir.

Ekran görüntülərinin lokallaşdırılması və çoxdillilik

Lokallaşdırma — Screengrab-ın əsas imkanıdır, ona görə də çox vaxt onu seçirlər. Alət hər test işə salınmasından əvvəl proqramın dilini avtomatik dəyişir və bütün göstərilən dillərdə şəkillər çəkir.

Dillərin qurulması

Dillər Screengrabfile-da locales parametri ilə göstərilir. Hər dil üçün Screengrab proqramı müvafiq resurslarla yenidən quraşdırır və tam test dövrünü işə salır. Android-də LocaleTestRule cihazın lokalını avtomatik dəyişir.

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

Lokallaşdırılmış ekran görüntüləri üçün qovluq strukturu

Screengrab kataloqları bu sxem üzrə yaradır: screenshots/{locale}/{device_name}/{screenshot_name}.png. Bu struktur birbaşa Google Play tələblərinə uyğundur ki, bu da ekran görüntülərini Fastlane deliver ilə bir əmrlə yükləməyə imkan verir.

iOS üçün App Store Connect ekran görüntülərini dillər üzrə düz strukturgözləyir. Fastlane nəşr zamanı Screengrab iyerarxiyasını avtomatik olaraq tələb olunan formata çevirir.

Screengrab-ın CI/CD pipeline-na inteqrasiyası

CI/CD inteqrasiyası Screengrab-ın əsas üstünlüklərindən biridir. Alət əmr sətrindən işə salınır və qrafik interfeys tələb etmir, bu da onu server yığımları üçün ideal edir.

GitHub Actions

CI mühitində Android emulyatoru və ya iOS simulyatoru işə salmaq, sonra ekran görüntüləri ilə lane-i çağırmaq lazımdır. GitHub Actions AVD keşləşdirməsini dəstəkləyir ki, bu da təkrar işə salmaları sürətləndirir.

CI üçün parametrlər

CI konfiqurasiyasında yaddaş və vaxt məhdudiyyətlərini nəzərə almaq vacibdir. Android emulyatorları hər cihaz üçün ən azı 2 GB RAM tələb edir, 7 dildə və 2 cihazda tam işə salma isə 20–40 dəqiqə çəkir.

ruby
# Fastfile — vaxt limitləri ilə CI 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 üçün sh addımı bundle exec fastlane çağırışı ilə istifadə olunur. İnkişaf dövrünü yavaşlatmamaq üçün ekran görüntülərini gecə və ya əsas branch-a merge-dən sonra trigger ilə işə salmaq tövsiyə olunur.

Screengrab vs alternativlər: alətlərin müqayisəsi

Screengrab — ekran görüntülərinin avtomatlaşdırılması üçün yeganə alət deyil. Müxtəlif yanaşmaları olan alternativlər mövcuddur: ƏS-nin daxili vasitələri, kommersiya platformaları və kod daxilində ekran görüntüləri üçün kitabxanalar.

AlətPlatformaLokallaşdırmaCI/CD
ScreengrabAndroid, iOSAvtomatikNatav
ADB ShellAndroidƏl iləSkriptlər vasitəsilə
XCTestiOSƏl iləxcodebuild vasitəsilə
Firebase Test LabAndroidQuraşdırma tələb edirBəli
AppiumÇarpaz platformaƏl iləWebDriver vasitəsilə

ADB Shell tam nəzarət verir, lakin hər ssenari üçün skript yazılmasını tələb edir. XCTest Xcode-a daxildir, lakin lokallaşdırmanı avtomatik idarə etmir. Firebase Test Lab testləri buludda real cihazlarda işə salır, maksimal əhatə verir, lakin hər dəqiqə üçün ödəniş tələb edir.

Screengrab birləşmə sayəsində üstünlük qazanır: Fastlane yığımın bütün həyat dövrünü — kompilyasiyadan nəşrə qədər idarə edir. Google Play Screengrab qovluq strukturunu birbaşa Fastlane deliver vasitəsilə qəbul edir.

Tipik problemlər və onların həlli

Screengrab ilə işləyərkən tərtibatçılar ən çox bir neçə təkrarlanan problemlə qarşılaşırlar. Tipik səhvləri bilmək ilk işə salmada debug vaxtını azaldır.

Ekran görüntüləri boş və ya qara çıxır

Problem Screengrab ekranın render edilməsi tamamlanmamış şəkil çəkdikdə yaranır. Həll yolu — screenshot() çağırışından əvvəl Thread.sleep() gecikməsi əlavə etmək və ya asinxron əməliyyatları gözləmək üçün Espresso-dan IdlingResource istifadə etmək.

Versiya uyğunsuzluğu xətası

Screengrab-lib kitabxanası Fastlane versiyasına uyğun olmalıdır. Fastlane hər ay yenilənir və köhnə kitabxana yeni konfiqurasiya parametrlərini dəstəkləməyə bilər. Həll yolu — Gemfile və gradle.properties vasitəsilə versiyaları sinxronlaşdırmaq.

CI-da uzun işə salma müddəti

5 cihazda 30 dildə işə salma bir saatdan çox çəkə bilər. Həll yolu — işə salmaları bölmək: biri mağaza üçün bütün dillərdə, digəri daxili ehtiyaclar üçün iki dildə. GitHub Actions paralel işə salmalar üçün strategiya matrisindən istifadə etməyə imkan verir.

CI-da emulyatorla problemlər

Android emulyatoru CI serverlərində həmişə mövcud olmayan aparat virtualizasiyası tələb edir. KVM aktiv olmalıdır, əks halda emulyator işə düşmür. Həll yolu — GPU sürətləndirilməsi olmadan x86 image-ləri və ya Firebase Test Lab istifadə etmək.

Tez-tez verilən suallar

Screengrab adi ADB ekran görüntüsündən nə ilə fərqlənir?

ADB hazırda ekranda göstərilənin şəklini çəkir. Screengrab UI testləri ilə inteqrasiya olunur, dilləri, cihazları avtomatik dəyişir və insan iştirakı olmadan ssenari üzrə bir sıra şəkillər çəkir.

Screengrab-ı Fastlane olmadan istifadə etmək mümkündürmü?

Xeyr, Screengrab Fastlane ekosisteminin komponentidir və onun infrastrukturundan yığım, quraşdırma və koordinasiya üçün istifadə edir. screengrab-lib kitabxanası ayrıca işləmir — orkestrator kimi Fastlane tələb olunur.

10 dildə ekran görüntülərinin generasiyası nə qədər vaxt aparır?

Bir cihazda 10 dildə işə salma 15–25 dəqiqə çəkir. Hər dil proqramın yenidən quraşdırılmasını və tam UI test dövrünü tələb edir. Bir neçə cihazda paralel işə salma vaxtı mütənasib olaraq azaldır.

Screengrab iOS proqramlarını dəstəkləyirmi?

Bəli, Screengrab iOS-u XCTest və Xcode simulyatorları vasitəsilə dəstəkləyir. Konfiqurasiya Android-ə bənzəyir: dillər, cihazlar əlavə edilir, Swift-də UI testləri XCTest və XCUIScreenshot vasitəsilə şəkillərlə yazılır.

Yalnız yeni dillər üçün ekran görüntülərini necə yeniləmək olar?

Screengrab artımlı rejimi dəstəkləmir — hər işə salma tam ekran görüntüləri dəsti yaradır. Əsas işə salmadan mövcud şəkillərin üzərinə yazmamaq üçün CI üçün məhdud dil siyahısı ilə ayrıca lane qurmaq tövsiyə olunur.

Nəticə

  • Screengrab — Android və iOS üçün mobil proqramların ekran görüntülərinin avtomatlaşdırılması üçün Fastlane komponenti.
  • Avtomatlaşdırma yüzlərlə ekran görüntüsünün əl ilə yaradılmasını terminalda bir əmrlə əvəz edir.
  • Lokallaşdırma — alət hər test işə salınmasından əvvəl proqramın dilini avtomatik dəyişir.
  • CI/CD — Jenkins, GitHub Actions, GitLab CI və qrafik interfeysi olmayan digər pipeline-larla inteqrasiya.
  • Struktur çıxış faylları birbaşa yükləmə üçün Google Play və App Store tələblərinə uyğundur.
  • Çeviklik — bir neçə cihazın, ekran oriyentasiyasının və fərdi test ssenarilərinin dəstəklənməsi.
  • Qənaət — hər yeniləmədə bir neçə saatlıq əl işi əvəzinə 15 dəqiqə ərzində yüz ekran görüntüsü.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun