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 συντονίζει τη διαδικασία: μεταγλωττίζει το build, εκτελεί τις δοκιμές, συλλέγει τα στιγμιότυπα οθόνης και τα συσκευάζει στην κατάλληλη δομή φακέλων.

Αποτέλεσμα — εκατό στιγμιότυπα οθόνης σε 10–15 λεπτά αντί για αρκετές ώρες χειρωνακτικής εργασίας. Η Google συνιστά την ενημέρωση των στιγμιότυπων οθόνης σε κάθε σημαντική αλλαγή διεπαφής και χωρίς αυτοματοποίηση αυτή η σύσταση συχνά αγνοείται.

Πώς λειτουργεί το Screengrab: αρχιτεκτονική και αρχή λειτουργίας

Αρχιτεκτονική Το Screengrab είναι χτισμένο γύρω από δύο βασικά στοιχεία: έναν πελάτη στη συσκευή (screengrab-lib) και έναν runner που διαχειρίζεται την εκτέλεση δοκιμών και τη συλλογή αποτελεσμάτων. Στο Android χρησιμοποιείται το πλαίσιο δοκιμών οργάνων, στο iOS — XCTest.

Κύκλος ζωής μίας εκτέλεσης

Το Fastlane καλεί την ενέργεια screengrab, η οποία διαβάζει το αρχείο διαμόρφωσης Screengrabfile. Ο runner μεταγλωττίζει το δοκιμαστικό 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 (module: 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 — δεν είναι το μοναδικό εργαλείο για αυτοματοποίηση στιγμιότυπων οθόνης. Υπάρχουν εναλλακτικές με διαφορετικές προσεγγίσεις: ενσωματωμένα εργαλεία OS, εμπορικές πλατφόρμες και βιβλιοθήκες για στιγμιότυπα οθόνης στον κώδικα.

ΕργαλείοΠλατφόρμαΕντοπισμόςCI/CD
ScreengrabAndroid, iOSΑυτόματοςΕγγενώς
ADB ShellAndroidΜη αυτόματοςΜέσω σεναρίων
XCTestiOSΜη αυτόματοςΜέσω xcodebuild
Firebase Test LabAndroidΑπαιτεί ρύθμισηΝαι
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.

Μεγάλος χρόνος εκτέλεσης στο 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. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης