अगर आपको ऐसे ऐप्लिकेशन की जांच करनी है जिनमें कई डिवाइसों के बीच इंटरैक्शन होता है, तो Android Emulator के कई इंस्टेंस कनेक्ट किए जा सकते हैं. इससे वे एक-दूसरे के साथ कम्यूनिकेट कर पाएंगे. कनेक्शन बनाने का तरीका, आपके इस्तेमाल किए जा रहे एम्युलेटर के वर्शन पर निर्भर करता है.
Android Emulator 36.5 और इसके बाद के वर्शन
Android Emulator के 36.5 और इसके बाद के वर्शन में, एक आसान नेटवर्किंग मॉडल उपलब्ध है. यह शेयर किए गए वाई-फ़ाई नेटवर्क पर इंस्टेंस को कनेक्ट करता है.
इस नेटवर्किंग स्टैक की मदद से, एक ही वर्चुअल वाई-फ़ाई नेटवर्क पर कई एम्युलेटर अलग-अलग डिवाइसों के तौर पर दिखते हैं. इससे वे स्टैंडर्ड वाई-फ़ाई प्रोटोकॉल का इस्तेमाल करके, एक-दूसरे को अपने-आप ढूंढ सकते हैं और उनसे कम्यूनिकेट कर सकते हैं.
इम्यूलेटर, वर्चुअल नेटवर्क पर एक-दूसरे को ढूंढ सकते हैं. इसके लिए, वे नेटवर्क सर्विस डिस्कवरी (एनएसडी) और वाई-फ़ाई डायरेक्ट जैसी टेक्नोलॉजी का इस्तेमाल करते हैं.
एम्युलेटर एक ही वाई-फ़ाई नेटवर्क पर हैं. इसलिए, आपको किसी एम्युलेटर का आईपी पता भी मिल सकता है. साथ ही, किसी दूसरे एम्युलेटर इंस्टेंस से सीधे तौर पर कनेक्ट किया जा सकता है. वर्चुअल वाई-फ़ाई इंटरफ़ेस (wlan0) का आईपी पता पाने के लिए, अपने होस्ट मशीन पर यह कमांड चलाएं:
adb shell ip addr show wlan0
Android Emulator का 36.5 से पहले का वर्शन
अगर Android Emulator के पुराने वर्शन का इस्तेमाल किया जा रहा है, तो डिफ़ॉल्ट रूप से इंस्टेंस के बीच सीधे तौर पर कम्यूनिकेट नहीं किया जा सकता. हर एम्युलेटर इंस्टेंस, अपने वर्चुअल राउटर के पीछे काम करता है. इससे, यह लोकल नेटवर्क और अन्य एम्युलेटर से अलग हो जाता है.
कम्यूनिकेशन की सुविधा चालू करने के लिए, आपको नेटवर्क रीडायरेक्शन को मैन्युअल तरीके से सेट अप करना होगा. इस प्रोसेस में, एक मैपिंग बनाई जाती है. यह मैपिंग, आपकी होस्ट मशीन के किसी पोर्ट से ट्रैफ़िक को वर्चुअल राउटर को बायपास करके, एम्युलेट किए गए डिवाइस के किसी पोर्ट पर फ़ॉरवर्ड करती है.
नेटवर्क रीडायरेक्शन को दो तरीकों से कॉन्फ़िगर किया जा सकता है:
- एम्युलेटर कंसोल के निर्देश: चालू एम्युलेटर इंस्टेंस के लिए पोर्ट मैपिंग सेट अप करने के लिए, पहले से मौजूद कंसोल का इस्तेमाल करें.
- Android डीबग ब्रिज (adb): ज़रूरी पोर्ट फ़ॉरवर्डिंग के नियमों को कॉन्फ़िगर करने के लिए, adb कमांड का इस्तेमाल करें.
एम्युलेटर कंसोल के ज़रिए रीडायरेक्शन सेट अप करना
हर एम्युलेटर इंस्टेंस में एक कंट्रोल कंसोल होता है. इससे कनेक्ट करके, उस इंस्टेंस के लिए खास तौर पर तैयार की गई कमांड दी जा सकती हैं. इमुलेटर इंस्टेंस के लिए, ज़रूरत के मुताबिक रीडायरेक्शन सेट अप करने के लिए, redir कंसोल कमांड का इस्तेमाल करें.
सबसे पहले, टारगेट एम्युलेटर इंस्टेंस के लिए कंसोल पोर्ट नंबर तय करें. उदाहरण के लिए, लॉन्च किए गए पहले एम्युलेटर इंस्टेंस के लिए कंसोल पोर्ट नंबर 5554 है. इसके बाद, टारगेट एम्युलेटर इंस्टेंस के कंसोल से कनेक्ट करें. इसके लिए, कंसोल पोर्ट नंबर डालें. ऐसा इस तरह करें:
telnet localhost 5554
कनेक्ट होने के बाद, रीडायरेक्ट करने की सुविधा सेट अप करने से पहले आपको पुष्टि करनी होगी. ऐसा करने का तरीका जानने के लिए, कंसोल सेशन शुरू और बंद करना लेख पढ़ें. पुष्टि हो जाने के बाद, रीडायरेक्ट करने के लिए redir कमांड का इस्तेमाल करें.
रीडायरेक्शन जोड़ने के लिए, इस निर्देश का इस्तेमाल करें:
redir add <protocol>:<host-port>:<guest-port>
यहां <protocol>, tcp या udp में से कोई एक हो सकता है. साथ ही, <host-port> और <guest-
port>, आपकी मशीन और एम्युलेट किए गए सिस्टम के बीच मैपिंग सेट करते हैं.
उदाहरण के लिए, यहां दी गई कमांड एक रीडायरेक्शन सेट अप करती है. यह आपकी होस्ट (डेवलपमेंट) मशीन पर 127.0.0.1:5000 पर आने वाले सभी टीसीपी कनेक्शन को हैंडल करती है और उन्हें 10.0.2.15:6000 पर मौजूद एमुलेट किए गए सिस्टम पर भेजती है:
redir add tcp:5000:6000
रीडायरेक्ट करने की सुविधा हटाने के लिए, redir del निर्देश का इस्तेमाल करें. किसी खास इंस्टेंस के लिए, सभी रीडायरेक्शन की सूची बनाने के लिए, redir list का इस्तेमाल करें. इन और अन्य कंसोल कमांड के बारे में ज़्यादा जानने के लिए, इमुलेटर कंसोल कमांड भेजना लेख पढ़ें.
पोर्ट नंबर, आपके लोकल एनवायरमेंट के हिसाब से तय किए जाते हैं. इसका आम तौर पर मतलब यह होता है कि एडमिन के खास अधिकारों के बिना, 1024 से कम होस्ट पोर्ट नंबर का इस्तेमाल नहीं किया जा सकता. इसके अलावा, उस होस्ट पोर्ट के लिए रीडायरेक्शन सेट अप नहीं किया जा सकेगा जिसका इस्तेमाल आपकी मशीन पर पहले से ही कोई दूसरी प्रोसेस कर रही है. ऐसे में, redir इस बारे में गड़बड़ी का मैसेज जनरेट करता है.
adb की मदद से रीडायरेक्शन सेट अप करना
Android डीबग ब्रिज (adb) टूल, पोर्ट फ़ॉरवर्डिंग की सुविधा देता है. यह नेटवर्क रीडायरेक्शन सेट अप करने का एक और तरीका है. ज़्यादा जानकारी के लिए, adb के दस्तावेज़ में पोर्ट फ़ॉरवर्डिंग सेट अप करना लेख पढ़ें.
फ़िलहाल, adb सर्वर को बंद करने के अलावा, रीडायरेक्ट करने की सुविधा को हटाने का कोई तरीका उपलब्ध नहीं है.adb
एम्युलेटर इंस्टेंस को आपस में कनेक्ट करना
एक एम्युलेटर इंस्टेंस को दूसरे से कम्यूनिकेट करने की अनुमति देने के लिए, नेटवर्क रीडायरेक्शन सेट अप करें. इसके लिए, यहां दिया गया तरीका अपनाएं.
मान लें कि आपका एनवायरमेंट इस तरह है:
- A आपकी डेवलपमेंट मशीन है.
- B, आपका पहला एम्युलेटर इंस्टेंस है, जो A पर चल रहा है.
- C, आपका दूसरा एम्युलेटर इंस्टेंस है. यह भी A पर चल रहा है.
अगर आपको B पर कोई सर्वर चलाना है, जिससे C कनेक्ट होगा, तो उसे इस तरह सेट अप करें:
- B पर सर्वर सेट अप करें, जो
10.0.2.15:<serverPort>को सुन रहा हो. - B कंसोल पर, A:
localhost:<localPort>से B:10.0.2.15:<serverPort>पर रीडायरेक्ट करने की सुविधा सेट अप करें. - C पर, क्लाइंट को
10.0.2.2:<localPort>से कनेक्ट करें.
उदाहरण के लिए, अगर आपको एचटीटीपी सर्वर चलाना है, तो <serverPort> को 80 और <localPort> को 8080 के तौर पर चुनें:
- B,
10.0.2.15:80पर सुनता है. - B कंसोल पर,
redir add tcp:8080:80कमांड चलाएं. - C को
10.0.2.2:8080से कनेक्ट किया जाता है.