Screengrab (Fastlane) — шта је то, могућности и аутоматизација снимака екрана

Аутор: IT Sectr Објављено: 2026-04-15 Време читања: 8 мин

Screengrab је услужни програм из екосистема Fastlane за аутоматизацију креирања снимака екрана мобилних апликација за Android и iOS. Уместо ручног прелиставања екрана на десетинама уређаја, програмер покреће једну команду и Screengrab самостално прави снимке свих потребних екрана. Према Fastlane Docs, 2026, алат истовремено подржава до 30 језика и било које резолуције екрана постављене у конфигурацији.

Главно

  • Screengrab — алат Fastlane за аутоматско креирање снимака екрана мобилних апликација за Android и iOS.
  • Аутоматизација замењује ручно креирање стотина снимака екрана једном командом у терминалу.
  • Локализација — истовремено генерисање снимака екрана на десетинама језика без додатних подешавања.
  • CI/CD — интеграција са било којим пајплајновима: Jenkins, GitHub Actions, GitLab CI.
  • Флексибилност — подршка за више уређаја, оријентација и језика у једном покретању.

Шта је Screengrab и зашто је потребан

Screengrab — компонента екосистема Fastlane намењена аутоматизованом креирању снимака екрана мобилних апликација. Алат се појавио 2015. године као одговор на проблем: за објављивање у Google Play и App Store потребно је од 4 до 10 снимака екрана за сваки језик. Уз подршку за 30 језика, то је 120–300 ручно направљених фотографија.

Проблем ручног креирања снимака екрана

Програмер ручно покреће апликацију на симулатору или уређају, прелистава до потребног екрана, прави снимак екрана, преноси га на рачунар, сече и чува у одговарајућу фасциклу. Поступак се понавља за сваки језик и сваку оријентацију. Према Google Play Console, просечна апликација се ажурира једном у две недеље, што снимке екрана претвара у редовну рутину.

Предности аутоматизације

Screengrab решава проблем радикално: програмер описује сценарије тестова на UI фрејмворку (Espresso за Android, XCTest за iOS), а Screengrab их покреће на свим потребним уређајима и језицима аутоматски. Fastlane координира процес: саставља билд, покреће тестове, прикупља снимке екрана и пакује их у потребну структуру фасцикли.

Резултат — сто снимака екрана за 10–15 минута уместо неколико сати ручног рада. Google препоручује ажурирање снимака екрана при свакој значајној промени интерфејса, а без аутоматизације ова препорука се често игнорише.

Како ради Screengrab: архитектура и принцип рада

Архитектура Screengrab-а је изграђена око две кључне компоненте: клијента на уређају (screengrab-lib) и ранера који управља покретањем тестова и прикупљањем резултата. На Android-у се користи инструментални тест фрејмворк, на iOS-у — XCTest.

Животни циклус једног покретања

Fastlane позива акцију screengrab, која чита конфигурациони фајл Screengrabfile. Ранер саставља тест APK са повезаном библиотеком screengrab-lib, инсталира га на повезане уређаје или емулаторе и покреће UI тестове означене анотацијама за снимке екрана.

ruby
# Fastfile — опис lane-а за снимке екрана
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 креира хијерархију фасцикли: језик → уређај → снимци екрана. Структура у потпуности одговара захтевима Google Play Console и App Store Connect. App Store захтева строго одређене димензије за сваки тип уређаја, а Screengrab генерише снимке тачно према спецификацијама.

Подршка за више уређаја

Алат може да покреће тестове паралелно на свим повезаним уређајима и емулаторима. Android емулатори се покрећу аутоматски ако нису активни. За iOS, Screengrab користи Xcode симулаторе.

Инсталација и подешавање Screengrab за Android

Инсталација Screengrab се састоји из два дела: додавање библиотеке у пројекат и подешавање конфигурационог фајла. На Android-у су потребни UI фрејмворк Espresso и библиотека screengrab-lib из Fastlane репозиторијума.

Повезивање зависности

У build.gradle модула апликације додаје се зависност screengrab-lib. Библиотека пружа класу ScreenCapturer која прави снимак екрана у тренутку позива.

groovy
// build.gradle (модул: app)
androidTestImplementation(
  'tools.fastlane:screengrab-lib:2.1.0'
)

Писање теста са снимцима екрана

UI тест се означава анотацијом Screengrab.screenshot() у потребним тачкама. Сваки позив прави снимак тренутног екрана и чува га са наведеним именом.

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")
        // Акције: кликните на дугме за пријаву
        Screengrab.screenshot("login_screen")
    }
}

Screengrabfile конфигурација

Фајл Screengrabfile чува параметре покретања: листу уређаја, језике, тајм-ауте и путању за чување. Фајл се обично налази у фасцикли fastlane поред Fastfile-а.

Локализација снимака екрана и више језика

Локализација — кључна могућност Screengrab-а, због које се најчешће бира. Алат аутоматски пребацује језик апликације пре сваког покретања тестова и прави снимке на свим наведеним језицима.

Подешавање језика

Језици се задају у Screengrabfile параметром locales. За сваки језик Screengrab поново инсталира апликацију са одговарајућим ресурсима и покреће пун циклус тестова. LocaleTestRule на Android-у аутоматски пребацује локалитет уређаја.

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

Структура фасцикли за локализоване снимке екрана

Screengrab креира директоријуме по шеми: screenshots/{locale}/{device_name}/{screenshot_name}.png. Ова структура директно одговара захтевима Google Play-а, што омогућава отпремање снимака екрана путем Fastlane deliver једном командом.

