Flipper Facebook (Meta) द्वारा विकसित एक मोबाइल ऐप डीबगिंग प्लेटफॉर्म है। यह Android और iOS डेवलपर्स को डिवाइस पर रियल टाइम में नेटवर्क अनुरोधों, डेटाबेस सामग्री, लॉग और यूजर इंटरफेस संरचना को देखने की अनुमति देता है। Meta, 2024 के अनुसार, प्लेटफॉर्म 50 से अधिक प्लगइन्स और लोकप्रिय लाइब्रेरी और फ्रेमवर्क के लिए एकीकरण का समर्थन करता है।
मुख्य बातें
Flipper 2018 में Facebook (Meta) द्वारा बनाया गया एक ओपन-सोर्स मोबाइल ऐप डीबगिंग प्लेटफॉर्म है। इस प्रोजेक्ट को मूल रूप से Sonar कहा जाता था और यह कंपनी के आंतरिक उपयोग के लिए था, लेकिन 2019 में Meta ने MIT लाइसेंस के तहत सोर्स कोड जारी किया। प्लेटफॉर्म में दो घटक होते हैं: Electron पर बनाया गया एक डेस्कटॉप ऐप और एक SDK जो Android और iOS प्रोजेक्ट्स में एकीकृत होता है।
Flipper और अन्य डीबगिंग टूल के बीच मुख्य अंतर इसकी मॉड्यूलर आर्किटेक्चर है। एक मोनोलिथिक डीबगर के बजाय, डेवलपर केवल उन प्लगइन्स को कनेक्ट करता है जो प्रोजेक्ट में वास्तव में आवश्यक हैं। यह ऐप पर लोड कम करता है और इंटरफेस को सरल बनाता है: डीबगर वही दिखाता है जो डेवलपर ने चुना है। Android Studio बिल्ट-इन प्रोफाइलर प्रदान करता है, लेकिन वे केवल ADB के माध्यम से काम करते हैं और Flipper जैसे अनुकूलन का स्तर प्रदान नहीं करते हैं।
Meta के अनुसार, Flipper का उपयोग कंपनी के भीतर 2000 से अधिक प्रोजेक्ट्स में होता है और यह Fresco, Litho, RxJava, Retrofit, OkHttp, Picasso, Realm, SQLite और अन्य लोकप्रिय लाइब्रेरी के साथ एकीकरण का समर्थन करता है। प्लेटफॉर्म Android API 16+ और iOS 11+ के साथ संगत है।
Flipper आर्किटेक्चर क्लाइंट-सर्वर मॉडल पर बनाया गया है। डेस्कटॉप ऐप सर्वर के रूप में कार्य करता है और मोबाइल डिवाइस क्लाइंट के रूप में। कनेक्शन USB या TCP/IP के माध्यम से स्थापित होता है, जिसके बाद WebSocket-आधारित Flipper प्रोटोकॉल का उपयोग करके द्विदिश संदेश आदान-प्रदान शुरू होता है।
Android पक्ष पर, संचार android-client लाइब्रेरी द्वारा प्रदान किया जाता है जो ट्रैफिक टनलिंग के लिए ADB का उपयोग करती है। iOS क्लाइंट idb (iOS Device Bridge) के माध्यम से जुड़ता है — जो Xcode के बिना iOS डिवाइस के साथ इंटरैक्ट करने के लिए Meta का अपना विकास है। ऐप के अंदर, प्रत्येक प्लगइन FlipperClient में रजिस्टर होता है और डेस्कटॉप समकक्ष के साथ अपना स्वयं का संचार चैनल प्राप्त करता है।
डेटा ट्रांसफर प्रक्रिया इस प्रकार काम करती है: डिवाइस पर प्लगइन FlipperClient के माध्यम से एक इवेंट भेजता है, क्लाइंट इसे JSON में क्रमबद्ध करता है और WebSocket के माध्यम से डेस्कटॉप पर भेजता है। डेस्कटॉप ऐप संदेश को अक्रमबद्ध करता है और इसे इंटरफेस में संबंधित प्लगइन को भेजता है। Meta के तकनीकी ब्लॉग (2024) के अनुसार, USB कनेक्शन पर संदेश ट्रांसमिशन विलंबता 15 मिलीसेकंड से कम है।
Flipper की स्थापना में तीन चरण होते हैं: डेस्कटॉप ऐप इंस्टॉल करना, प्रोजेक्ट में SDK जोड़ना और डीबगर लॉन्च करना। डेस्कटॉप ऐप आधिकारिक वेबसाइट fbflipper.com से डाउनलोड किया जाता है — Windows, macOS और Linux के लिए dmg, exe और AppImage फॉर्मेट में बिल्ड उपलब्ध हैं। इंस्टॉलेशन के बाद, ऐप स्वचालित रूप से ADB के माध्यम से कनेक्टेड डिवाइसों का पता लगाता है।
Android प्रोजेक्ट के लिए, Flipper build.gradle में निर्भरताओं के माध्यम से जुड़ता है। आपको Flipper संस्करण निर्दिष्ट करना होगा जो डेस्कटॉप क्लाइंट संस्करण से मेल खाता हो और उपयोग की जा रही लाइब्रेरी के लिए प्लगइन जोड़ें। नीचे Kotlin प्रोजेक्ट के लिए एक कॉन्फ़िगरेशन उदाहरण दिया गया है:
// build.gradle (ऐप)
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"
)
}
Gradle सिंक के बाद, आपको Application क्लास में FlipperClient को इनिशियलाइज़ करना होगा। इनिशियलाइज़ेशन डीबग बिल्ड में किया जाता है — रिलीज़ वर्जन में लाइब्रेरी को कनेक्ट नहीं किया जाना चाहिए ताकि उपयोगकर्ताओं को डीबगिंग जानकारी उजागर न हो।
class App : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
SoLoader.init(this, false)
AndroidFlipperClient
.getInstance(this)
.addPlugin(NetworkFlipperPlugin())
.start()
}
}
}
iOS के लिए, Flipper CocoaPods के माध्यम से जोड़ा जाता है। Podfile में Flipper और FlipperKit फ्रेमवर्क के साथ-साथ संचार चैनल को व्यवस्थित करने के लिए Flipper-Folly और Flipper-PeerTalk निर्दिष्ट किए जाते हैं। pod install और सिम्युलेटर या डिवाइस पर ऐप चलाने के बाद, डेस्कटॉप क्लाइंट स्वचालित रूप से एक नया सत्र खोज लेगा।
ऐप लॉन्च करने के बाद, डेस्कटॉप Flipper खोलें — बाएं पैनल में कनेक्टेड डिवाइसों की एक सूची दिखाई देगी। यदि डिवाइस प्रदर्शित नहीं होता है, तो जांचें: क्या ADB इंस्टॉल है, क्या Android पर USB डीबगिंग सक्षम है, या क्या iOS के लिए idb ब्रिज चल रहा है। प्रत्येक डिवाइस मॉडल नाम और OS संस्करण के साथ प्रदर्शित होता है।
Flipper प्लगइन्स मॉड्यूलर एक्सटेंशन हैं जो विशिष्ट कार्यों के लिए डेस्कटॉप इंटरफेस में पैनल जोड़ते हैं। Meta सबसे लोकप्रिय लाइब्रेरी के लिए आधिकारिक प्लगइन्स बनाए रखता है: OkHttp और URLSession के लिए Network Plugin, SQLite और Realm के लिए Database Plugin, View पदानुक्रम के लिए Layout Inspector, SharedPreferences Plugin और Crash Reporter।
आधिकारिक के अलावा, समुदाय द्वारा विकसित थर्ड-पार्टी प्लगइन्स का एक इकोसिस्टम मौजूद है। उदाहरण के लिए, Tencent MMKV स्टोरेज को डीबग करने के लिए MMKV Plugin, React Native के लिए Redux Debugger, मेमोरी लीक का पता लगाने के लिए LeakCanary Plugin। प्लगइन्स Maven Central और CocoaPods के माध्यम से वितरित किए जाते हैं और सामान्य निर्भरता के रूप में जुड़ते हैं।
Flipper का एक महत्वपूर्ण लाभ कस्टम प्लगइन्स लिखने की क्षमता है। एक प्लगइन में दो भाग होते हैं: क्लाइंट-साइड भाग (Kotlin या Swift में) जो मोबाइल ऐप में रजिस्टर होता है, और डेस्कटॉप-साइड भाग (TypeScript या JavaScript में) जो इंटरफेस में UI पैनल जोड़ता है। Meta WebSocket और JSON संदेशों के समर्थन के साथ कस्टम प्लगइन्स बनाने के लिए API प्रदान करता है।
| प्लगइन | उद्देश्य | लाइब्रेरी |
|---|---|---|
| Network | HTTP/HTTPS अनुरोध देखना | OkHttp, URLSession |
| Database | SQLite और Realm संपादित करना | SQLite, Realm |
| LayoutInspector | View पदानुक्रम और विशेषताएँ | Android View System |
| SharedPreferences | प्राथमिकताएँ देखना और संपादित करना | Android SharedPreferences |
| Litho | Litho घटकों को डीबग करना | Facebook Litho |
Network Plugin सबसे लोकप्रिय Flipper प्लगइन्स में से एक है। यह Android पर OkHttp या iOS पर URLSession के माध्यम से जाने वाले सभी HTTP/HTTPS अनुरोधों को इंटरसेप्ट करता है और उन्हें डेस्कटॉप इंटरफेस में रियल टाइम में प्रदर्शित करता है। प्रत्येक अनुरोध के लिए उपलब्ध हैं: URL, विधि, स्थिति कोड, अनुरोध और प्रतिक्रिया हेडर, अनुरोध और प्रतिक्रिया बॉडी, निष्पादन समय और आकार।
Android पर Network Plugin कनेक्ट करने के लिए, बस flipper-network-plugin निर्भरता जोड़ें और OkHttpClient को NetworkFlipperPlugin कंस्ट्रक्टर को पास करें। Flipper स्वचालित रूप से OkHttpClient को एक इंटरसेप्टर में लपेटता है। iOS पर, URLSession एकीकरण प्लगइन को FlipperNetworkInterceptor के माध्यम से कॉन्फ़िगरेशन की आवश्यकता होती है।
val networkPlugin = NetworkFlipperPlugin()
val client = OkHttpClient.Builder()
.addNetworkInterceptor(networkPlugin)
.build()
Network Plugin की एक मुख्य विशेषता अनुरोधों की खोज और फ़िल्टरिंग का समर्थन है। डेवलपर URL, विधि, स्थिति कोड या सामग्री प्रकार के अनुसार अनुरोधों को फ़िल्टर कर सकता है। किसी भी अनुरोध को इंटरफेस से जबरन दोहराया जा सकता है — यह अलग curl अनुरोध लिखे बिना एंडपॉइंट के परीक्षण के लिए उपयोगी है। Meta डेवलपर सर्वेक्षण (2024) के अनुसार, Network Plugin का उपयोग 78% प्रोजेक्ट्स में किया जाता है जहाँ Flipper स्थापित है।
Database Plugin डेस्कटॉप क्लाइंट से सीधे SQLite और Realm डेटाबेस तक पहुंच प्रदान करता है। डेवलपर सभी तालिकाओं, उनकी स्कीमा और सामग्री को सारणीबद्ध दृश्य में देखता है। कोड लिखे बिना मनमाने SQL क्वेरी निष्पादित किए जा सकते हैं और रिकॉर्ड जोड़े, संपादित और हटाए जा सकते हैं। यह adb shell के उपयोग की तुलना में ऐप स्थितियों की डीबगिंग को काफी तेज करता है।
SharedPreferences Plugin समान रूप से काम करता है: यह Android पर SharedPreferences में संग्रहीत सभी कुंजी और मान प्रदर्शित करता है। संपादन तुरंत होता है — परिवर्तन तुरंत ऐप में दिखाई देते हैं। हालांकि, एक महत्वपूर्ण सीमा है: ऐप को पुनरारंभ करने के बाद, Flipper फिर से कनेक्ट होता है और प्लगइन के माध्यम से किए गए सभी परिवर्तन सहेजे जाते हैं क्योंकि वे सीधे SharedPreferences फ़ाइल पर लागू होते हैं।
iOS के लिए, समकक्ष NSUserDefaults Plugin है। यह UserDefaults के साथ काम करता है और सभी सहेजे गए कुंजी-मान जोड़े दिखाता है। प्लगइन स्ट्रिंग, संख्याएँ, दिनांक और ऐरे के संपादन का समर्थन करता है। परिवर्तन तुरंत लागू होते हैं क्योंकि Flipper रनटाइम इंटरफेस के माध्यम से UserDefaults तक पहुंचता है।
Flipper Layout Inspector Android पर View पदानुक्रम का एक दृश्य प्रतिनिधित्व प्रदान करता है। डेवलपर घटक ट्री, उनकी विशेषताएँ (चौड़ाई, ऊँचाई, पैडिंग, पृष्ठभूमि, टेक्स्ट) देखता है और डिवाइस स्क्रीन पर किसी भी तत्व को इंटरैक्टिव रूप से चुन सकता है। यह Android Studio में बिल्ट-इन Layout Inspector का एक विकल्प है, लेकिन एक महत्वपूर्ण अंतर के साथ — Flipper ऐप को रोके बिना रियल टाइम में पदानुक्रम दिखाता है।
लॉगिंग के लिए, Logs Plugin का उपयोग किया जाता है। Logcat के सभी लॉग स्तर (Debug, Info, Warn, Error) और टैग के अनुसार फ़िल्टरिंग के साथ डेस्कटॉप इंटरफेस में आते हैं। Android Studio Logcat के विपरीत, Flipper इंटरफेस स्क्रीन को अव्यवस्थित नहीं करता है — लॉग टैग द्वारा समूहित और स्तर द्वारा हाइलाइट किए जाते हैं। JSON में लॉग की खोज और निर्यात समर्थित है।
एक और उपयोगी सुविधा Console Plugin है जो React Native या WebView घटकों में JavaScript कोड से console.log प्रदर्शित करता है। यह हाइब्रिड ऐप्स की डीबगिंग को सरल बनाता है: डेवलपर एक इंटरफेस में मूल लॉग और JS लॉग दोनों देखता है। प्लगइन स्रोत (Native या JS) और लॉगिंग स्तर द्वारा फ़िल्टरिंग का समर्थन करता है।
Flutter ऐप्स के लिए, Flipper pub.dev से flipper पैकेज के माध्यम से जुड़ता है। flutter_flipper प्लगइन Dio नेटवर्किंग लेयर, SharedPreferences स्टोरेज और Flutter नेविगेशन के साथ एकीकरण प्रदान करता है। इंस्टॉलेशन के लिए pubspec.yaml में निर्भरता जोड़ने और ऐप के मुख्य फंक्शन में FlipperClient को इनिशियलाइज़ करने की आवश्यकता होती है। Flutter प्लगइन्स कार्यक्षमता में मूल प्लगइन्स से अभी भी कमतर हैं, लेकिन वे मुख्य डीबगिंग परिदृश्यों को कवर करते हैं।
Flipper सक्रिय प्लगइन्स की संख्या के अनुपात में डिवाइस और डेस्कटॉप संसाधनों की खपत करता है। जब सभी प्लगइन्स एक साथ Android एमुलेटर पर कनेक्ट होते हैं, तो Meta के माप (2024) के अनुसार 5–10% प्रदर्शन में गिरावट देखी जाती है। केवल आवश्यक प्लगइन्स को कनेक्ट करने और डेस्कटॉप ऐप इंटरफेस के माध्यम से अप्रयुक्त को अक्षम करने की अनुशंसा की जाती है।
अक्सर पूछे जाने वाले प्रश्न
Flipper एक कंप्यूटर प्रोग्राम है जो दिखाता है कि मोबाइल ऐप के अंदर क्या हो रहा है: कौन से अनुरोध भेजे जा रहे हैं, डेटाबेस में क्या संग्रहीत है और इंटरफेस कैसा दिखता है।
Android Studio Profiler IDE में बनाया गया है और ADB के माध्यम से कनेक्शन की आवश्यकता है। Flipper एक अलग ऐप के रूप में काम करता है, प्लगइन्स का समर्थन करता है और इंटरफेस का निरीक्षण करते समय ऐप को नहीं रोकता है।
नहीं, डेस्कटॉप क्लाइंट अनिवार्य है — यह मोबाइल SDK से डेटा प्राप्त करता है और प्रदर्शित करता है। इसके बिना, डिवाइस पर प्लगइन्स के पास जानकारी प्रदर्शित करने के लिए कोई इंटरफेस नहीं है।
हाँ, Flipper idb ब्रिज के माध्यम से iOS का समर्थन करता है। बिल्ड और चलाने के लिए macOS की आवश्यकता है, लेकिन डेस्कटॉप क्लाइंट किसी भी प्लेटफॉर्म पर काम कर सकता है यदि डिवाइस नेटवर्क से जुड़ा है।
अधिकांश प्रोजेक्ट्स के लिए, अनुरोधों को डीबग करने के लिए Network Plugin, डेटा देखने के लिए Database Plugin और इंटरफेस के साथ काम करने के लिए Layout Inspector पर्याप्त हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें