Flipper ist eine von Facebook (Meta) entwickelte Plattform zum Debuggen mobiler Anwendungen. Sie ermöglicht Android- und iOS-Entwicklern, Netzwerkanfragen, Datenbankinhalte, Logs und die Benutzeroberflächenstruktur in Echtzeit direkt auf dem Gerät anzuzeigen. Laut Meta, 2024 unterstützt die Plattform über 50 Plugins und Integrationen für beliebte Bibliotheken und Frameworks.
Wichtige Punkte
Flipper ist eine Open-Source-Plattform zum Debuggen mobiler Anwendungen, die 2018 von Facebook (Meta) erstellt wurde. Das Projekt hieß ursprünglich Sonar und war für den internen Gebrauch des Unternehmens bestimmt, aber 2019 veröffentlichte Meta den Quellcode unter der MIT-Lizenz. Die Plattform besteht aus zwei Komponenten: einer Electron-basierten Desktop-Anwendung und einem SDK, das in Android- und iOS-Projekte integriert wird.
Der Hauptunterschied zwischen Flipper und anderen Debugging-Tools ist seine modulare Architektur. Anstelle eines monolithischen Debuggers verbindet der Entwickler nur die Plugins, die im Projekt tatsächlich benötigt werden. Dies reduziert die Belastung der Anwendung und vereinfacht die Oberfläche: Der Debugger zeigt genau das an, was der Entwickler ausgewählt hat. Android Studio bietet integrierte Profiler, aber sie funktionieren nur über ADB und bieten nicht das gleiche Maß an Anpassungsmöglichkeiten wie Flipper.
Laut Meta wird Flipper in mehr als 2000 Projekten innerhalb des Unternehmens eingesetzt und unterstützt die Integration mit Fresco, Litho, RxJava, Retrofit, OkHttp, Picasso, Realm, SQLite und anderen beliebten Bibliotheken. Die Plattform ist mit Android API 16+ und iOS 11+ kompatibel.
Die Flipper-Architektur basiert auf einem Client-Server-Modell. Die Desktop-Anwendung fungiert als Server und die mobilen Geräte als Clients. Die Verbindung wird über USB oder TCP/IP hergestellt, wonach der bidirektionale Nachrichtenaustausch über das WebSocket-basierte Flipper-Protokoll beginnt.
Auf der Android-Seite wird die Kommunikation durch die android-client-Bibliothek bereitgestellt, die ADB zum Tunneln des Datenverkehrs verwendet. Der iOS-Client verbindet sich über idb (iOS Device Bridge), eine eigene Entwicklung von Meta zur Interaktion mit iOS-Geräten ohne Xcode. Innerhalb der Anwendung registriert sich jedes Plugin beim FlipperClient und erhält einen eigenen Kommunikationskanal mit dem Desktop-Gegenstück.
Der Datenübertragungsprozess funktioniert wie folgt: Das Plugin auf dem Gerät sendet ein Ereignis über FlipperClient, der Client serialisiert es in JSON und überträgt es über WebSocket an den Desktop. Die Desktop-Anwendung deserialisiert die Nachricht und sendet sie an das entsprechende Plugin in der Oberfläche. Laut Metas technischem Blog (2024) beträgt die Nachrichtenübertragungslatenz bei USB-Verbindung weniger als 15 Millisekunden.
Die Installation von Flipper besteht aus drei Schritten: Installieren der Desktop-Anwendung, Hinzufügen des SDK zum Projekt und Starten des Debuggers. Die Desktop-Anwendung wird von der offiziellen Website fbflipper.com heruntergeladen — Builds sind für Windows, macOS und Linux in den Formaten dmg, exe und AppImage verfügbar. Nach der Installation erkennt die Anwendung automatisch verbundene Geräte über ADB.
Für ein Android-Projekt wird Flipper über Abhängigkeiten in build.gradle verbunden. Sie müssen die Flipper-Version angeben, die mit der Version des Desktop-Clients übereinstimmt, und Plugins für die verwendeten Bibliotheken hinzufügen. Nachfolgend finden Sie ein Beispiel für eine Konfiguration für ein Kotlin-Projekt:
// build.gradle (App)
val flipperVersion = "0.265.0"
dependencies {
debugImplementation("com.facebook.flipper:flipper:$flipperVersion")
debugImplementation(
"com.facebook.flipper:flipper-network-plugin:$flipperVersion"
)
debugImplementation(
"com.facebook.flipper:flipper-litho-plugin:$flipperVersion"
)
}
Nach der Gradle-Synchronisierung müssen Sie FlipperClient in der Application-Klasse initialisieren. Die Initialisierung erfolgt im Debug-Build — in der Release-Version sollte die Bibliothek nicht eingebunden werden, um Debug-Informationen nicht für Benutzer offenzulegen.
class App : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
SoLoader.init(this, false)
AndroidFlipperClient
.getInstance(this)
.addPlugin(NetworkFlipperPlugin())
.start()
}
}
}
Für iOS wird Flipper über CocoaPods hinzugefügt. In der Podfile werden die Frameworks Flipper und FlipperKit sowie Flipper-Folly und Flipper-PeerTalk zur Organisation des Kommunikationskanals angegeben. Nach pod install und dem Ausführen der Anwendung auf einem Simulator oder Gerät erkennt der Desktop-Client automatisch eine neue Sitzung.
Öffnen Sie nach dem Starten der Anwendung den Desktop-Flipper — im linken Bereich erscheint eine Liste der verbundenen Geräte. Wenn das Gerät nicht angezeigt wird, überprüfen Sie: ob ADB installiert ist, ob USB-Debugging auf Android aktiviert ist oder ob die idb-Brücke für iOS ausgeführt wird. Jedes Gerät wird mit dem Modellnamen und der OS-Version angezeigt.
Flipper-Plugins sind modulare Erweiterungen, die für bestimmte Aufgaben Panels zur Desktop-Oberfläche hinzufügen. Meta unterhält offizielle Plugins für die beliebtesten Bibliotheken: Network Plugin für OkHttp und URLSession, Database Plugin für SQLite und Realm, Layout Inspector für die View-Hierarchie, SharedPreferences Plugin und Crash Reporter.
Neben den offiziellen gibt es ein Ökosystem von Drittanbieter-Plugins, die von der Community entwickelt wurden. Zum Beispiel MMKV Plugin zum Debuggen des Tencent MMKV-Speichers, Redux Debugger für React Native, LeakCanary Plugin zum Erkennen von Speicherlecks. Die Plugins werden über Maven Central und CocoaPods verteilt und als normale Abhängigkeiten eingebunden.
Ein wichtiger Vorteil von Flipper ist die Möglichkeit, eigene Plugins zu schreiben. Ein Plugin besteht aus zwei Teilen: einem Client-Teil (in Kotlin oder Swift), der in der mobilen Anwendung registriert wird, und einem Desktop-Teil (in TypeScript oder JavaScript), der ein UI-Panel zur Oberfläche hinzufügt. Meta bietet eine API zum Erstellen benutzerdefinierter Plugins mit Unterstützung für WebSocket und JSON-Nachrichten.
| Plugin | Zweck | Bibliothek |
|---|---|---|
| Network | HTTP/HTTPS-Anfragen anzeigen | OkHttp, URLSession |
| Database | SQLite und Realm bearbeiten | SQLite, Realm |
| LayoutInspector | View-Hierarchie und Attribute | Android View System |
| SharedPreferences | Einstellungen anzeigen und bearbeiten | Android SharedPreferences |
| Litho | Litho-Komponenten debuggen | Facebook Litho |
Network Plugin ist eines der beliebtesten Flipper-Plugins. Es fängt alle HTTP/HTTPS-Anfragen ab, die über OkHttp auf Android oder URLSession auf iOS laufen, und zeigt sie in der Desktop-Oberfläche in Echtzeit an. Für jede Anfrage sind verfügbar: URL, Methode, Statuscode, Anfrage- und Antwortheader, Anfrage- und Antwortbody, Ausführungszeit und Größe.
Um Network Plugin auf Android zu verbinden, fügen Sie einfach die Abhängigkeit flipper-network-plugin hinzu und übergeben Sie OkHttpClient an den NetworkFlipperPlugin-Konstruktor. Flipper umschließt OkHttpClient automatisch in einem Interceptor. Auf iOS erfordert das URLSession-Integrationsplugin eine Konfiguration über FlipperNetworkInterceptor.
val networkPlugin = NetworkFlipperPlugin()
val client = OkHttpClient.Builder()
.addNetworkInterceptor(networkPlugin)
.build()
Eine wichtige Funktion des Network Plugins ist die Unterstützung für die Suche und Filterung von Anfragen. Der Entwickler kann Anfragen nach URL, Methode, Statuscode oder Inhaltstyp filtern. Jede Anfrage kann von der Oberfläche aus erzwungen wiederholt werden — dies ist nützlich zum Testen von Endpunkten ohne eine separate curl-Anfrage zu schreiben. Laut einer Meta-Entwicklerumfrage (2024) wird Network Plugin in 78% der Projekte verwendet, in denen Flipper installiert ist.
Database Plugin bietet Zugriff auf SQLite- und Realm-Datenbanken direkt vom Desktop-Client aus. Der Entwickler sieht alle Tabellen, ihr Schema und ihre Inhalte in einer tabellarischen Ansicht. Es können beliebige SQL-Abfragen ausgeführt und Datensätze ohne Code hinzugefügt, bearbeitet und gelöscht werden. Dies beschleunigt das Debuggen von Anwendungszuständen im Vergleich zur Verwendung von adb shell erheblich.
SharedPreferences Plugin funktioniert ähnlich: Es zeigt alle in SharedPreferences auf Android gespeicherten Schlüssel und Werte an. Die Bearbeitung erfolgt sofort — Änderungen sind sofort in der Anwendung sichtbar. Es gibt jedoch eine wichtige Einschränkung: Nach einem Neustart der Anwendung verbindet sich Flipper neu, und alle über das Plugin vorgenommenen Änderungen bleiben erhalten, da sie direkt auf die SharedPreferences-Datei angewendet werden.
Für iOS ist das Äquivalent NSUserDefaults Plugin. Es arbeitet mit UserDefaults und zeigt alle gespeicherten Schlüssel-Wert-Paare an. Das Plugin unterstützt das Bearbeiten von Zeichenketten, Zahlen, Daten und Arrays. Änderungen werden sofort übernommen, da Flipper über die Laufzeitschnittstelle auf UserDefaults zugreift.
Flippers Layout Inspector bietet eine visuelle Darstellung der View-Hierarchie auf Android. Der Entwickler sieht den Komponentenbaum, ihre Attribute (Breite, Höhe, Abstände, Hintergrund, Text) und kann interaktiv jedes Element auf dem Gerätebildschirm auswählen. Dies ist eine Alternative zum integrierten Layout Inspector in Android Studio, jedoch mit einem wichtigen Unterschied — Flipper zeigt die Hierarchie in Echtzeit an, ohne die Anwendung anzuhalten.
Für die Protokollierung wird das Logs Plugin verwendet. Alle Logs aus Logcat erscheinen in der Desktop-Oberfläche mit Filterung nach Ebene (Debug, Info, Warn, Error) und Tag. Im Gegensatz zu Android Studio Logcat überlädt die Flipper-Oberfläche den Bildschirm nicht — Logs werden nach Tag gruppiert und nach Ebene hervorgehoben. Die Suche und der Export von Logs als JSON werden unterstützt.
Eine weitere nützliche Funktion ist das Console Plugin, das console.log aus JavaScript-Code in React Native- oder WebView-Komponenten anzeigt. Dies vereinfacht das Debuggen von Hybridanwendungen: Der Entwickler sieht sowohl native Logs als auch JS-Logs in einer einzigen Oberfläche. Das Plugin unterstützt die Filterung nach Quelle (Native oder JS) und Protokollierungsebene.
Für Flutter-Anwendungen wird Flipper über das Paket flipper von pub.dev verbunden. Das Plugin flutter_flipper bietet Integration mit der Dio-Netzwerkschicht, SharedPreferences-Speicher und Flutter-Navigation. Die Installation erfordert das Hinzufügen der Abhängigkeit zu pubspec.yaml und die Initialisierung von FlipperClient in der main-Funktion der Anwendung. Flutter-Plugins sind in der Funktionalität nativen Plugins noch unterlegen, decken aber die wichtigsten Debugging-Szenarien ab.
Flipper verbraucht Geräte- und Desktop-Ressourcen proportional zur Anzahl der aktiven Plugins. Wenn alle Plugins gleichzeitig auf einem Android-Emulator verbunden sind, wird laut Metas Messungen (2024) ein Leistungsabfall von 5–10% beobachtet. Es wird empfohlen, nur die notwendigen Plugins zu verbinden und ungenutzte über die Oberfläche der Desktop-Anwendung zu deaktivieren.
Häufig gestellte Fragen
Flipper ist ein Computerprogramm, das zeigt, was in einer mobilen Anwendung passiert: welche Anfragen gesendet werden, was in der Datenbank gespeichert ist und wie die Oberfläche aussieht.
Android Studio Profiler ist in die IDE integriert und erfordert eine Verbindung über ADB. Flipper funktioniert als separate Anwendung, unterstützt Plugins und stoppt die Anwendung beim Inspizieren der Oberfläche nicht.
Nein, der Desktop-Client ist zwingend erforderlich — er empfängt Daten vom mobilen SDK und zeigt sie an. Ohne ihn haben die Plugins auf dem Gerät keine Oberfläche zur Anzeige von Informationen.
Ja, Flipper unterstützt iOS über die idb-Brücke. macOS ist zum Erstellen und Ausführen erforderlich, aber der Desktop-Client kann auf jeder Plattform arbeiten, wenn das Gerät über das Netzwerk verbunden ist.
Für die meisten Projekte sind Network Plugin zum Debuggen von Anfragen, Database Plugin zum Anzeigen von Daten und Layout Inspector zum Arbeiten mit der Oberfläche ausreichend.
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