Το Screengrab είναι ένα βοηθητικό πρόγραμμα από το οικοσύστημα Fastlane για την αυτοματοποίηση της δημιουργίας στιγμιότυπων οθόνης εφαρμογών για κινητά σε Android και iOS. Αντί της μη αυτόματης κύλισης οθονών σε δεκάδες συσκευές, ο προγραμματιστής εκτελεί μία εντολή και το Screengrab λαμβάνει ανεξάρτητα στιγμιότυπα όλων των απαραίτητων οθονών. Σύμφωνα με το Fastlane Docs, 2026, το εργαλείο υποστηρίζει ταυτόχρονα έως 30 γλώσσες και οποιεσδήποτε αναλύσεις οθόνης ορίζονται στη διαμόρφωση.
Κύρια σημεία
Screengrab — είναι ένα στοιχείο του οικοσυστήματος Fastlane που προορίζεται για αυτοματοποιημένη δημιουργία στιγμιότυπων οθόνης εφαρμογών για κινητά. Το εργαλείο εμφανίστηκε το 2015 ως απάντηση στο πρόβλημα: για δημοσίευση στο Google Play και App Store απαιτούνται 4 έως 10 στιγμιότυπα οθόνης ανά γλώσσα. Με υποστήριξη 30 γλωσσών, αυτό σημαίνει 120–300 μη αυτόματα τραβηγμένες φωτογραφίες.
Ο προγραμματιστής εκτελεί μη αυτόματα την εφαρμογή σε προσομοιωτή ή συσκευή, μετακινείται στην απαραίτητη οθόνη, τραβάει στιγμιότυπο οθόνης, το μεταφέρει στον υπολογιστή, το περικόπτει και το αποθηκεύει στον σωστό φάκελο. Η διαδικασία επαναλαμβάνεται για κάθε γλώσσα και κάθε προσανατολισμό. Σύμφωνα με το Google Play Console, η μέση εφαρμογή ενημερώνεται κάθε δύο εβδομάδες, μετατρέποντας τα στιγμιότυπα οθόνης σε τακτική ρουτίνα.
Το Screengrab λύνει ριζικά το πρόβλημα: ο προγραμματιστής περιγράφει σενάρια δοκιμών στο πλαίσιο UI (Espresso για Android, XCTest για iOS) και το Screengrab τα εκτελεί σε όλες τις απαραίτητες συσκευές και γλώσσες αυτόματα. Το Fastlane συντονίζει τη διαδικασία: μεταγλωττίζει το build, εκτελεί τις δοκιμές, συλλέγει τα στιγμιότυπα οθόνης και τα συσκευάζει στην κατάλληλη δομή φακέλων.
Αποτέλεσμα — εκατό στιγμιότυπα οθόνης σε 10–15 λεπτά αντί για αρκετές ώρες χειρωνακτικής εργασίας. Η Google συνιστά την ενημέρωση των στιγμιότυπων οθόνης σε κάθε σημαντική αλλαγή διεπαφής και χωρίς αυτοματοποίηση αυτή η σύσταση συχνά αγνοείται.
Αρχιτεκτονική Το Screengrab είναι χτισμένο γύρω από δύο βασικά στοιχεία: έναν πελάτη στη συσκευή (screengrab-lib) και έναν runner που διαχειρίζεται την εκτέλεση δοκιμών και τη συλλογή αποτελεσμάτων. Στο Android χρησιμοποιείται το πλαίσιο δοκιμών οργάνων, στο iOS — XCTest.
Το Fastlane καλεί την ενέργεια screengrab, η οποία διαβάζει το αρχείο διαμόρφωσης Screengrabfile. Ο runner μεταγλωττίζει το δοκιμαστικό APK με τη συνδεδεμένη βιβλιοθήκη screengrab-lib, το εγκαθιστά στις συνδεδεμένες συσκευές ή εξομοιωτές και εκτελεί δοκιμές UI επισημασμένες με σχολιασμούς για στιγμιότυπα οθόνης.
# 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 απαιτείται το πλαίσιο UI Espresso και η βιβλιοθήκη screengrab-lib από το αποθετήριο Fastlane.
Στο build.gradle της μονάδας εφαρμογής προστίθεται η εξάρτηση screengrab-lib. Η βιβλιοθήκη παρέχει την κλάση ScreenCapturer που τραβάει στιγμιότυπο οθόνης τη στιγμή της κλήσης.
// build.gradle (module: app)
androidTestImplementation(
'tools.fastlane:screengrab-lib:2.1.0'
)
Η δοκιμή UI επισημαίνεται με τη σχολιασμό Screengrab.screenshot() στα απαραίτητα σημεία. Κάθε κλήση τραβάει στιγμιότυπο της τρέχουσας οθόνης και το αποθηκεύει με το καθορισμένο όνομα.
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 αποθηκεύει τις παραμέτρους εκτέλεσης: λίστα συσκευών, γλώσσες, χρονικά όρια και διαδρομή αποθήκευσης. Το αρχείο συνήθως βρίσκεται στο φάκελο fastlane δίπλα στο Fastfile.
Εντοπισμός — βασική δυνατότητα του Screengrab, για την οποία επιλέγεται συχνότερα. Το εργαλείο αλλάζει αυτόματα τη γλώσσα της εφαρμογής πριν από κάθε εκτέλεση δοκιμών και τραβάει στιγμιότυπα σε όλες τις καθορισμένες γλώσσες.
Οι γλώσσες ορίζονται στο Screengrabfile με την παράμετρο locales. Για κάθε γλώσσα, το Screengrab επανεγκαθιστά την εφαρμογή με τους αντίστοιχους πόρους και εκτελεί έναν πλήρη κύκλο δοκιμών. Το LocaleTestRule στο Android αλλάζει αυτόματα τις τοπικές ρυθμίσεις της συσκευής.
# 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 στην απαιτούμενη μορφή κατά τη δημοσίευση.
CI/CD ενσωμάτωση — ένα από τα κύρια πλεονεκτήματα του Screengrab. Το εργαλείο εκτελείται από τη γραμμή εντολών και δεν απαιτεί γραφική διεπαφή, καθιστώντας το ιδανικό για μεταγλωττίσεις διακομιστή.
Σε περιβάλλον CI, πρέπει να εκκινηθεί ο εξομοιωτής Android ή ο προσομοιωτής iOS και στη συνέχεια να κληθεί το lane με στιγμιότυπα οθόνης. Το GitHub Actions υποστηρίζει προσωρινή αποθήκευση AVD, επιταχύνοντας τις επαναλαμβανόμενες εκτελέσεις.
Στη διαμόρφωση CI είναι σημαντικό να ληφθούν υπόψη οι περιορισμοί μνήμης και χρόνου. Οι εξομοιωτές Android απαιτούν τουλάχιστον 2 GB RAM ανά συσκευή και μια πλήρης εκτέλεση σε 7 γλώσσες και 2 συσκευές διαρκεί 20–40 λεπτά.
# 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 χρησιμοποιείται το βήμα sh με κλήση bundle exec fastlane. Συνιστάται η εκτέλεση στιγμιότυπων οθόνης τη νύχτα ή μετά από ενεργοποίηση μετά από συγχώνευση στον κύριο κλάδο, για να μην επιβραδύνεται ο κύκλος ανάπτυξης.
Screengrab — δεν είναι το μοναδικό εργαλείο για αυτοματοποίηση στιγμιότυπων οθόνης. Υπάρχουν εναλλακτικές με διαφορετικές προσεγγίσεις: ενσωματωμένα εργαλεία OS, εμπορικές πλατφόρμες και βιβλιοθήκες για στιγμιότυπα οθόνης στον κώδικα.
| Εργαλείο | Πλατφόρμα | Εντοπισμός | CI/CD |
|---|---|---|---|
| Screengrab | Android, iOS | Αυτόματος | Εγγενώς |
| ADB Shell | Android | Μη αυτόματος | Μέσω σεναρίων |
| XCTest | iOS | Μη αυτόματος | Μέσω xcodebuild |
| Firebase Test Lab | Android | Απαιτεί ρύθμιση | Ναι |
| Appium | Διαπλατφορμικό | Μη αυτόματος | Μέσω WebDriver |
Το ADB Shell δίνει πλήρη έλεγχο, αλλά απαιτεί σύνταξη σεναρίων για κάθε σενάριο. Το XCTest είναι ενσωματωμένο στο Xcode, αλλά δεν διαχειρίζεται αυτόματα τον εντοπισμό. Το Firebase Test Lab εκτελεί δοκιμές σε πραγματικές συσκευές στο cloud, προσφέροντας μέγιστη κάλυψη, αλλά απαιτεί πληρωμή ανά λεπτό.
Το Screengrab κερδίζει χάρη στον συνδυασμό: το Fastlane διαχειρίζεται ολόκληρο τον κύκλο ζωής της μεταγλώττισης — από τη μεταγλώττιση έως τη δημοσίευση. Το Google Play δέχεται άμεσα τη δομή φακέλων Screengrab μέσω Fastlane deliver.
Κατά την εργασία με το Screengrab, οι προγραμματιστές αντιμετωπίζουν συχνότερα μερικά επαναλαμβανόμενα προβλήματα. Η γνώση τυπικών σφαλμάτων μειώνει τον χρόνο εντοπισμού σφαλμάτων κατά την πρώτη εκτέλεση.
Το πρόβλημα προκύπτει όταν το Screengrab τραβάει στιγμιότυπο πριν από την ολοκλήρωση της απόδοσης της οθόνης. Λύση — προσθέστε καθυστέρηση Thread.sleep() πριν από την κλήση screenshot() ή χρησιμοποιήστε το IdlingResource από το Espresso για αναμονή ασύγχρονων λειτουργιών.
Η βιβλιοθήκη screengrab-lib πρέπει να αντιστοιχεί στην έκδοση Fastlane. Το Fastlane ενημερώνεται μηνιαίως και η παλιά βιβλιοθήκη μπορεί να μην υποστηρίζει νέες παραμέτρους διαμόρφωσης. Λύση — συγχρονίστε τις εκδόσεις μέσω Gemfile και gradle.properties.
Η εκτέλεση σε 30 γλώσσες σε 5 συσκευές μπορεί να διαρκέσει πάνω από μία ώρα. Λύση — διαχωρίστε τις εκτελέσεις: μία για το κατάστημα σε όλες τις γλώσσες, μία άλλη για εσωτερικές ανάγκες σε δύο γλώσσες. Το GitHub Actions επιτρέπει τη χρήση μήτρας στρατηγικών για παράλληλες εκτελέσεις.
Ο εξομοιωτής Android απαιτεί εικονικοποίηση υλικού, η οποία δεν είναι πάντα διαθέσιμη σε διακομιστές CI. Το KVM πρέπει να είναι ενεργοποιημένο, διαφορετικά ο εξομοιωτής δεν εκκινείται. Λύση — χρησιμοποιήστε εικόνες x86 χωρίς επιτάχυνση GPU ή Firebase Test Lab.
Συχνές ερωτήσεις
Το ADB τραβάει στιγμιότυπο αυτού που εμφανίζεται στην οθόνη την τρέχουσα στιγμή. Το Screengrab ενσωματώνεται με δοκιμές UI, αλλάζει αυτόματα γλώσσες και συσκευές και τραβάει μια σειρά στιγμιότυπων σύμφωνα με σενάριο χωρίς ανθρώπινη παρέμβαση.
Όχι, το Screengrab είναι στοιχείο του οικοσυστήματος Fastlane και χρησιμοποιεί την υποδομή του για μεταγλώττιση, εγκατάσταση και συντονισμό. Η βιβλιοθήκη screengrab-lib δεν εκτελείται ξεχωριστά — απαιτείται το Fastlane ως ενορχηστρωτής.
Σε μία συσκευή, η εκτέλεση σε 10 γλώσσες διαρκεί 15–25 λεπτά. Κάθε γλώσσα απαιτεί επανεγκατάσταση της εφαρμογής και έναν πλήρη κύκλο δοκιμών UI. Η παράλληλη εκτέλεση σε πολλές συσκευές μειώνει τον χρόνο αναλογικά.
Ναι, το Screengrab υποστηρίζει iOS μέσω XCTest και προσομοιωτών Xcode. Η διαμόρφωση είναι παρόμοια με το Android: προστίθενται γλώσσες και συσκευές, και οι δοκιμές UI σε Swift γράφονται χρησιμοποιώντας XCTest και στιγμιότυπα μέσω XCUIScreenshot.
Το Screengrab δεν υποστηρίζει σταδιακή λειτουργία — κάθε εκτέλεση δημιουργεί ένα πλήρες σύνολο στιγμιότυπων οθόνης. Συνιστάται η ρύθμιση ξεχωριστού lane για το CI με περιορισμένη λίστα γλωσσών, ώστε να μην αντικαθίστανται τα υπάρχοντα στιγμιότυπα από την κύρια εκτέλεση.
Συμπέρασμα
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης