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 — 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.
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.
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.
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.
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.
# 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
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.
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.
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.
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.
// build.gradle (modul: app)
androidTestImplementation(
'tools.fastlane:screengrab-lib:2.1.0'
)
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.
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 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.
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ə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.
# Screengrabfile
locales [
"ru-RU",
"en-US",
"de-DE",
"fr-FR",
"es-ES",
"ja-JP",
"ko-KR"
]
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.
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.
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 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.
# 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 üçü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 — 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ət | Platforma | Lokallaşdırma | CI/CD |
|---|---|---|---|
| Screengrab | Android, iOS | Avtomatik | Natav |
| ADB Shell | Android | Əl ilə | Skriptlər vasitəsilə |
| XCTest | iOS | Əl ilə | xcodebuild vasitəsilə |
| Firebase Test Lab | Android | Quraşdırma tələb edir | Bə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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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ə
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.
Həm də oxuyun