जेटब्रेन प्रोजेक्टर के साथ किसी भी डिवाइस से एंड्रॉइड स्टूडियो में कोड कैसे करें

एंड्रॉइड स्टूडियो में दूरस्थ रूप से कोड खोज रहे हैं? JetBrains प्रोजेक्टर देखें, जो किसी भी डिवाइस पर JetBrains के IntelliJ IDE को चलाने का सबसे अच्छा तरीका है।

JetBrains कुछ सबसे लोकप्रिय IDE के पीछे की कंपनी है, जिसमें IntelliJ IDEA, PyCharm और PhpStorm शामिल हैं। यहां तक ​​कि एंड्रॉइड स्टूडियो, एंड्रॉइड विकास के लिए Google की इन-हाउस आईडीई, IntelliJ पर आधारित है।

जबकि IntelliJ के IDE एक कारण से लोकप्रिय हैं (वे हैं अच्छा), वे कभी-कभी थोड़े भारी हो सकते हैं। उदाहरण के लिए, IntelliJ और Android Studio केवल खुले रहने से बहुत सारे संसाधन ले सकते हैं। और यदि आप कुछ संकलित कर रहे हैं, तो वे और भी अधिक उपयोग करने जा रहे हैं। आप वास्तव में (अभी तक) मोबाइल डिवाइस पर JetBrains सामग्री नहीं चला सकते, क्योंकि JetBrains में आसानी से पहुंचने योग्य ARM बिल्ड नहीं हैं।

तो क्या होगा यदि आपके पास एक शक्तिशाली कंप्यूटर नहीं है, या आपके पास कंप्यूटर भी नहीं है? आम तौर पर, यह वह जगह होगी जहां आप अन्य आईडीई को देखेंगे जो एआरएम पर काम करते हैं। लेकिन JetBrains के पास एक समाधान है, और इसे JetBrains प्रोजेक्टर कहा जाता है।

प्रोजेक्टर क्या है?

आपने शायद पहले रिमोट डेस्कटॉप या वीएनसी के बारे में सुना होगा। यह आपको स्थानीय नेटवर्क या यहां तक ​​कि इंटरनेट पर कंप्यूटर के साथ ग्राफ़िक रूप से इंटरैक्ट करने की सुविधा देता है। JetBrains प्रोजेक्टर कुछ-कुछ रिमोट डेस्कटॉप की तरह काम करता है, लेकिन कुछ कमियों के बिना।

JetBrains प्रोजेक्टर का उपयोग करने के लिए, आपको इसे होस्ट करने के लिए इंटरनेट पर कहीं न कहीं एक कंप्यूटर की आवश्यकता होती है। यह AWS इंस्टेंस या होम सर्वर हो सकता है। फिर आप इसे मोबाइल क्रोम और फ़ायरफ़ॉक्स सहित किसी भी समर्थित ब्राउज़र से कनेक्ट कर सकते हैं।

लेकिन संपूर्ण डेस्कटॉप प्रदर्शित करने और उसका वीडियो फ़ीड किसी कनेक्टेड क्लाइंट को वापस भेजने के बजाय, JetBrains प्रोजेक्टर क्लाइंट को IDE प्रदर्शित करने के लिए आवश्यक जानकारी भेजता है जैसे कि वह प्रदर्शित कर रहा हो स्थानीय स्तर पर. इसका मतलब है कि कोई संपीड़न या रिज़ॉल्यूशन स्केलिंग नहीं है, इसलिए आईडीई लगभग मूल दिखता है।

इसके अलावा, JetBrains प्रोजेक्टर केवल आधिकारिक JetBrains IDE तक सीमित नहीं है। जब तक आपके पास एक IDE है जो JetBrains पर आधारित है, आप इसे JetBrains प्रोजेक्टर के साथ उपयोग कर सकते हैं। इसमें एंड्रॉइड स्टूडियो भी शामिल है।

प्रोजेक्टर क्यों?

सबसे बड़ा कारण जो आप दूरस्थ विकास करना चाहते हैं वह वह है जिसके बारे में मैंने परिचय में बात की थी: यदि आपके पास एक शक्तिशाली x86-आधारित कंप्यूटर नहीं है तो क्या होगा? आप विशेष रूप से विकास कार्य के लिए एक अर्ध-शक्तिशाली सर्वर खरीद सकते हैं, या आप क्लाउड सर्वर को चालू कर सकते हैं और जेटब्रेन प्रोजेक्टर का उपयोग कर सकते हैं।

यदि आप केवल संसाधन आवश्यकताओं को पूरा करना चाहते हैं तो यह भी उपयोगी हो सकता है। उदाहरण के लिए, मेरे पास i7-9750H और 32GB रैम वाला एक काफी शक्तिशाली गेमिंग लैपटॉप है। यहां तक ​​कि जिन बड़ी परियोजनाओं से मैं निपटता हूं, उनके लिए भी यह काफी है। लेकिन अगर मैं विकास के अलावा कुछ और करना चाहता हूं जो संसाधन-गहन भी हो, जैसे यूट्यूब देखना, एक खेल खेलना? फिर चीज़ें बिखरने लगती हैं.

लेकिन मेरे पास 32GB RAM वाला Ryzen 7 5800X सर्वर है। इसलिए मैंने उस पर JetBrains प्रोजेक्टर स्थापित किया। अब मैं बस एक नई क्रोम विंडो खोल सकता हूं और संसाधनों की चिंता किए बिना इसे अपने लैपटॉप से ​​​​कनेक्ट कर सकता हूं। सर्वर मेरे लैपटॉप की तुलना में बहुत तेजी से बनता है, इसलिए यह एक जीत की स्थिति है।

प्रोजेक्टर का उपयोग कैसा है?

JetBrains प्रोजेक्टर को Linux मशीन पर होस्ट किया जाना है। इसका मतलब यह नहीं है कि आप इसे macOS पर या WSL ​​के साथ विंडोज़ पर नहीं चला सकते, लेकिन इसके कारण आपको कुछ अजीब समस्याओं का सामना करना पड़ सकता है।

इसे स्थापित करने के लिए, आपको बस यहां जाना होगा प्रोजेक्टर इंस्टॉलर GitHub रेपो और वहां दिए गए निर्देशों का पालन करें. वे आपको निर्भरताएँ स्थापित करने और एक आईडीई स्थापित करने में मार्गदर्शन करेंगे। यदि आपको आवश्यकता हो तो कुछ WSL समस्या निवारण चरण भी हैं।

फिर आप सही पोर्ट और टोकन (यदि आपने एक सेट किया है) का उपयोग करके अपने सर्वर पते से कनेक्ट कर सकते हैं, और अब आपके डिवाइस पर बिना किसी ब्लोट के एक आईडीई चल रहा है।

एंड्रॉइड विकास

मैं एक एंड्रॉइड डेवलपर हूं, इसलिए जब मैं विकास के लिए IntelliJ IDEA का उपयोग कर सकता हूं, तो एंड्रॉइड स्टूडियो बेहतर काम करता है। जबकि जेटब्रेन प्रोजेक्टर तृतीय-पक्ष आईडीई का समर्थन करता है, अब उन्हें डाउनलोड और इंस्टॉल करना अंतर्निहित कमांड-लाइन इंटरफ़ेस का उपयोग करना जितना आसान है। हालाँकि, यह अभी भी बहुत सरल है।

जेटब्रेन प्रोजेक्टर के साथ एंड्रॉइड स्टूडियो का उपयोग करने के लिए, आपको बस एंड्रॉइड स्टूडियो को कहीं से डाउनलोड करना और निकालना है। फिर आप पथ निर्दिष्ट करके कमांड लाइन के माध्यम से इसे मैन्युअल रूप से प्रोजेक्टर में जोड़ सकते हैं।

एंड्रॉइड डेवलपमेंट और प्रोजेक्टर के साथ एक और समस्या भी है: ऐप्स चलाना। बिना किसी अतिरिक्त चीज़ के, आप ऐप्स को कोड कर सकते हैं और प्रोजेक्टर में पूर्वावलोकन देख सकते हैं, लेकिन आप ऐप्स को वास्तव में चलाने और डीबग करने के लिए एमुलेटर का उपयोग नहीं कर सकते हैं या किसी वास्तविक डिवाइस से कनेक्ट नहीं कर सकते हैं। या आप कर सकते हैं?

यह लगभग वैसा ही है जैसे Google को इस तरह के परिदृश्य की उम्मीद थी क्योंकि ADB इंटरनेट पर एक दूरस्थ सर्वर से जुड़ सकता है। क्लाइंट से प्रोजेक्टर सर्वर तक एक SSH सुरंग की आवश्यकता है। मैंने एडीबी को प्रबंधित करने और पोर्ट 5038 का उपयोग करने का प्रयास न करने के लिए प्रोजेक्टर पर एंड्रॉइड स्टूडियो सेट किया है। फिर मैं एक सुरंग बनाने के लिए कुछ प्रकार के एसएसएच क्लाइंट (ओपनएसएसएच, प्लिंक इत्यादि) का उपयोग करता हूं जो पोर्ट 5037 पर स्थानीय रूप से चल रहे एडीबी सर्वर को पोर्ट 5038 पर सर्वर पर भेजता है। आसान!

उचित Android विकास के लिए आपको बस एक SSH सुरंग की आवश्यकता है।

यदि आप एंड्रॉइड स्टूडियो और एसएसएच टनलिंग को काम करने के तरीके के बारे में अधिक विवरण चाहते हैं, तो इसे देखें गिटहब दस्तावेज़ जोआकिम वर्जेस द्वारा।

एंड्रॉइड स्टूडियो और अन्य तृतीय-पक्ष JetBrains-आधारित IDE के बारे में एक नोट: आप उन्हें प्रोजेक्टर स्क्रीन से अपडेट नहीं कर सकते। आपको सीधे सर्वर में रिमोट करना होगा और वहां से उन्हें अपडेट करना होगा। सुनिश्चित करें कि आपके ऐसा करने से पहले संबंधित प्रोजेक्टर इंस्टेंस बंद कर दिया गया है।

एंड्रॉइड एंड्रॉइड डेवलपमेंट

चूंकि जेटब्रेन प्रोजेक्टर एक ब्राउज़र में चलता है, और आप एंड्रॉइड फोन जैसी किसी चीज़ से कनेक्ट कर सकते हैं, पूरी तरह से यादृच्छिक उदाहरण के रूप में, मैं कुछ आज़माना चाहता था।

एंड्रॉइड 11 ने क्षमता पेश की वायरलेस एडीबी सक्षम करें सीधे डिवाइस से. हालांकि कुछ निर्माताओं ने पहले ही सेटिंग का खुलासा कर दिया था, लेकिन यह सभी Google-प्रमाणित उपकरणों के लिए उपलब्ध नहीं है, जब तक वे एंड्रॉइड 11 या उसके बाद के संस्करण पर हैं। जबकि वायरलेस डिबगिंग का उपयोग कंप्यूटर से किया जाना है, यह आवश्यक नहीं है।

ऐप्स जैसे शिज़ुकु प्रदर्शित करें कि Android 11 पर ADB के साथ आपके डिवाइस से कनेक्ट करना संभव है...आपके डिवाइस से, कंप्यूटर का उपयोग करने के बारे में सोचे बिना। जबकि शिज़ुकु इसका उपयोग ऐप्स को उन्नत संचालन चलाने के लिए करता है, मुझे लगता है कि आप शायद देख सकते हैं कि यह कहाँ जा रहा है।

तो मैंने एक ऐप बनाया! मुझे नहीं पता कि मैं इसे कभी सार्वजनिक कर पाऊंगा या नहीं, लेकिन यह बहुत आसान है। मुझे इसमें ARM64 ADB बाइनरी के साथ एक SSH लाइब्रेरी मिली है। मैं जिस डिवाइस का उपयोग कर रहा हूं उससे कनेक्ट करने के लिए एडीबी बाइनरी का उपयोग करता हूं, फिर मैं अपने डिवाइस से प्रोजेक्टर सर्वर तक अग्रेषण सुरंग बनाने के लिए एसएसएच लाइब्रेरी का उपयोग करता हूं। और अंत में, मैं इसका उपयोग प्रोजेक्टर यूआरएल को स्टोर करने और लॉन्च करने के लिए करता हूं।

बैम, एंड्रॉइड के लिए विकास कर रहा हूं...एंड्रॉइड से! जब भी मैं घर पर नहीं होता, लेकिन मैं कुछ एंड्रॉइड विकास कार्य करना चाहता हूं, तो मैं अपना फोन निकाल सकता हूं सैमसंग गैलेक्सी टैब S7. मेरे पास एक ब्लूटूथ कीबोर्ड और एक ब्लूटूथ माउस है (सिडनोट: यदि आप प्रोजेक्टर का उपयोग कर रहे हैं, तो आप करेंगे वास्तव में माउस या ट्रैकपैड का उपयोग करना चाहते हैं. यह टच इनपुट के साथ अच्छा काम नहीं करता है), इसलिए मैं डिवाइस स्विच करने की आवश्यकता के बिना और बहुत भारी लैपटॉप के आसपास रहने की आवश्यकता के बिना विकसित और डिबग कर सकता हूं।

समस्या

JetBrains प्रोजेक्टर अभी भी काफी शुरुआती विकास में है, इसलिए यह सही नहीं है।

  1. स्क्रॉलिंग और ड्रैगिंग जैसी चीजों पर प्रतिक्रिया करते समय कभी-कभी यह थोड़ा धीमा हो जाता है, और नियंत्रण ख़राब हो सकता है।
  2. बेतरतीब ढंग से, जब लाइब्रेरी कोड (या तो विघटित या स्रोत दृश्य में) देखते हैं, तो फ़ॉन्ट का वजन वास्तव में भारी हो जाता है और सब कुछ पिछड़ जाता है। हालाँकि, इसे लिखने तक इसे ठीक कर लिया गया होगा।
  3. कुछ प्लगइन ठीक से काम नहीं करेंगे. चूँकि यह प्रत्यक्ष वीडियो स्ट्रीम नहीं है, एम्बेडेड ब्राउज़र जैसे प्लगइन्स कुछ भी प्रदर्शित नहीं करेंगे।
  4. कोई X सर्वर समर्थन नहीं है, और संभवतः कोई होगा भी नहीं। इससे डेस्कटॉप और ब्राउज़र ऐप्स विकसित करना मुश्किल हो सकता है, लेकिन यदि आपको वास्तव में इसकी आवश्यकता है तो आप हमेशा एक्स फ़ॉरवर्डिंग के साथ एक एसएसएच सुरंग और एक स्थानीय एक्स सर्वर का उपयोग कर सकते हैं।
  5. कभी-कभी इंटरफ़ेस लॉक हो जाता है और आपको इसे फिर से काम पर लाने के लिए पेज को रीफ्रेश करना पड़ता है या सर्वर सेवा को पुनरारंभ करना पड़ता है।

और भी बहुत कुछ है.

लेकिन क्या यह सब डीलब्रेकर है? निश्चित रूप से मेरे लिए नहीं. मैं थोड़े कम बेहतर अनुभव के साथ बिल्कुल ठीक हूं (आखिरकार, मैं एंड्रॉइड स्टूडियो कैनरी का उपयोग करता हूं), खासकर यदि इसका मतलब है कि मैं सभी संकलन कार्य को दूसरे कंप्यूटर पर लोड कर सकता हूं और यहां तक ​​कि अपने टैबलेट के लिए भी इसे अपने कंप्यूटर से विकसित कर सकता हूं गोली।

एंड्रॉइड स्टूडियो जेटब्रेन प्रोजेक्टर के माध्यम से सैमसंग गैलेक्सी टैब एस7 पर चल रहा है

अपनी समस्याओं के बावजूद, मुझे अभी भी जेटब्रेन प्रोजेक्टर वास्तव में पसंद है। यह मोबाइल से विकास को संभव बनाता है, यह संसाधन लोड को स्थानीय कंप्यूटर से दूरस्थ कंप्यूटर पर ले जाता है, और यह वास्तव में बहुत अच्छा भी है।

मैं विज़ुअल स्टूडियो जैसे अन्य आईडीई को जानता हूं, जो आपको दूरस्थ कंप्यूटर पर संकलन को लोड करने की सुविधा देते हैं, लेकिन इसके लिए अभी भी आपको आईडीई को स्थापित करना और स्थानीय रूप से चलाना आवश्यक है।

मैं व्यक्तिगत रूप से यह देखने के लिए वास्तव में उत्साहित हूं कि जेटब्रेन प्रोजेक्टर यहां से कहां जाता है क्योंकि यह इस समय पहले से ही काफी अविश्वसनीय है। उम्मीद है, वे मेरे द्वारा ऊपर वर्णित कुछ समस्याओं को ठीक करने में सक्षम होंगे, लेकिन अब भी, उत्पादन-तैयार परियोजनाओं के लिए प्रोजेक्टर का उपयोग सुरक्षित होना चाहिए।

यदि आप अपने लिए JetBrains प्रोजेक्टर आज़माना चाहते हैं, यहाँ फिर से लिंक है इंस्टॉलर और प्रारंभिक सेटअप गाइड के लिए। यदि आप प्रोजेक्टर में एंड्रॉइड स्टूडियो स्थापित करना चाहते हैं, यहाँ वह लिंक फिर से है, भी।