Ang Screengrab ay isang utility mula sa ecosystem ng Fastlane para sa pag-automate ng paggawa ng mga screenshot ng mga mobile application para sa Android at iOS. Sa halip na manu-manong mag-scroll ng mga screen sa dose-dosenang mga device, ang developer ay nagpapatakbo ng isang command, at ang Screengrab ay nagsasariling kumukuha ng mga larawan ng lahat ng kinakailangang screen. Ayon sa Fastlane Docs, 2026, sinusuportahan ng tool ang hanggang 30 wika nang sabay-sabay at anumang resolution ng screen na itinakda sa configuration.
Mga Pangunahing Punto
Screengrab — ay isang bahagi ng Fastlane ecosystem na idinisenyo para sa automated na paggawa ng mga screenshot ng mga mobile application. Ang tool ay lumitaw noong 2015 bilang tugon sa problema: para sa publikasyon sa Google Play at App Store ay kinakailangan mula 4 hanggang 10 screenshot para sa bawat wika. Sa suporta ng 30 wika, ito ay 120–300 manu-manong kinuhang mga larawan.
Ang developer ay manu-manong nagpapatakbo ng application sa simulator o device, nag-scroll sa kinakailangang screen, kumukuha ng screenshot, inililipat ito sa computer, pinuputol at inilalagay sa tamang folder. Ang pamamaraan ay inuulit para sa bawat wika at bawat oryentasyon. Ayon sa Google Play Console, ang karaniwang application ay ina-update tuwing dalawang linggo, na ginagawang regular na gawain ang mga screenshot.
Lutas ng Screengrab ang problema nang radikal: inilalarawan ng developer ang mga senaryo ng pagsubok sa UI framework (Espresso para sa Android, XCTest para sa iOS), at awtomatikong pinapatakbo ng Screengrab ang mga ito sa lahat ng kinakailangang device at wika. Fastlane ang nagko-coordinate ng proseso: nag-compile ng build, nagpapatakbo ng mga test, nangongolekta ng mga screenshot at inilalagay ang mga ito sa tamang folder structure.
Resulta — daang screenshot sa loob ng 10–15 minuto sa halip na ilang oras ng manu-manong trabaho. Inirerekomenda ng Google na i-update ang mga screenshot sa bawat makabuluhang pagbabago sa interface, at kung walang automation, ang payong ito ay madalas na binabalewala.
Arkitektura ng Screengrab ay itinayo sa paligid ng dalawang pangunahing bahagi: client sa device (screengrab-lib) at runner na namamahala sa pagpapatakbo ng mga test at pagkolekta ng mga resulta. Sa Android ginagamit ang instrumental test framework, sa iOS — XCTest.
Tinatawag ng Fastlane ang action na screengrab, na nagbabasa ng configuration file na Screengrabfile. Nag-compile ang runner ng test APK na may nakakonektang screengrab-lib library, ini-install ito sa mga nakakonektang device o emulator, at pinapatakbo ang mga UI test na may markang annotation para sa mga screenshot.
# Fastfile — deskripsyon ng lane para sa mga screenshot
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
Lumilikha ang Screengrab ng hierarchy ng folder: wika → device → mga screenshot. Ang istraktura ay ganap na tumutugma sa mga kinakailangan ng Google Play Console at App Store Connect. App Store ay nangangailangan ng mahigpit na tinukoy na mga sukat para sa bawat uri ng device, at ang Screengrab ay bumubuo ng mga larawan nang eksakto ayon sa mga detalye.
Ang tool ay maaaring magpatakbo ng mga test nang magkatulad sa lahat ng nakakonektang device at emulator. Ang mga emulator ng Android ay awtomatikong naglulunsad kung hindi aktibo. Para sa iOS, gumagamit ang Screengrab ng mga simulator ng Xcode.
Pag-install ng Screengrab ay binubuo ng dalawang bahagi: pagdaragdag ng library sa proyekto at pag-configure ng configuration file. Sa Android kinakailangan ang UI framework Espresso at ang screengrab-lib library mula sa Fastlane repository.
Sa build.gradle ng module ng application, ang dependency screengrab-lib ay idinagdag. Ang library ay nagbibigay ng ScreenCapturer class na kumukuha ng screenshot sa sandali ng tawag.
// build.gradle (module: app)
androidTestImplementation(
'tools.fastlane:screengrab-lib:2.1.0'
)
Ang UI test ay minamarkahan ng annotation na Screengrab.screenshot() sa mga kinakailangang punto. Ang bawat tawag ay kumukuha ng screenshot ng kasalukuyang screen at ini-save ito sa tinukoy na pangalan.
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")
// Mga aksyon: i-click ang button ng pag-login
Screengrab.screenshot("login_screen")
}
}
Ang file na Screengrabfile ay nag-iimbak ng mga parameter ng pagtakbo: listahan ng mga device, wika, timeout at path para sa pag-save. Ang file ay karaniwang matatagpuan sa folder na fastlane sa tabi ng Fastfile.
Lokalisasyon — pangunahing kakayahan ng Screengrab, kung saan ito madalas pinipili. Awtomatikong pinapalitan ng tool ang wika ng application bago ang bawat pagtakbo ng test at kumukuha ng mga larawan sa lahat ng tinukoy na wika.
Ang mga wika ay itinakda sa Screengrabfile gamit ang parameter na locales. Para sa bawat wika, muling ini-install ng Screengrab ang application na may kaukulang mga mapagkukunan at pinapatakbo ang buong cycle ng mga test. Ang LocaleTestRule sa Android ay awtomatikong nagpapalit ng locale ng device.
# Screengrabfile
locales [
"ru-RU",
"en-US",
"de-DE",
"fr-FR",
"es-ES",
"ja-JP",
"ko-KR"
]
Lumilikha ang Screengrab ng mga directory ayon sa scheme: screenshots/{locale}/{device_name}/{screenshot_name}.png. Ang istrakturang ito ay direktang tumutugma sa mga kinakailangan ng Google Play, na nagpapahintulot sa pag-upload ng mga screenshot sa pamamagitan ng Fastlane deliver gamit ang isang command.
Para sa iOS, inaasahan ng App Store Connect ang mga screenshot sa flat structure ayon sa wika. Awtomatikong ini-convert ng Fastlane ang hierarchy ng Screengrab sa kinakailangang format sa pag-publish.
CI/CD integrasyon ay isa sa mga pangunahing bentahe ng Screengrab. Ang tool ay pinapatakbo mula sa command line at hindi nangangailangan ng graphical interface, na ginagawang perpekto para sa server builds.
Sa CI environment, kailangan maglunsad ng Android emulator o iOS simulator, pagkatapos ay tawagan ang lane na may mga screenshot. GitHub Actions ay sumusuporta sa pag-cache ng AVD, na nagpapabilis ng mga paulit-ulit na pagtakbo.
Sa CI configuration, mahalagang isaalang-alang ang mga limitasyon sa memory at oras. Ang mga emulator ng Android ay nangangailangan ng hindi bababa sa 2 GB RAM bawat device, at ang buong pagtakbo sa 7 wika at 2 device ay tumatagal ng 20–40 minuto.
# Fastfile — lane para sa CI na may mga timeout
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
Para sa Jenkins, ginagamit ang step na sh na may tawag na bundle exec fastlane. Inirerekomenda na patakbuhin ang mga screenshot sa gabi o pagkatapos ng trigger pagkatapos ng merge sa pangunahing branch upang hindi mapabagal ang development cycle.
Screengrab — hindi lamang ang tool para sa automation ng screenshot. May mga alternatibo na may iba't ibang approach: built-in na OS tools, komersyal na platform at library para sa mga screenshot sa code.
| Tool | Platform | Lokalisasyon | CI/CD |
|---|---|---|---|
| Screengrab | Android, iOS | Awtomatiko | Nativ |
| ADB Shell | Android | Manual | Sa pamamagitan ng script |
| XCTest | iOS | Manual | Sa pamamagitan ng xcodebuild |
| Firebase Test Lab | Android | Kailangan ng setup | Oo |
| Appium | Cross-platform | Manual | Sa pamamagitan ng WebDriver |
ADB Shell ay nagbibigay ng buong kontrol, ngunit nangangailangan ng pagsusulat ng mga script para sa bawat senaryo. XCTest ay naka-embed sa Xcode, ngunit hindi awtomatikong namamahala ng lokalisasyon. Firebase Test Lab ay nagpapatakbo ng mga test sa totoong device sa cloud, na nagbibigay ng maximum na coverage, ngunit nangangailangan ng pagbabayad bawat minuto.
Ang Screengrab ay nananalo dahil sa kombinasyon: Fastlane ang namamahala sa buong life cycle ng build — mula sa compilation hanggang sa publikasyon. Google Play ay direktang tumatanggap ng folder structure ng Screengrab sa pamamagitan ng Fastlane deliver.
Sa pagtatrabaho sa Screengrab, ang mga developer ay madalas na nakakaranas ng ilang paulit-ulit na problema. Ang kaalaman sa mga karaniwang pagkakamali ay nagpapababa sa oras ng pag-debug sa unang pagtakbo.
Ang problema ay nangyayari kapag ang Screengrab ay kumukuha ng larawan bago matapos ang rendering ng screen. Solusyon — magdagdag ng pagkaantala Thread.sleep() bago tawagan ang screenshot() o gumamit ng IdlingResource mula sa Espresso para maghintay sa mga asynchronous na operasyon.
Ang library na screengrab-lib ay dapat tumugma sa bersyon ng Fastlane. Fastlane ay ina-update buwan-buwan, at ang lumang library ay maaaring hindi sumusuporta sa mga bagong parameter ng configuration. Solusyon — i-synchronize ang mga bersyon sa pamamagitan ng Gemfile at gradle.properties.
Ang pagtakbo sa 30 wika sa 5 device ay maaaring tumagal ng mahigit isang oras. Solusyon — hatiin ang mga pagtakbo: isa para sa store sa lahat ng wika, isa para sa panloob na pangangailangan sa dalawang wika. GitHub Actions ay nagpapahintulot sa paggamit ng matrix ng mga diskarte para sa parallel na pagtakbo.
Ang Android emulator ay nangangailangan ng hardware virtualization, na hindi laging available sa CI servers. KVM ay dapat na naka-enable, kung hindi ay hindi magsisimula ang emulator. Solusyon — gumamit ng x86 image na walang GPU acceleration o Firebase Test Lab.
Mga Madalas Itanong
ADB ay kumukuha ng larawan ng kasalukuyang ipinapakita sa screen. Ang Screengrab ay sumasama sa mga UI test, awtomatikong nagpapalit ng wika, device at kumukuha ng serye ng mga larawan ayon sa senaryo nang walang interbensyon ng tao.
Hindi, ang Screengrab ay bahagi ng Fastlane ecosystem at ginagamit ang imprastraktura nito para sa compilation, installation at koordinasyon. Ang library na screengrab-lib ay hindi tumatakbo nang mag-isa — kinakailangan ang Fastlane bilang orkestrador.
Sa isang device, ang pagtakbo sa 10 wika ay tumatagal ng 15–25 minuto. Ang bawat wika ay nangangailangan ng muling pag-install ng application at buong cycle ng UI test. Ang parallel na pagtakbo sa maraming device ay nagpapababa ng oras nang proporsyonal.
Oo, sinusuportahan ng Screengrab ang iOS sa pamamagitan ng XCTest at Xcode simulators. Ang configuration ay katulad ng Android: idinadagdag ang mga wika, device, at ang UI test sa Swift ay isinusulat gamit ang XCTest at mga larawan sa pamamagitan ng XCUIScreenshot.
Ang Screengrab ay hindi sumusuporta ng incremental mode — bawat pagtakbo ay bumubuo ng kumpletong set ng mga screenshot. Inirerekomenda na mag-set up ng hiwalay na lane para sa CI na may limitadong listahan ng wika upang hindi ma-overwrite ang mga kasalukuyang larawan mula sa pangunahing pagtakbo.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din