За iOS, App Store Connect очекује снимке екрана у равној структури по језицима. Fastlane аутоматски конвертује хијерархију Screengrab-а у потребан формат приликом објављивања.

Интеграција Screengrab у CI/CD пајплајн

CI/CD интеграција — једна од главних предности Screengrab-а. Алат се покреће из командне линије и не захтева графички интерфејс, што га чини идеалним за серверске компилације.

GitHub Actions

У CI окружењу потребно је покренути Android емулатор или iOS симулатор, након чега се позива lane са снимцима екрана. GitHub Actions подржава кеширање AVD-а, што убрзава поновна покретања.

Параметри за CI

У CI конфигурацији важно је узети у обзир ограничења меморије и времена. Android емулатори захтевају најмање 2 GB RAM-а по уређају, а потпуно покретање на 7 језика и 2 уређаја траје 20–40 минута.

ruby
# Fastfile — lane за CI са тајм-аутима
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 се користи корак sh са позивом bundle exec fastlane. Препоручује се покретање снимака екрана ноћу или по тригеру након спајања у главну грану, како се не би успоравао развојни циклус.

Screengrab vs алтернативе: поређење алата

Screengrab — није једини алат за аутоматизацију снимака екрана. Постоје алтернативе са различитим приступима: уграђени алати оперативног система, комерцијалне платформе и библиотеке за снимке екрана у коду.

АлатПлатформаЛокализацијаCI/CD
ScreengrabAndroid, iOSАутоматскаИзворно
ADB ShellAndroidРучнаПреко скрипти
XCTestiOSРучнаПреко xcodebuild
Firebase Test LabAndroidЗахтева подешавањеДа
AppiumВишеплатформскиРучнаПреко WebDriver

ADB Shell даје потпуну контролу, али захтева писање скрипти за сваки сценарио. XCTest је уграђен у Xcode, али не управља локализацијом аутоматски. Firebase Test Lab покреће тестове на реалним уређајима у облаку, што даје максимално покриће, али захтева плаћање за сваки минут.

Screengrab побеђује захваљујући комбинацији: Fastlane управља целим животним циклусом компилације — од компилације до објављивања. Google Play директно прихвата структуру фасцикли Screengrab-а путем Fastlane deliver.

Типични проблеми и њихова решења

При раду са Screengrab-ом, програмери се најчешће сусрећу са неколико понављајућих проблема. Познавање типичних грешака скраћује време отклањања грешака при првом покретању.

Снимци екрана су празни или црни

Проблем настаје када Screengrab направи снимак пре завршетка рендеровања екрана. Решење — додати кашњење Thread.sleep() пре позива screenshot() или користити IdlingResource из Espresso-а за чекање асинхроних операција.

Грешка некомпатибилности верзија

Библиотека screengrab-lib мора одговарати верзији Fastlane-а. Fastlane се ажурира месечно, а стара библиотека можда не подржава нове параметре конфигурације. Решење — синхронизовати верзије путем Gemfile и gradle.properties.

Дуго покретање на CI-ју

Покретање на 30 језика на 5 уређаја може трајати више од сат времена. Решење — поделити покретања: једно за продавницу на свим језицима, друго за интерне потребе на два језика. GitHub Actions омогућава коришћење матрице стратегија за паралелна покретања.

Проблеми са емулатором на CI-ју

Android емулатор захтева хардверску виртуелизацију, која није увек доступна на CI серверима. KVM мора бити укључен, иначе емулатор не ради. Решење — користити x86 имиџе без GPU убрзања или Firebase Test Lab.

Често постављана питања

По чему се Screengrab разликује од обичног снимка екрана преко ADB-а?

ADB прави снимак онога што је тренутно приказано на екрану. Screengrab се интегрише са UI тестовима, аутоматски пребацује језике, уређаје и прави серију снимака по сценарију без учешћа човека.

Може ли се Screengrab користити без Fastlane-а?

Не, Screengrab је компонента екосистема Fastlane и користи његову инфраструктуру за компилацију, инсталацију и координацију. Библиотека screengrab-lib се не покреће одвојено — потребан је Fastlane као оркестратор.

Колико времена траје генерисање снимака екрана на 10 језика?

На једном уређају, покретање на 10 језика траје 15–25 минута. Сваки језик захтева поновну инсталацију апликације и пун циклус UI тестова. Паралелно покретање на више уређаја скраћује време пропорционално.

Да ли Screengrab подржава iOS апликације?

Да, Screengrab подржава iOS преко XCTest и Xcode симулатора. Конфигурација је слична Android-у: додају се језици, уређаји, а UI тестови на Swift-у се пишу коришћењем XCTest-а и снимака преко XCUIScreenshot.

Како ажурирати снимке екрана само за нове језике?

Screengrab не подржава инкрементални режим — свако покретање генерише комплетан сет снимака екрана. Препоручује се подешавање засебног lane-а за CI са ограниченом листом језика, како се не би преписивали постојећи снимци из главног покретања.

Закључак

  • Screengrab — компонента Fastlane за аутоматизацију снимака екрана мобилних апликација за Android и iOS.
  • Аутоматизација замењује ручно креирање стотина снимака екрана једном командом у терминалу.
  • Локализација — алат аутоматски пребацује језик апликације пре сваког покретања тестова.
  • CI/CD — интеграција са Jenkins, GitHub Actions, GitLab CI и другим пајплајновима без графичког интерфејса.
  • Структура излазних фајлова одговара захтевима Google Play и App Store за директно отпремање.
  • Флексибилност — подршка за више уређаја, оријентација екрана и прилагођених сценарија тестирања.
  • Уштеда — сто снимака екрана за 15 минута уместо неколико сати ручног рада при сваком ажурирању.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође