Screengrab ist ein Dienstprogramm aus dem Fastlane-Ökosystem zur Automatisierung der Screenshot-Erstellung für mobile Apps unter Android und iOS. Anstatt manuell durch Bildschirme auf Dutzenden von Geräten zu wischen, führt der Entwickler einen Befehl aus, und Screengrab erstellt selbstständig Aufnahmen aller benötigten Bildschirme. Laut Fastlane Docs, 2026 unterstützt das Tool gleichzeitig bis zu 30 Sprachen und jede in der Konfiguration angegebene Bildschirmauflösung.
Wichtige Punkte
Screengrab ist eine Komponente des Fastlane-Ökosystems, die für die automatisierte Erstellung von Screenshots mobiler Apps entwickelt wurde. Das Tool erschien 2015 als Antwort auf das Problem: Für die Veröffentlichung im Google Play und App Store werden 4 bis 10 Screenshots pro Sprache benötigt. Bei Unterstützung von 30 Sprachen sind das 120–300 manuelle Aufnahmen.
Ein Entwickler startet die App manuell auf einem Simulator oder Gerät, navigiert zum gewünschten Bildschirm, macht einen Screenshot, überträgt ihn auf den Computer, schneidet ihn zu und speichert ihn im richtigen Ordner. Der Vorgang wiederholt sich für jede Sprache und jede Ausrichtung. Laut Google Play Console wird die durchschnittliche App alle zwei Wochen aktualisiert, was Screenshots zu einer regelmäßigen Routine macht.
Screengrab löst das Problem radikal: Der Entwickler beschreibt Testszenarien mit einem UI-Framework (Espresso für Android, XCTest für iOS), und Screengrab führt sie automatisch auf allen erforderlichen Geräten und Sprachen aus. Fastlane koordiniert den Prozess: Es erstellt den Build, führt Tests durch, sammelt Screenshots und verpackt sie in die erforderliche Ordnerstruktur.
Das Ergebnis — hundert Screenshots in 10–15 Minuten statt mehrerer Stunden manueller Arbeit. Google empfiehlt, Screenshots bei jeder signifikanten Änderung der Benutzeroberfläche zu aktualisieren, und ohne Automatisierung wird dieser Rat oft ignoriert.
Die Architektur von Screengrab basiert auf zwei Schlüsselkomponenten: einem Client auf dem Gerät (screengrab-lib) und einem Runner, der die Testausführung und Ergebnisseammlung verwaltet. Unter Android wird das instrumentierte Test-Framework verwendet, unter iOS — XCTest.
Fastlane ruft die Aktion screengrab auf, die die Konfigurationsdatei Screengrabfile liest. Der Runner erstellt das Test-APK mit der eingebundenen screengrab-lib-Bibliothek, installiert es auf verbundenen Geräten oder Emulatoren und führt UI-Tests aus, die mit Anmerkungen für Screenshots versehen sind.
# Fastfile — Lane-Beschreibung für Screenshots
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 erstellt eine Ordnerhierarchie: Sprache → Gerät → Screenshots. Die Struktur entspricht vollständig den Anforderungen von Google Play Console und App Store Connect. Der App Store erfordert streng definierte Größen für jeden Gerätetyp, und Screengrab generiert Aufnahmen exakt nach Spezifikation.
Das Tool kann Tests parallel auf allen verbundenen Geräten und Emulatoren ausführen. Android-Emulatoren starten automatisch, wenn sie nicht aktiv sind. Für iOS verwendet Screengrab Xcode-Simulatoren.
Die Installation von Screengrab besteht aus zwei Teilen: Hinzufügen der Bibliothek zum Projekt und Konfigurieren der Konfigurationsdatei. Unter Android werden das Espresso-UI-Framework und die screengrab-lib-Bibliothek aus dem Fastlane-Repository benötigt.
In der build.gradle des App-Moduls wird die screengrab-lib-Abhängigkeit hinzugefügt. Die Bibliothek stellt die Klasse ScreenCapturer bereit, die zum Zeitpunkt des Aufrufs einen Screenshot macht.
// build.gradle (module: app)
androidTestImplementation(
'tools.fastlane:screengrab-lib:2.1.0'
)
Ein UI-Test wird an den erforderlichen Stellen mit der Annotation Screengrab.screenshot() markiert. Jeder Aufruf erfasst den aktuellen Bildschirm und speichert ihn unter dem angegebenen Namen.
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")
// Aktionen: Anmeldebutton tippen
Screengrab.screenshot("login_screen")
}
}
Die Datei Screengrabfile enthält die Startparameter: Geräteliste, Sprachen, Zeitüberschreitungen und Speicherpfad. Die Datei befindet sich normalerweise im fastlane-Ordner neben der Fastfile.
Lokalisierung ist die wichtigste Funktion von Screengrab und der Hauptgrund, warum es am häufigsten gewählt wird. Das Tool wechselt automatisch die App-Sprache vor jedem Testlauf und erstellt Screenshots in allen angegebenen Sprachen.
Sprachen werden in der Screengrabfile mit dem Parameter locales festgelegt. Für jede Sprache installiert Screengrab die App mit den entsprechenden Ressourcen neu und führt den vollständigen Testzyklus durch. LocaleTestRule auf Android wechselt automatisch das Gebietsschema des Geräts.
# Screengrabfile
locales [
"ru-RU",
"en-US",
"de-DE",
"fr-FR",
"es-ES",
"ja-JP",
"ko-KR"
]
Screengrab erstellt Verzeichnisse nach folgendem Schema: screenshots/{locale}/{device_name}/{screenshot_name}.png. Diese Struktur entspricht direkt den Google Play-Anforderungen und ermöglicht das Hochladen von Screenshots per Fastlane deliver mit einem einzigen Befehl.
Für iOS erwartet App Store Connect Screenshots in einer flachen Struktur pro Sprache. Fastlane konvertiert die Screengrab-Hierarchie bei der Veröffentlichung automatisch in das erforderliche Format.
Die CI/CD-Integration ist einer der Hauptvorteile von Screengrab. Das Tool wird von der Befehlszeile aus ausgeführt und benötigt keine grafische Oberfläche, was es ideal für Server-Builds macht.
In einer CI-Umgebung müssen Sie einen Android-Emulator oder iOS-Simulator starten und dann die Lane mit Screenshots aufrufen. GitHub Actions unterstützt AVD-Caching, was wiederholte Ausführungen beschleunigt.
Bei der CI-Konfiguration sind Speicher- und Zeitbeschränkungen zu beachten. Android-Emulatoren benötigen mindestens 2 GB RAM pro Gerät, und ein vollständiger Durchlauf mit 7 Sprachen auf 2 Geräten dauert 20–40 Minuten.
# Fastfile — Lane für CI mit Zeitüberschreitungen
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
Für Jenkins wird der Schritt sh mit einem Aufruf von bundle exec fastlane verwendet. Es wird empfohlen, Screenshots nachts oder per Trigger nach dem Merge in den Hauptzweig auszuführen, um den Entwicklungszyklus nicht zu verlangsamen.
Screengrab ist nicht das einzige Tool zur Screenshot-Automatisierung. Es gibt Alternativen mit unterschiedlichen Ansätzen: integrierte OS-Tools, kommerzielle Plattformen und In-Code-Screenshot-Bibliotheken.
| Tool | Plattform | Lokalisierung | CI/CD |
|---|---|---|---|
| Screengrab | Android, iOS | Auto | Nativ |
| ADB Shell | Android | Manuell | Per Skript |
| XCTest | iOS | Manuell | Per xcodebuild |
| Firebase Test Lab | Android | Erfordert Einrichtung | Ja |
| Appium | Plattformübergreifend | Manuell | Per WebDriver |
ADB Shell bietet volle Kontrolle, erfordert aber das Schreiben von Skripten für jedes Szenario. XCTest ist in Xcode integriert, verwaltet die Lokalisierung jedoch nicht automatisch. Firebase Test Lab führt Tests auf echten Geräten in der Cloud durch und bietet maximale Abdeckung, berechnet jedoch pro Minute.
Screengrab gewinnt durch die Kombination: Fastlane verwaltet den gesamten Build-Lebenszyklus — von der Kompilierung bis zur Veröffentlichung. Google Play akzeptiert die Screengrab-Ordnerstruktur direkt über Fastlane deliver.
Bei der Arbeit mit Screengrab stoßen Entwickler häufig auf mehrere wiederkehrende Probleme. Die Kenntnis typischer Fehler verkürzt die Debugging-Zeit beim ersten Durchlauf.
Das Problem tritt auf, wenn Screengrab einen Screenshot macht, bevor die Bildschirmdarstellung abgeschlossen ist. Die Lösung ist, eine Thread.sleep()-Verzögerung vor dem Aufruf von screenshot() einzufügen oder IdlingResource von Espresso zu verwenden, um auf asynchrone Vorgänge zu warten.
Die Version von screengrab-lib muss mit der Version von Fastlane übereinstimmen. Fastlane wird monatlich aktualisiert, und eine alte Bibliothek unterstützt möglicherweise neue Konfigurationsparameter nicht. Die Lösung ist die Synchronisierung der Versionen über Gemfile und gradle.properties.
Ein Durchlauf mit 30 Sprachen auf 5 Geräten kann über eine Stunde dauern. Die Lösung ist die Aufteilung der Durchläufe: einer für den Store in allen Sprachen, ein anderer für interne Zwecke in zwei Sprachen. GitHub Actions ermöglicht die Verwendung von Matrix-Strategien für parallele Ausführungen.
Der Android-Emulator benötigt Hardware-Virtualisierung, die auf CI-Servern nicht immer verfügbar ist. KVM muss aktiviert sein, sonst startet der Emulator nicht. Die Lösung ist die Verwendung von x86-Images ohne GPU-Beschleunigung oder Firebase Test Lab.
Häufig gestellte Fragen
ADB erfasst, was gerade auf dem Bildschirm angezeigt wird. Screengrab integriert sich in UI-Tests, wechselt automatisch Sprachen und Geräte und macht eine Serie von Screenshots gemäß einem Szenario ohne menschliches Eingreifen.
Nein, Screengrab ist eine Komponente des Fastlane-Ökosystems und nutzt dessen Infrastruktur zum Erstellen, Installieren und Koordinieren. Die Bibliothek screengrab-lib kann nicht separat ausgeführt werden — Fastlane wird als Orchestrator benötigt.
Auf einem einzelnen Gerät dauert ein Durchlauf in 10 Sprachen 15–25 Minuten. Jede Sprache erfordert eine Neuinstallation der App und einen vollständigen UI-Testzyklus. Parallele Ausführung auf mehreren Geräten verkürzt die Zeit proportional.
Ja, Screengrab unterstützt iOS über XCTest und Xcode-Simulatoren. Die Konfiguration ähnelt Android: Sprachen und Geräte werden hinzugefügt, und UI-Tests in Swift werden mit XCTest und Aufnahmen über XCUIScreenshot geschrieben.
Screengrab unterstützt keinen inkrementellen Modus — jeder Durchlauf generiert einen vollständigen Satz von Screenshots. Es wird empfohlen, eine separate Lane für CI mit einer begrenzten Sprachliste einzurichten, um vorhandene Aufnahmen aus dem Hauptdurchlauf nicht zu überschreiben.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch