পোস্টটি পড়া হয়েছে 4,681 বার
Connect real device to Android Studio over Wi-Fi

ADB কী? একই Wi-Fi নেটওয়ার্কে থাকা Android Studio ও Real device কানেকশন

Post updated on 21st March, 2018 at 09:07 pm

ADB: Android Debug Bridge

ADB বা Android Debug Bridge মূলত একটা command line tool. এর মাধ্যমে অনেক ধরনের কাজ করা যায়। যেমনঃ ইমুলেটর বা ডিভাইসে অ্যাপ ইন্সটল/আনইন্সটল/রান করা, স্ক্রিনশট নেয়া, ইমুলেটর/ডিভাইসের ভিডিও রেকর্ড করা ইত্যাদি। ADB ব্যবহার করে আমরা প্রতিনিয়ত যেই কাজটা করি তা হলো Android Studio এর সাথে Emulator বা Android Real Device কানেক্ট করিয়ে অ্যাপ ইন্সটল ও রান করা। যদিও আমরা সরাসরি কমান্ড লিখে ADB ব্যবহার করি না। রান বাটনে ক্লিক করেই ইমুলেটর বা রিয়েল ফোনে অ্যাপ ইন্সটল করে চেক করি। আসলে বাটন ক্লিকে এই adb command ই রান হয়। ADB এর মাধ্যমে USB cable দিয়ে সহজেই অ্যান্ড্রয়েড ফোন কানেক্ট করানো যায়। কিন্তু দীর্ঘ সময় ফোন পিসির সাথে কানেক্ট করে রাখাটা ক্ষতিকর ও অনেক সময় বিরক্তিকর। তাই যদি একই Wi-Fi নেটওয়ার্কে থাকা পিসির অ্যান্ড্রয়েড স্টুডিও ও রিয়েল ডিভাইসকে cable ছাড়া Wi-Fi এর মাধ্যমে কানেক্ট করা যায় তাহলে বেশ ভাল হয়, তাই না? এটা নিয়েই আজকের গফ-সফ।

Some Basic knowledge of ADB

ডাইরেক্ট অ্যাকশনে না গিয়ে একটু থিওরি কপচানো যাক। কারণ থিওরি ছাড়া ডাইরেক্ট অ্যাকশনের ফায়দা খুব কম হয়।

অ্যান্ড্রয়েড স্টুডিও এর সাথে ডিভাইসকে (emulator or real device) কানেক্ট করে অ্যাপ ইন্সটল ও রান করার জন্য ADB’র তিনটা ব্যাসিক component আছে।

  1. Client
  2. Daemon
  3. Server

Client হচ্ছে যে ডেভেলপমেন্ট মেশিন বা পিসি থেকে ডিভাইসে কোনো কাজ করার জন্য কমান্ড পাঠায়। টার্মিনালে কমান্ড দিয়ে আপনি চাইলে নির্দিষ্ট কোনো ক্লায়েন্ট নিয়ে কাজ করতে পারবেন।

Daemon টা কাজ করে আপনার ডিভাইসের ব্যাকগ্রাউন্ড প্রসেস হিসাবে। এটা client এর দেয়া কমান্ডগুলোকে রান করে। যেমনঃ অ্যাপ ইন্সটল করা বা রান করা।

Server কাজ করে আপনার পিসি ও ডিভাইসের মধ্যে সংযোগ স্থাপনের জন্য। এটা থাকে আপনার পিসিতে। ক্লায়েন্ট যখন কোনো কমান্ড দেয় তখন সেটাকে ডিভাইসে পৌঁছে দেয়াই সার্ভারের কাজ।

ADB কিভাবে কাজ করে?

যখন আপনি কোনো অ্যাপ Android Studio থেকে রান করেন বা কোনো ADB client চালু করেন তখন প্রথমেই চেক করা হয় ADB server রানিং আছে কিনা। রানিং না থাকলে রান করা হয়। রান হবার পর এর Local TCP port থাকে 5037. এই পোর্ট দিয়ে সার্ভার তার ক্লায়েন্টের কাছ থেকে কমান্ডগুলো listen করে। সকল adb client-ই 5037 port দিয়ে সার্ভারের সাথে যোগাযোগ করে।

সার্ভার তো রান হলো! এখন এর কাজ হবে আপনার পিসি যতগুলো ইমুলেটর/ডিভাইসের সাথে connected আছে তাদের মধ্যে সংযোগ স্থাপন করা। ADB server ইমুলেটরগুলো খুঁজে বের করে 5555 থেকে 5585 এর মধ্যকার বিজোড় নাম্বারের পোর্টগুলোর মাধ্যমে। প্রতিটা ইমুলেটরে ২ টা করে পোর্ট থাকে। Port number-গুলো হয় sequential বা পরপর যার প্রথমটা জোড় সংখ্যায় ও পরেরটা হয় বিজোড়। জোড় সংখ্যার পোর্টটা ব্যবহার করা হয় console connection এর জন্য আর বিজোড় সংখ্যার পোর্টটা ব্যবহার করা হয় adb connection এর জন্য।

উদাহরণ:
Emulator 1, console: 5554
Emulator 1, adb: 5555
Emulator 2, console: 5556
Emulator 2, adb: 5557
and so on…

তো যাই হোক, adb server যখন সার্চ করে বিজোড় সংখ্যার এক বা একাধিক পোর্ট পেয়ে যাবে তখন এই পোর্টের মাধ্যমেই ইমুলেটরের সাথে যুক্ত হবে। আর যুক্ত হয়ে গেলেই আমরা ইচ্ছা মতন অ্যাপ ইন্সটল/আনইন্সটল/রান ইত্যাদি করতে পারব। এই উপরের সবগুলো কাজ আমাদের অ্যান্ড্রয়েড স্টুডিওতে থাকা রান বাটনে ক্লিক করলে একটার পর একটা কাজ সম্পন্ন হতে থাকে। আপনি চাইলে ম্যানুয়্যাল্যি টার্মিনালে কমান্ড দিয়ে কাজগুলো করতে পারেন অথবা কোন shell script লিখে সেটা দিয়েও কমান্ডগুলো রান করতে পারেন।

Connection between Android Studio and an Android real device over Wi-Fi

USB Cable এর মাধ্যমে অ্যান্ড্রয়েড স্টুডিওর সাথে রিয়েল ডিভাইস কানেক্ট করে আমরা সবাই কাজ করতে পারি। এখন দেখব adb tool ব্যবহার করে কিভাবে একই Wi-Fi network এ থাকা পিসি ও রিয়েল ডিভাইসকে কিভাবে কানেক্ট করাতে পারি। উল্লেখ্য, এই পদ্ধতির জন্য আপনার ফোন root করা থাকা লাগবে না।

Step 1:
আপনার পিসি ও ফোনকে একই Wi-Fi নেটওয়ার্কে কানেক্ট করান।

Step 2:
আপনার ফোনকে USB Cable এর মাধ্যমে পিসির সাথে কানেক্ট করান। ভয় নেই! এই একবারই আপনাকে USB cable ব্যবহার করতে হবে।

Step 3:
টার্মিনাল থেকে এই কমান্ড দিন। চাইলে Android Studio এর terminal ব্যবহার করতে পারেন।

.
adb tcpip 5555
.

যদি adb প্যাকেজ ইন্সটল করা না থাকে তাহলে নিচের কমান্ড দিয়ে ইন্সটল করে নিন।

.
sudo apt-get install android-adb-tools
.

[Operating System হিসাবে আমি লিনাক্স মিন্ট ব্যবহার করছি। আপনি অন্য কোনো OS ব্যবহার করলে একটু গুগল করে নিন]

adb tcpip 5555 কমান্ডের মাধ্যমে আপনার TCP/IP এর কানেকশনের জন্য আপনার ডিভাইসকে সেট করা হলো।

এরপর UBS Cable টি খুলে ফেলুন।

Step 4:
adb এর সাথে আপনার ডিভাইসকে কানেক্ট করুন ডিভাইসের IP address এর মাধ্যমে। ডিভাইসের অাইপি অ্যাড্রেস পাওয়া যাবে এখান থেকেঃ Settings > About phone > Status > IP address.

এরপর নিচের কমান্ড দিনঃ

.
adb connect device_ip_address
.

যদি ঠিকঠাক মত কানেক্ট হয় তাহলে কমান্ডের পরের লাইনে এই মেসেজ দেখা যাবেঃ connected to device_ip_address:5555.

Step 5:
Confirm হবার জন্য এই কমান্ড দিনঃ

.
adb devices
.

আউটপুট পাবেন এমন কিছুঃ

.
List of devices attached
device_ip_address:5555 device
.

ব্যস!!! আপনার ডিভাইস adb server এর সাথে Wi-Fi এর মাধ্যমে কানেক্ট হয়ে গেছে ! Android Studio এর নিচের Android Monitor ট্যাবে ক্লিক করলে আপনার ফোনের নাম show করবে।

আপনার পিসি অফ করলে বা adb server restart দিলেও সমস্যা নাই। আপনাকে শুধু প্রতিবার কাজ শুরু করার আগে adb connect device_ip_address কমান্ডটা দিয়ে নিতে হবে। প্রতিবার USB cable দিয়ে কানেক্ট করাতে হবে না। প্রতিবার যেন ডিভাইসের সেটিংসে গিয়ে আইপি দেখে কমান্ড দেয়া না লাগে সেক্ষেত্রে আপনি চাইলে আপনার রাউটারের সেটিংস থেকে ফোনের আইপিটা MAC এর সাথে bind করে ফিক্সড করে দিতে পারেন। যদি আপনার অাইপি ফিক্সড করে দেন 192.168.0.102 তাহলে আপনার ফোন প্রতিবার যখন রাউটারের সাথে কানেক্ট হবে তখন এই আইপি অ্যাড্রেস দিয়েই কানেক্ট হবে। আপনি প্রতিবার কাজ শুরুর আগে জাস্ট একটা “মুখস্ত” কমান্ড দিবেন adb connect 192.168.0.102. এতে আপনার ঝামেলা আরেকটু কমলো!

যদি আপনার ফোন রিস্টার্ট দেন সেক্ষেত্রে USB Cable দিয়ে কানেক্ট করে tcpip port সেট করে এরপর IP address দিয়ে কানেক্ট করতে হবে।

Troubleshooting

যদি unable to connect to device_ip_address:5555 এমন কোনো error আসে তাহলে নিচের কাজগুলো করলে ইন_শা_আল্লাহ সমস্যার সমাধান হবেঃ

1. ডিভাইসের ডেভেলপার অপশনের Networking Section এ গিয়ে দেখেন “Aggressive Wi-Fi to Cellular handover”  অফ করা আছে কিনা। যদি অফ না থাকে তাহলে অফ/আনচেক করুন।

2. ডিভাইস যেন Network idle mode এ চলে না যায় তাই continuously পিসি থেকে মোবাইল ডিভাইসে PING করুন। কমান্ডটা হবে এরকমঃ

.
ping my_ip_address (for Linux),
ping -t my_ip_address (Windows)
.

3. এরপর নিচের কমান্ডগুলো দিনঃ

adb usb
adb tcpip 5555
adb connect my_ip_address

আশা করি সমস্যার সমাধান হবে। না হলে গুগল তো আছেই!!! 🙂

5 thoughts on “ADB কী? একই Wi-Fi নেটওয়ার্কে থাকা Android Studio ও Real device কানেকশন

  1. আমি তো পুরা বেকুব হইয়া গেলাম, অস্থির ছিল, বেস্ট হেল্পফুল পোস্ট এভার. Thanks Dear!

  2. ভাইয়া
    adb devices
    List of devices attached
    192.168.1.2:5555 offline
    লেখা এসে অফ লাইন হয়ে যায় প্রায়ই।USB আবার কানেক্ট না করে কিভাবে সলভ করা যায় সলুশনটা ঘেটে বের করেছি।চাইলে এড করে দিতে পারেন।

    Settings -> Developer options -> Revoke USB debugging authorizations (clear the list of authorized PCs).

    Set USB Debugging OFF.

    In Terminal write : adb kill-server

    Then : adb start-server

    Then : adb connect xx.xx.xx.xx:5555 (the devices ip), it should say unable to connect.

    Now turn ON USB debugging again and type the adb connect xx.xx.xx.xx:5555 again.

Leave a Reply

Your email address will not be published. Required fields are marked *