মাল্টি-ডিভাইস ইন্টারঅ্যাকশন জড়িত অ্যাপ্লিকেশনগুলি পরীক্ষা করার জন্য, আপনি একাধিক অ্যান্ড্রয়েড এমুলেটর ইন্সট্যান্স সংযুক্ত করতে পারেন যাতে তারা একে অপরের সাথে যোগাযোগ করতে পারে। সংযোগ স্থাপনের পদ্ধতিটি আপনি যে এমুলেটরটি ব্যবহার করছেন তার সংস্করণের উপর নির্ভর করে।
অ্যান্ড্রয়েড এমুলেটর সংস্করণ ৩৬.৫ এবং পরবর্তী
অ্যান্ড্রয়েড এমুলেটর সংস্করণ ৩৬.৫ এবং পরবর্তী সংস্করণগুলি একটি সরলীকৃত নেটওয়ার্কিং মডেল অফার করে যা একটি শেয়ার্ড ওয়াই-ফাই নেটওয়ার্কের মাধ্যমে ইনস্ট্যান্সগুলিকে সংযুক্ত করে।
এই নেটওয়ার্কিং স্ট্যাকের সাহায্যে, একই ভার্চুয়াল ওয়াই-ফাই নেটওয়ার্কে একাধিক এমুলেটর আলাদা ডিভাইস হিসেবে উপস্থিত হয়। এটি তাদের স্ট্যান্ডার্ড ওয়াই-ফাই-ভিত্তিক প্রোটোকল ব্যবহার করে স্বয়ংক্রিয়ভাবে একে অপরকে আবিষ্কার এবং যোগাযোগ করতে দেয়।
নেটওয়ার্ক সার্ভিস ডিসকভারি (NSD) এবং ওয়াই-ফাই ডাইরেক্টের মতো প্রযুক্তি ব্যবহার করে ভার্চুয়াল নেটওয়ার্কে এমুলেটররা একে অপরকে খুঁজে পেতে পারে।
যেহেতু এমুলেটরগুলি একই ওয়াই-ফাই নেটওয়ার্কে থাকে, তাই আপনি একটি এমুলেটরের নির্দিষ্ট আইপি ঠিকানা খুঁজে পেতে পারেন এবং অন্য এমুলেটর ইনস্ট্যান্স থেকে সরাসরি এর সাথে সংযোগ করতে পারেন। ভার্চুয়াল ওয়াই-ফাই ইন্টারফেসের আইপি ঠিকানা পেতে ( wlan0 ), আপনার হোস্ট মেশিন থেকে নিম্নলিখিত কমান্ডটি চালান:
adb shell ip addr show wlan0
৩৬.৫ সংস্করণের পূর্ববর্তী অ্যান্ড্রয়েড এমুলেটর
যদি আপনি অ্যান্ড্রয়েড এমুলেটরের পূর্ববর্তী সংস্করণ ব্যবহার করেন, তাহলে ডিফল্টরূপে ইনস্ট্যান্সগুলির মধ্যে সরাসরি যোগাযোগ সম্ভব নয়। প্রতিটি এমুলেটর ইনস্ট্যান্স তার নিজস্ব ভার্চুয়াল রাউটারের পিছনে কাজ করে, স্থানীয় নেটওয়ার্ক এবং অন্যান্য এমুলেটর থেকে এটিকে বিচ্ছিন্ন করে।
যোগাযোগ সক্ষম করতে, আপনাকে ম্যানুয়ালি নেটওয়ার্ক পুনঃনির্দেশনা সেট আপ করতে হবে। এই প্রক্রিয়ায় একটি ম্যাপিং তৈরি করা জড়িত যা আপনার হোস্ট মেশিনের একটি নির্দিষ্ট পোর্ট থেকে ভার্চুয়াল রাউটারকে বাইপাস করে এমুলেটেড ডিভাইসের একটি পোর্টে ট্র্যাফিক ফরোয়ার্ড করে।
আপনি দুটি উপায়ে নেটওয়ার্ক পুনঃনির্দেশনা কনফিগার করতে পারেন:
- এমুলেটর কনসোল কমান্ড : চলমান এমুলেটর ইনস্ট্যান্সের জন্য পোর্ট ম্যাপিং সেট আপ করতে বিল্ট-ইন কনসোল ব্যবহার করুন।
- অ্যান্ড্রয়েড ডিবাগ ব্রিজ (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 ব্যবহার করুন। এই এবং অন্যান্য কনসোল কমান্ড সম্পর্কে আরও তথ্যের জন্য, সেন্ড এমুলেটর কনসোল কমান্ডগুলি দেখুন।
আপনার স্থানীয় পরিবেশ দ্বারা পোর্ট নম্বরগুলি সীমাবদ্ধ। এর অর্থ হল আপনি বিশেষ প্রশাসকের অধিকার ছাড়া 1024 এর নীচে হোস্ট পোর্ট নম্বরগুলি ব্যবহার করতে পারবেন না। এছাড়াও, আপনি এমন একটি হোস্ট পোর্টের জন্য পুনঃনির্দেশ সেট আপ করতে পারবেন না যা ইতিমধ্যেই আপনার মেশিনে অন্য কোনও প্রক্রিয়া দ্বারা ব্যবহৃত হচ্ছে। সেই ক্ষেত্রে, redir সেই প্রভাবের জন্য একটি ত্রুটি বার্তা তৈরি করে।
adb এর মাধ্যমে পুনঃনির্দেশনা সেট আপ করুন
অ্যান্ড্রয়েড ডিবাগ ব্রিজ ( adb ) টুলটি পোর্ট ফরওয়ার্ডিং প্রদান করে, যা আপনার জন্য নেটওয়ার্ক পুনঃনির্দেশনা সেট আপ করার একটি বিকল্প উপায়। আরও তথ্যের জন্য, adb ডকুমেন্টেশনে পোর্ট ফরওয়ার্ডিং সেট আপ দেখুন।
adb বর্তমানে adb সার্ভার বন্ধ করে দেওয়া ছাড়া পুনঃনির্দেশনা অপসারণের কোনও উপায় অফার করে না।
ইন্টারকানেক্ট এমুলেটর দৃষ্টান্ত
একটি এমুলেটর ইন্সট্যান্সকে অন্যটির সাথে যোগাযোগ করার অনুমতি দিতে, নিম্নলিখিত ধাপগুলিতে বর্ণিত নেটওয়ার্ক পুনঃনির্দেশনা সেট আপ করুন।
ধরে নিন যে আপনার পরিবেশটি নিম্নরূপ:
- A হলো তোমার ডেভেলপমেন্ট মেশিন।
- B হল আপনার প্রথম এমুলেটর ইনস্ট্যান্স, যা A তে চলছে।
- C হল আপনার দ্বিতীয় এমুলেটর ইনস্ট্যান্স, যা A তেও চলছে।
যদি আপনি B তে এমন একটি সার্ভার চালাতে চান যার সাথে C সংযুক্ত হবে, তাহলে এটি নিম্নরূপ সেট আপ করুন:
-
10.0.2.15:<serverPort>শুনুন, B তে সার্ভার সেট আপ করুন। - 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এর সাথে সংযোগ স্থাপন করে।