যেসব অ্যাপ্লিকেশনে একাধিক ডিভাইসের মধ্যে সংযোগ প্রয়োজন, সেগুলো পরীক্ষা করার জন্য আপনি একাধিক অ্যান্ড্রয়েড এমুলেটর ইনস্ট্যান্স সংযুক্ত করতে পারেন, যাতে তারা একে অপরের সাথে যোগাযোগ করতে পারে। সংযোগ স্থাপনের পদ্ধতিটি আপনার ব্যবহৃত এমুলেটরের সংস্করণের উপর নির্ভর করে।
অ্যান্ড্রয়েড এমুলেটর সংস্করণ ৩৬.৫ এবং তার পরবর্তী
অ্যান্ড্রয়েড এমুলেটর সংস্করণ ৩৬.৫ এবং এর পরবর্তী সংস্করণগুলো একটি সরলীকৃত নেটওয়ার্কিং মডেল প্রদান করে, যা একটি শেয়ার করা ওয়াই-ফাই নেটওয়ার্কের মাধ্যমে ইনস্ট্যান্সগুলোকে সংযুক্ত করে।
এই নেটওয়ার্কিং স্ট্যাকের মাধ্যমে, একাধিক এমুলেটর একই ভার্চুয়াল ওয়াই-ফাই নেটওয়ার্কে স্বতন্ত্র ডিভাইস হিসেবে প্রদর্শিত হয়। এর ফলে, তারা প্রচলিত ওয়াই-ফাই-ভিত্তিক প্রোটোকল ব্যবহার করে স্বয়ংক্রিয়ভাবে একে অপরকে খুঁজে পায় এবং যোগাযোগ স্থাপন করে।
এমুলেটরগুলো নেটওয়ার্ক সার্ভিস ডিসকভারি (NSD) এবং ওয়াই-ফাই ডিরেক্ট-এর মতো প্রযুক্তি ব্যবহার করে ভার্চুয়াল নেটওয়ার্কে একে অপরকে খুঁজে নিতে পারে।
যেহেতু এমুলেটরগুলো একই ওয়াই-ফাই নেটওয়ার্কে থাকে, তাই আপনি একটি এমুলেটরের নির্দিষ্ট আইপি অ্যাড্রেস খুঁজে নিয়ে অন্য এমুলেটর ইনস্ট্যান্স থেকে সরাসরি সেটিতে সংযোগ করতে পারেন। ভার্চুয়াল ওয়াই-ফাই ইন্টারফেসের ( wlan0 ) আইপি অ্যাড্রেস পেতে, আপনার হোস্ট মেশিন থেকে নিম্নলিখিত কমান্ডটি চালান:
adb shell ip addr show wlan0
অ্যান্ড্রয়েড এমুলেটর সংস্করণ 36.5 এর আগে
আপনি যদি অ্যান্ড্রয়েড এমুলেটরের পুরোনো কোনো সংস্করণ ব্যবহার করেন, তাহলে ডিফল্টরূপে ইনস্ট্যান্সগুলোর মধ্যে সরাসরি যোগাযোগ সম্ভব নয়। প্রতিটি এমুলেটর ইনস্ট্যান্স তার নিজস্ব ভার্চুয়াল রাউটারের আড়ালে কাজ করে, যা এটিকে স্থানীয় নেটওয়ার্ক এবং অন্যান্য এমুলেটর থেকে বিচ্ছিন্ন রাখে।
যোগাযোগ সক্ষম করতে, আপনাকে ম্যানুয়ালি নেটওয়ার্ক রিডাইরেকশন সেট আপ করতে হবে। এই প্রক্রিয়ায় এমন একটি ম্যাপিং তৈরি করতে হয়, যা ভার্চুয়াল রাউটারকে বাইপাস করে আপনার হোস্ট মেশিনের একটি নির্দিষ্ট পোর্ট থেকে ইমুলেটেড ডিভাইসের একটি পোর্টে ট্র্যাফিক ফরওয়ার্ড করে।
আপনি দুইভাবে নেটওয়ার্ক রিডাইরেকশন কনফিগার করতে পারেন:
- এমুলেটর কনসোল কমান্ড : চলমান এমুলেটর ইনস্ট্যান্সের জন্য পোর্ট ম্যাপিং সেট আপ করতে বিল্ট-ইন কনসোল ব্যবহার করুন।
- অ্যান্ড্রয়েড ডিবাগ ব্রিজ (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-এ আসা সমস্ত TCP সংযোগ পরিচালনা করে এবং সেগুলিকে 10.0.2.15:6000-এ থাকা এমুলেটেড সিস্টেমে পাঠিয়ে দেয়:
redir add tcp:5000:6000
একটি রিডাইরেকশন মুছে ফেলতে, redir del কমান্ডটি ব্যবহার করুন। একটি নির্দিষ্ট ইনস্ট্যান্সের সমস্ত রিডাইরেকশনের তালিকা দেখতে, redir list ব্যবহার করুন। এই এবং অন্যান্য কনসোল কমান্ড সম্পর্কে আরও তথ্যের জন্য, "Send Emulator console commands" দেখুন।
আপনার স্থানীয় পরিবেশ দ্বারা পোর্ট নম্বরগুলো সীমাবদ্ধ থাকে। এর মানে হলো, বিশেষ অ্যাডমিনিস্ট্রেটর প্রিভিলেজ ছাড়া আপনি সাধারণত ১০২৪-এর কম হোস্ট পোর্ট নম্বর ব্যবহার করতে পারবেন না। এছাড়াও, আপনার মেশিনে অন্য কোনো প্রসেস দ্বারা ব্যবহৃত হচ্ছে এমন কোনো হোস্ট পোর্টের জন্য আপনি রিডাইরেকশন সেট আপ করতে পারবেন না। সেক্ষেত্রে, redir এই মর্মে একটি এরর মেসেজ তৈরি করে।
adb এর মাধ্যমে রিডাইরেকশন সেট আপ করুন
অ্যান্ড্রয়েড ডিবাগ ব্রিজ ( 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>এর সাথে সংযুক্ত করুন।
উদাহরণস্বরূপ, আপনি যদি একটি HTTP সার্ভার চালাতে চান, তাহলে <serverPort> হিসেবে 80 এবং <localPort> হিসেবে 8080 নির্বাচন করুন:
- B
10.0.2.15:80শোনে। - B কনসোলে, `
redir add tcp:8080:80দিন। - C,
10.0.2.2:8080এর সাথে সংযুক্ত।