কম্পিউটার টিউটোরিয়াল

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

এই আর্টিকেলে, আমরা এক্সপ্লোর করব কিভাবে আপনি ADB ব্যবহার করে এক বা একাধিক ডিভাইস এবং এমুলেটর ইনস্টল, টেস্ট, ডায়গনোস, এবং ম্যানেজ করার সময় ফাইন-গ্রেইনড কন্ট্রোল পেতে পারেন।

আমার সফটওয়্যার ডেভেলপার হিসেবে প্রথম কয়েক বছর, প্রাথমিকভাবে Android SDK-র সাথে কাজ করলেও, আমি কোনো ধারণা ছিল না Android Debug Bridge (ADB/adb) কী, এটি কী করে, বা কখন ব্যবহার করতে হয়।

মজার ব্যাপার হলো, এটি কোনো প্রফেশনাল গোল ছিল না যা আমাকে সেটা শিখতে প্রেরণা দিল। বরং এটি ছিল আমার বুট লুপিং Nexus 6 যা আমি বেতাবি ilə পুনর্জীবিত করতে চাইতাম। এমন সমস্যার জন্য, Android Studio এবং Gradle ওয়াটারপ্রুফ টি ব্যাগের মতো উপকারী।

আমি এছাড়া উল্লেখ করতে চাই যে এই আর্টিকেলটি দুই ধরনের মানুষকে মাথায় রেখে লেখা হয়েছে:

  • যারা CLI, Shell, Processes, এবং Client-Server Model-এর সাথে পরিচিত
  • যারা CLI, Shell, Processes, এবং Client-Server Model-এর সাথে পরিচিত নন

প্রথম ক্যাটেগরির লোকজন, আপনি "How to Work With The ADB" সেকশনটি স্কিপ করতে পারেন।

দ্বিতীয় ক্যাটেগরির লোকজন, আমি অনুমান করছি আপনি আমার মত জুনিয়র ডেভেলপার ছিলেন এবং CLI, Shell, এবং ADB সম্পর্কে খুব কম জানেন। প্রথম সেকশনটি কিছু বেসিক টার্ম এবং আইডিয়ার একটি সফ্ট ইন্ট্রোডাকশন এবং গ্লসারি, যা আমি যতটা সম্ভব সিম্পলভাবে ব্যাখ্যা করেছি।

প্রিলিমিনারি

এখানে, আমরা কিছু টপিক শিখব যা ADB কীভাবে কাজ করে এবং ব্যবহার করা হয় সেটা বুঝতে গুরুত্বপূর্ণ।

আপনাদের মধ্যে কিছু লোক CLI টুলস শিখতে ভয় পেয়ে যেতে পারেন স্নিয়ারিং Vim এন্থুসিয়াস্ট বা জাজমেন্টাল Unix সিস্টেম অ্যাডমিনিস্ট্রেটররা দেখে। আপনি দেখবেন, আমি বিনামূল্যে স্বীকার করি যে CLI আমার ব্রেনের জন্য আইডিয়াল নয়, তাই আমি মনে করি আপনি আমার টেকটিকটি উপভোগ করতে পারেন।

কমান্ড লাইন

সহজ ভাষায়, একটি কমান্ড লাইন হলো একটি কম্পিউটারের সাথে ইন্টারফেস (তথ্য পাঠানো/প্রাপ্তির পদ্ধতি) যা শুধু টেক্সট লাইন ব্যবহার করে।

বুঝতে গুরুত্বপূর্ণ যে একটি কমান্ড লাইন ইন্টারফেস (CLI) নিজে একটি প্রোগ্রাম নয়, বরং কিছু প্রোগ্রাম CLI প্রদান করে (হয়তো GUI ও অন্যান্য ইন্টারফেসও)।

আপনি কখনও কখনও Windows Command Prompt (অথবা MS-DOS যদি আপনি ৯০-এর দশকের কিড হোন), Mac Terminal, বা GNOME Terminal-এর মত কিছুতে কিছু টাইপ করেছেন হতে পারে যা অনেক লিনাক্স ডিস্ট্রিবিউশনে কমন। এই সবই মূলত CLI দিয়ে ব্যবহার করা হয়।

CLI ব্যবহার করার বেনিফিট এবং ডিফিসিট বড়তটা ব্যবহারকারী ও তারা কী ধরণের সমস্যা সমাধান করতে চায় সেটার ওপর ডিপেন্ড করে। আমি পারসন্যালি CLI ব্যবহার করতে পছন্দ করি না যদি না সেটি এমন কিছু যা আমি প্রায় প্রতিদিন করি।

আমার ব্রেন সিম্পলি Obscure শর্টহ্যান্ড টেক্সট কমান্ড মেমোরাইজ করার জন্য উপযুক্ত নয় (একই কারণে বাচপনে পড়া শিখতে আমার সমস্যা ছিল), তাই আমাকে রিপিটিশন-ভিত্তিক ইম্প্লিসিট মেমরি (মাসেল মেমরি) এবং চিট শিটের ওপর নির্ভর করতে হয়।

যারা সময় দিতে ইচ্ছুক এমন কাজের জন্য যা একটি ঝামেলা (আমার মত), বা যারা সত্যিই সেকলেই স্মরণ রাখতে পারেন, আপনি সম্ভবত শিখবেন কিভাবে একটি CLI-এ GUI-এর চেয়ে অনেক বেশি দক্ষ হ हुआ যেতে পারেন।

অনেক অপারেশন বিভিন্ন মেনু এবং স্ক্রিনের মাধ্যমে পয়েন্ট এন্ড ক্লিক করার চেয়ে একটি ভগ্নাংশ সময়ে করা যায়। স্ক্রিপ্ট লিখাও সম্ভব, যেটি টেক্সট কমান্ডের একটি সিরিজ ধারণকারী ফাইল, যা আপনার দক্ষতাকে আরও বাড়াতে পারে।

ADB Shell ব্যবহার করার পদ্ধতি

আমি অনুমান করছি আপনি Operating System (OS) টার্মটি জানেন, যেটি شامل Android, iOS, Windows, Mac, Linux, এবং অন্য যেকোনো Unix-লাইক সিস্টেম।

এই টার্ম ADB-এর সাথে কেন রিলেভেন্ট? একটি এক্সপ্লানেশন দিয়ে যা ক্লেরিটিকে প্রিসিশনের চেয়ে প্রাধান্য দেয়, Android OS লিনাক্সের ওপর ভিত্তি করে তৈরি, এবং লিনাক্স Unix-র ওপর ভিত্তি করে তৈরি।

এই ফলাফলস্বরূপ, আমরা ADB ব্যবহার করে ডিভাইস বা এমুলেটরের Unix Shell-এ হুক পেতে পারি যেটির সাথে আমরা কাজ করছি। এটি আমাদের ডিভাইস বা এমুলেটরের সাথে সরাসরি এর শেল দিয়ে ইন্টারঅ্যাক্ট করার মাধ্যমে অনেক ফ্লেক্সিবিলিটি, ক্যাপাবিলিটি, এবং কন্ট্রোল দেয়।

এক শেল হলো সেই প্রোগ্রামের জেনারেল টার্ম যা আপনি একটি OS-র সাথে ইন্টারঅ্যাক্ট করতে ব্যবহার করেন। ঠিক যেমন একটি কচ্ছপের শেল কচ্ছপকে সুরক্ষা ও অ্যাক্সেস দেয় (এবং এটি আউটারমোস্ট লেয়ার), একটি OS-এর শেল OS-এর অভ্যন্তরীণ কাজকর্মকে সুরক্ষা ও অ্যাক্সেস প্রদান করে। পারসন্যালি, আমি বেশ বিস্মিত হয়েছিলাম শিখে যে "Shell" কোনো ইসোটেরিক এক্রোনিম নয়।

এই টার্মকে ওভারথিংক করতে হবে না। আপনি যদি কম্পিউটারের 일종ে এটি পড়ছেন, তবে আপনি একটি শেল ব্যবহার করে এখানে পৌঁছেছেন।

একটি শেল CLI বা GUI বা দুটোই প্রদান করতে পারে। যেকোনো কেসে আপনি এটিকে ব্যবহার করবেন ফাইল তৈরি/আপডেট/ডিলিট/মুভ, অন্যান্য প্রোগ্রাম শুরু, এবং OS-এর বিভিন্ন সার্ভিস অ্যাক্সেস করার জন্য যা শেলের মাধ্যমে উপলব্ধ করা হয়।

ADB Client এবং ADB Server ব্যবহার করা

আবার, একটু অপ্রিসাইজ এক্সপ্লানেশন দিয়ে শুরু করি যা হয়তো সহজে বোঝা যাবে। আমি শীঘ্রই এই ডেফিনিশন ঠিক করব।

Client এবং Server উভয়ই কম্পিউটার। আমরা সেগুলোকে এইভাবে ডিফারেনশিয়েট করি তাদের রোলের ওপর ভিত্তি করে। উদাহরণস্বরূপ, আপনার কম্পিউটার (চায়ে ডেস্কটপ, ল্যাপটপ, ফোন, বা যেকোনো কিছু) হলো একটি freeCodeCamp Server-এর Client, যা আপনাকে এই HTML পেজ সার্ভ করে।

সাধারণত, একটি client হলো যে কিছু অন্য কিছুর ব্যবহার করে, যেখানে একটি server হলো যে ব্যবহার করা হচ্ছে। এই টার্মকে ওভারথিংক করবেন না, কারণ Client-Server Model কম্পিউটিং-এর ভিতরে এবং বাইরে অনেক কিছু বর্ণনা করতে পারে।

এখন, আমি ক্লায়েন্ট এবং সার্ভার উভয়কেই "কম্পিউটার" বললাম, সেটি আসলেই সত্যি নয় সেই কন্টেক্সটে যেটি আমরা পরে এই টার্মগুলো ব্যবহার করব।

প্রোগ্রামার এবং ইঞ্জিনিয়ার হিসেবে, আমরা সাধারণত Client এবং Server কে প্রসেস হিসেবে চিন্তা করি (একটি প্রসেস হলো সহজ ভাষায় একটি চলমান প্রোগ্রাম)।

এর মানে হলো যদিও একটি Client প্রসেস এবং একটি Server প্রসেস প্রায়শই আলাদা কম্পিউটারে চলে, তবে একই কম্পিউটারে চলে সেটাও ঠিক আছে।

সেগুলো সেই কম্পিউটারের মেমরি স্পেসে স্বতন্ত্র লোকেশন অক্যুপাই করবে, তাই ইফেক্টিভলি একমাত্র পার্থক্য হলো সেগুলো IPC (ইন্টার-প্রসেস কমিউনিকেশন) ব্যবহার করে কমিউনিকেট করবে নেটওয়ার্ক কানেকশনের মাধ্যমে একে অপরের কাছে মেসেজ পাঠানোর বদলে।

যেমন আমরা শীঘ্রই দেখব, ADB একটি Server প্রসেস ব্যবহার করে যা একাধিক ডেভেলপার (একাধিক ক্লায়েন্ট) কে একাধিক অ্যান্ড্রয়েড ডিভাইস এবং/অথবা এমুলেটর ম্যানেজ করতে দেয়।

এন্টারপ্রাইজ সেটিং-এ, এই Server প্রসেস সম্ভবত একটি রিমোট (নেটওয়ার্ক কানেকশনের মাধ্যমে কমিউনিকেট করা) কম্পিউটারে থাকবে, কিন্তু আমরা একটি Server সেট আপ করব যা আমাদের Client-এ লোকাল। সেটা করা আপনার মনে হচ্ছে এর চেয়ে অনেক সিম্পল।

ADB Daemon কী?

যদি আপনি আগে স্কিপ করেছেন, তবে আমি ইতিমধ্যে ব্যাখ্যা করেছি যে একটি প্রসেস হলো সহজ ভাষায় একটি চলমান প্রোগ্রাম। Daemon হলো একটি প্রসেস যা ব্যাকগ্রাউন্ডে চলে, অর্থাৎ ইউজার সরাসরি এর সাথে ইন্টারঅ্যাক্ট করে না।

উদাহরণস্বরূপ, আপনি যদি একটি ওয়েব ব্রাউজার খুলেন, তবে নেটওয়ার্ক কানেকশন ম্যানেজ করার বাস্তব কাজ যা ইন্টারনেটে কানেক্ট করার জন্য দরকার সেটি সম্ভবত NetworkManager Daemon-এর মত কিছু দিয়ে করা হয় (ব্রাউজার প্রসেস নিজে না করে)।

প্রতিটি অ্যান্ড্রয়েড ডিভাইস (ফিজিক্যাল বা এমুলেটেড), ধরে নিচ্ছি সেটি সঠিকভাবে কনফিগার করা আছে, একটি ADB Daemon (adbd) থাকবে যা Server প্রসেস থেকে দেওয়া কমান্ড এক্সিকিউট করে।

সংক্ষেপে, যখন আমাদের Client Server-এ একটি কমান্ড ইস্যু করে, Server সেটিকে ADBD-এ ফরওয়ার্ড করবে, যা ডিভাইসে এক্সিকিউট করবে।

অ্যান্ড্রয়েড ডেভেলপমেন্টের জন্য ADB ব্যবহার করা

এই আর্টিকেলের বাকি অংশে, আমরা নিচের টপিকগুলো এক্সপ্লোর করব:

  • আপনার সিস্টেমে ADB ব্যবহার করার জন্য ড্রাইভার এবং কনফিগারেশন
  • ফিজিক্যাল ডিভাইস এবং এমুলেটরের সাথে ADB ব্যবহার করা
  • ADB-এর CLI ব্যবহার করে বেসিক কমান্ড
  • একটি অ্যান্ড্রয়েড ডিভাইসের শেল ADB-এর মাধ্যমে ব্যবহার করে আরও জটিল ব্যবহার সম্পর্কে একটি নজর

এগিয়ে যাওয়ার আগে, আপনি কনফার্ম করুন আপনি কোন CLI টুল ব্যবহার করবেন ADB-র সাথে ইন্টারঅ্যাক্ট করার জন্য। Windows-এ, আমি PowerShell পছন্দ করি, কিন্তু Command Promptও কাজ করবে। Linux এবং Mac-এ, ডিফল্ট Terminal কাজ করবে।

যে কনফটার্বল সেটি ব্যবহার করতে ভুলবেন না।

এই আর্টিকেলে পুরো প্রক্রিয়ার খুব বিস্তারিত ব্যাখ্যা আছে, কিন্তু আমি একটি ভিডিও টিউটোরিয়ালও তৈরি করেছি যা সংক্ষিপ্তে এটাকে কভার করে:

ADB-এর জন্য ভিডিও টিউটোরিয়াল।

CLI উদাহরণ বুঝার পদ্ধতি

এই আর্টিকেলে আপনার পছন্দের CLI টুলে ইনপুট দেয়ার জন্য অনেক কমান্ড আছে। যেকোনো কমান্ডের যে অংশ সিচুয়েশনালি পরিবর্তন হয় সেটি অ্যাঙ্গেল ব্র্যাকেটের ভিতরে লেখা হবে।

আপনি যে CLI কমান্ড লিখবেন সেটিতে অ্যাঙ্গেল ব্র্যাকেট অন্তর্ভুক্ত করবেন না।

উদাহরণস্বরূপ, যদি আমি লিখি...:

adb pair <ip-address>:<port>

...তাহলে আপনি অ্যাঙ্গেল ব্র্যাকেট এবং নামটিকে একচুয়া ভ্যালু দিয়ে রিপ্লেস করবেন, যেন:

adb pair 192.168.0.1:5554

ADB Drivers & Configuration

প্রথমে, নিশ্চিত করুন আপনার কাছে Android SDK Platform-Tools-এর লেটেস্ট (অথবা কমপক্ষে একটি রিসেন্ট) ভার্সন আছে। যদি কোনো কারণে আপনি Android Studio (AS) ব্যবহার না করেন, তবে সেই লিংকে ক্লিক করে আপনার রেসপেক্টিভ OS-এর জন্য স্ট্যান্ডঅ্যালোন প্যাকেজ ডাউনলোড করুন।

আপনার কাছে Android Studio থাকলে, SDK Manager ব্যবহার করে এই প্যাকেজ ডাউনলোড বা আপডেট করতে পারেন।

AS-এ সাধারণত SDK Manager খোলার জন্য একটি টুলবার আইকন থাকে, কিন্তু তারা প্রায় প্রতিটি হটফিক্সে এর লুক পরিবর্তন করে।

আপনি যদি সেটি খুঁজে না পান, তবে File -> Settings-এ যান এবং সার্চ বারে "SDK" টাইপ করুন, এবং "Android SDK" মেনু আইটেমটি সার্চ করুন।

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি
সিস্টেম সেটিংসে দেখাচ্ছে Android SDK Platform Tools ইনস্টলড

পরবর্তী ধাপটি কিছু ভেরিয়েবলের ওপর ডিপেন্ড করে পরিবর্তন হয়। Preliminaries সেকশনে আলোচনা করা মত, ADB একটি Client-Server Model ব্যবহার করে যা আপনাকে টুলটি কীভাবে ব্যবহার করবেন সেটাতে অনেক ফ্লেক্সিবিলিটি দেয়।

স্পেসিফিক হতে, আপনার কাছে থাকতে পারে:

  • একাধিক Client একটি রিমোট Server-এর সাথে ইন্টারঅ্যাক্ট করছে
  • একটি Server যা এক Client-এ লোকাল (সেম কম্পিউটার)
  • একই সার্ভারের সাথে হুক করা çeşitপ্রকার ফিজিক্যাল ডিভাইস এবং এমুলেটর

একাধিক Client এবং অত্যধিক সংখ্যক ডিভাইস সহ এডভান্সড কনফিগারেশন ADB-এ সম্ভব, কিন্তু এই আর্টিকেলের স্কোপের বাইরে।

এক Server ১৬টি এমুলেটর এবং যতটুকু ফিজিক্যাল ডিভাইস চান (যৌক্তিক পরিধির মধ্যে) এডভান্সড কনফিগারেশন ছাড়া ম্যানেজ করতে পারে।

এই আর্টিকেলের বাকি অংশে, আমরা সবচেয়ে বেশি এক ফিজিক্যাল ডিভাইস এবং এক এমুলেটর নিয়ে কাজ করব একটি সিঙ্গল ADB সার্ভার প্রসেসের জন্য।

ADB Emulator কনফিগার করার পদ্ধতি

সর্বাধিক সম্ভব আপনাকে আরও কোনো কনফিগারেশন করতে হবে না, কিন্তু সম্ভব আপনাকে আপনার এমুলেটরে Developer Options ইনেবল করতে হয়। আপনি খুব শীঘ্রই বুঝতে পারবেন এটি সঠিকভাবে কাজ করছে কিনা যখন আমরা আমাদের প্রথম কয়েক ADB কমান্ডে যাব।

আপনি যদি আপনার এমুলেটরে এই ফিচার ইনেবল করতে চান, তবে আপনার নির্দিষ্ট অ্যান্ড্রয়েড ভার্সনের জন্য কিভাবে করবেন সেটা রিসার্চ করতে হবে।

USB Debugging – ফিজিক্যাল ডিভাইস কনফিগার করা

আপনি যদি ফিজিক্যাল অ্যান্ড্রয়েড ডিভাইস ব্যবহার করার পরিকল্পনা না করেন, তবে এই সেকশনটি স্কিপ করতে পারেন। য totsometimes, আপনাকে Developer Options ইনেবল করতে হতে পারে।

এগিয়ে যেতে, আপনাকে আপনার অ্যান্ড্রয়েড ডিভাইস এবং ডেভেলপমেন্ট মেশিনে USB Debugging বা WiFi Debugging কনফিগার করতে হবে।

যেকোনো কেসে, আপনার ডিভাইসে Developer Options ইনেবল করে শুরু করুন। আপনার নির্দিষ্ট অ্যান্ড্রয়েড ওএস ভার্সনের জন্য কিভাবে করবেন সেটা রিসার্চ করতে হবে।

USB Debugging

নিশ্চিত করুন আপনার অ্যান্ড্রয়েড ডিভাইসে Developer Options-এর মাধ্যমে USB Debugging ইনেবল করা আছে। উপরে শেয়ার করা লিংকটি সেই প্রক্রিয়া বর্ণনা করবে, যা অ্যান্ড্রয়েড ওএস-এর বিভিন্ন ভার্সনে কিছুটা পরিবর্তন হয়।

এগিয়ে যাওয়ার আগে, Windows ব্যবহারকারীদের একটি USB Driver ডাউনলোড করতে হবে। Ubuntu ব্যবহারকারীদেরও কিছু একস্ট্রা ধাপ লাগে। Mac এবং Chrome OS-এ, আপনাকে ভালো থাকা উচিত।

Developer Options-এর মাধ্যমে USB Debugging ইনেবল হলে, আপনার অ্যান্ড্রয়েড ডিভাইস USB কেবল দিয়ে কানেক্ট করুন।

WiFi Debugging

আপনার কাছে যদি একাধিক ফিজিক্যাল ডিভাইস থাকে বা USB কেবল কম থাকে, তবে আপনি WiFi Debugging বেছে নিতে পারেন।

আবার, আপনার অ্যান্ড্রয়েড ডিভাইসে Developer Options-এ যান এবং Wireless debugging ইনেবল করুন। এটি আপনাকে প্রম্পট করবে নেটওয়ার্কে ডিবাগিং অনুমতি দেয়ায় যা ডিভাইসটি করেন্টলি কানেক্টেড, যা আপনাকে অনুমতি দিতে হবে (যদি সেটি উপযুক্ত নেটওয়ার্ক হয়)।

আপনার CLI-তে কাজ শুরু করার সময়। প্রথমে, আপনাকে platform-tools ডিরেক্টরি (বা ফোল্ডার – একই জিনিস) লোকেট করতে হবে আপনার Android SDK ইনস্টলেশন ডিরেক্টরির ভিতরে।

ধরে নিচ্ছি আপনার কাছে Android Studio ইনস্টল করা আছে, অ্যাপের মাধ্যমে সেটি খুঁজে বের করার একটি কুইক উপায় হলো আবার File -> Settings-এ যান, তারপর সার্চ বারে "SDK" টাইপ করুন। "Android SDK" মেনু আপনাকে দেখাবে আপনার SDK কোথায় ইনস্টল করা আছে, যা সেটি platform-tools ধারণকারী ডিরেক্টরি হওয়া উচিত।

নিচের উদাহরণে, আমি আমার Android SDK ডিরেক্টরির পাথ কপি করলাম, এবং তারপর একটি Windows PowerShell ইনস্ট্যান্স খোলাম। তারপর আমি নিচের কমান্ডগুলো টাইপ করলাম:

Change Directory:

cd <path-to-SDK-directory>

List Files and Directories:

ls
व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

এরপর, আমি cd platform-tools টাইপ করলাম সেটি নেভিগেট করার জন্য। নোট করুন যে নিচের ধাপগুলো অনুমান করে আপনি একটি ডিভাইস ব্যবহার করছেন যেটি Android OS 11 বা তার উপরে রান করছে।

আপনি যদি Android 10 বা তার নিচের ভার্সন রান করা ডিভাইসের সাথে কাজ করেন, তবে সেটার জন্য বিস্তারিত নির্দেশনা এখানে পাবেন।

একবার আপনি platform-tools ডিরেক্টরির ভিতরে হলে, আপনি একটি অ্যান্ড্রয়েড ডিভাইসকে একটি ডেভেলপমেন্ট মেশিনের সাথে পেয়ার করার জন্য রেডি। নিচের ধাপগুলো ফলো করুন:

1. Settings -> System -> Developer options-এ Wireless debugging সাবমেনুতে, Pair device with pairing code সিলেক্ট করুন।

2. আপনার CLI টুলে যেটি platform-tools ডিরেক্টরিতে সেট করা থাকা উচিত, নিচের কমান্ডটি ইন্টার করুন:

adb pair <IP address>:<Port>

যেখানে IP address এবং Port দুটোই আপনার অ্যান্ড্রয়েড ডিভাইসের ডায়লগ থেকে আসবে যা Pair device with pairing code সিলেক্ট করার পর পপ আপ হয়েছে (অ্যাঙ্গেল ব্র্যাকেট অন্তর্ভুক্ত করবেন না)।

নোট: আপনাকে adb কল করার আগে কিছু সিম্বল বা কমান্ড প্রিপেন্ড করতে হতে পারে আপনার CLI টুল, OS, এবং অ্যাক্সেস কন্ট্রোলের ওপর নির্ভর করে। উদাহরণস্বরূপ, আমাকে .\adb pair <IP address>:<Port> টাইপ করতে হয়েছিল Windows-এ PowerShell ব্যবহার করে।

3. ধরে নিচ্ছি আপনার CLI-তে সব ঠিকঠাক গেলে, আপনাকে পেয়ারিং কোড ইন্টার করার জন্য প্রম্পট করা হবে যা আপনার অ্যান্ড্রয়েড ডিভাইসের সেম ডায়লগে ভিজিবল ছিল যেটি আপনাকে IP address এবং Port number দিয়েছিল।

4. পেয়ারিং কোড ইন্টার করার পর, আপনি জানবেন এই অপারেশন সফল হয়েছে যদি আপনি একটি মেসেজ পান যেন:

Successfully paired to <IP Address>:<Port> [guid=<Some GUID>]

5. আপনি যদি Windows বা Linux ব্যবহার করেন, তবে আপনাকে নিচের কমান্ডও চালাতে হবে Wireless debugging প্রেফারেন্স মেনুতে ভিজিবল IP Address & Port ব্যবহার করে (নয় সেই ডায়লগ যা Pair device with pairing code সিলেক্ট করার পর পপ আপ হয়েছে):

adb connect <IP Address>:<Port>

যা করার পর আপনাকে ফোনে একটি নোটিফিকেশন মেলবে যা ইন্ডিকেট করবে আপনি কানেক্টেড।

ADB ব্যবহার করা: কমান্ডস

আপনি যদি সফলভাবে আপনার অ্যান্ড্রয়েড ডিভাইস এবং ডেভেলপমেন্ট মেশিন কনফিগার করতে পারেন, তবে আপনি এখন ADB টুল ব্যবহার করতে পারেন।

এগিয়ে যাওয়ার আগে, CLI টুল ব্যবহার করে adb ধারণকারী ডিরেক্টরিতে নেভিগেট করুন (যদি আপনি ঠিক আগের সেকশনের ধাপগুলো WiFi debugging সেট আপ করার জন্য ফলো না করে থাকেন)।

অন্যথায় এখন করুন, অথবা সেই সেকশনটি চেক আউট করুন সেটি কিভাবে লোকেট করবেন সেটার ইনস্ট্রাকশনের জন্য।

কौন ডিভাইসগুলো বর্তমানে সার্ভারের সাথে কানেক্টেড সেটা দেখার পদ্ধতি

আপনি এখন adb kill-server বাদে ADB-এর যেকোনো কমান্ড কল করে একটি adb সার্ভার স্টার্ট করতে পারেন। আপনার সার্ভার প্রসেস চলছে কিনা সেটা নির্বিশেষে, নিচের কমান্ডটি টাইপ করুন:

adb devices

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

উপরোক্ত স্ক্রিনশটে, আমি প্রথমে adb devices কল করলাম যখন আমার অ্যান্ড্রয়েড ফোন সার্ভারের সাথে কানেক্টেড ছিল। adb kill-server কমান্ড দিয়ে সার্ভার কিল করার পর, আমি আবার devices কল করলাম যেটি সার্ভার রিস্টার্ট করল।

আবার, যদি একটি ADB সার্ভার করেন্টলি রান না করে, প্রায় যেকোনো ADB কমান্ড কল করলে সার্ভারটি আবার স্টার্ট হয়ে যাবে (adb kill-server বাদে)। একটি এক্সপ্লিসিট adb start-server কমান্ড আছে, কিন্তু প্র্যাকটিসে আমি কখনো এটিকে ব্যবহার করার প্রয়োজন পড়লাম না।

যেহেতু সার্ভার রিসেট হয়েছিল, devices কোনো আইটেম রিটার্ন করলো না। তাই পরবর্তী উদাহরণে যাওয়ার আগে আমাকে একবার আবার adb pair এবং adb connect (Windows বা Linux-এ থাকলে) কমান্ডগুলো ব্যবহার করতে হয়েছিল পূর্বের সেকশনে বর্ণনা করা মত।

আমি এখন PowerShell এবং emulator প্রোগ্রাম ব্যবহার করে একটি এমুলেটর ফায়ার আপ করলাম যা platform-tools-এর একটি সাবডিরেক্টরিতে "emulator" নামে আছে।

আপনি অবশ্যই AVD Manager বা Android Studio ব্যবহার করে একটি এমুলেটর স্টার্ট করতে পারেন উদাহরণ ফলো করতে চাইলে।

আপনার কাছে যদি অনেক কানেক্টেড ডিভাইস থাকে, adb devices কমান্ডের জন্য একটি ইউজফুল অপশন হলো -l, যা ডিভাইসগুলোর সম্পর্কে আরও ইনফরমেশন দেয়।

নিচে আপনি অনেক এন্ট্রি দেখবেন যেগুলো আমার ফিজিক্যাল অ্যান্ড্রয়েড ডিভাইসকে রেফার করে, সেইসাথে একটি এমুলেটর যা একটি নির্দিষ্ট পোর্টে আট্যাচড:

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

নির্দিষ্ট ডিভাইসে কমান্ড পাঠানোর পদ্ধতি

আমার ফোন ব্রিক হয়ে যাওয়া থেকে বাচাতে, আমি কমান্ডগুলো এমুলেটরে পাঠাতে চাই। সেটা করতে, আমাকে -s অপশন প্রিপেন্ড করতে হবে, এরপর টার্গেট ডিভাইসের সিরিয়াল নাম্বার, তারপর কমান্ডটি টাইপ করতে হবে।

সিরিয়াল নাম্বার হলো devices কমান্ড ব্যবহার করার পর একটি কানেক্টেড ডিভাইসকে বর্ণনা করার প্রথম ক্যারেক্টার সেট।

উদাহরণস্বরূপ, এই কেসে এমুলেটরটির সিরিয়াল নাম্বার হলো শুধু emulator শব্দটি এবং তারপর পোর্ট নম্বর যেটি এমুলেটরটি করেন্টলি আট্যাচড।

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

অন্য লাল আর্গোয়েটি আমার ফোনের সিরিয়াল নাম্বারকে পয়েন্ট করে (অবvias কারণগুলো ব্লক করা হয়েছে)।

স্বাভাবিকভাবেই, আপনার কাছে যদি শুধু এক ডিভাইস কানেক্টেড থাকে (যেকোনো ধরন হোক), তবে আপনাকে -s অপশন ব্যবহার করার দরকার নেই।

এক ডিভাইসে APK (App) ইনস্টল করা

আমি এখন রানিং এমুলেটরে একটি টেস্ট APK ইনস্টল করব adb install কমান্ড ব্যবহার করে।

এটি মূলত Android Studio এবং Gradle একটি ডিবাগ APK ইনস্টল করার সমান। আপনি দেখবেন, টেস্ট APK-এর জন্য -t অপশন দরকার install কমান্ডের পর:

adb -s <device-serial-number> install -t <path-to-APK>

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

নোট: Android OS অপেক্ষা করে যে যেকোনো APK অবশ্যই সাইনড হয়ে থাকা উচিত ইনস্টল হওয়ার আগে (যদি সেটি শুধু একটি টেস্ট/ডিবাগ APK হোক)।

এক সমাধান হলো অ্যাপটি Android Studio-এ বিল্ড ও রান করা, যা একটি জেনারেটেড ডিবাগ সার্টিফিকেট দিয়ে সেটি সাইন করবে। APK সাইন করার আরও অনেক পদ্ধতি আছে যা আপনি এই লিংকে ভিজিট করে এক্সপ্লোর করতে পারেন।

ADB আর কী কী করতে পারে?

আরো কিছু এডভান্সড ADB ব্যবহার দেখার আগে, আমি আপনাকে adb --help কমান্ড ট্রাই করার দৃঢ় পরামর্শ দিচ্ছি। অধিকাংশ CLI-ভিত্তিক প্রোগ্রামের মত, help কমান্ডটি টুলটির বিভিন্ন কমান্ড এবং অপশন বর্ণনা করে এমন ডকুমেন্টেশন প্রিন্ট করে।

আমি খুশি যে ADB-এর ডকুমেন্টেশন খুব লেজিবল এবং উপকারী, যা CLI প্রোগ্রামে সবসময় হয় না।

এডভান্সড ADB ব্যবহার টিপস

ADB-এর প্রতিটি ব্যবহার এবং কমান্ড এই আর্টিকেলে কভার করা আমাদের উভয়ের জন্য টাইম 웨이স্ট হবে।

যদি কোনো বিভ্রান্তি থাকে, তবে ADB ব্যবহার করে APK ইনস্টল করা এবং অনেক কিছু করা যা Android Studio এবং Gradle আপনার জন্য করে, সেটি আমি রিকমেন্ড করব না (যদি না আপনার সেটার জন্য একটি ভালো রিজন থাকে)।

そう言うと, ADB অনেক কিছু করতে পারে যেগুলো এডবি ছাড়া করা কঠিন বা অসম্ভব।

Preliminaries সেকশনে, আমি উল্লেখ করেছিলাম যে ADB ব্যবহার করে ডিভাইসের শেলে হুক পাওয়া যায়। এই আর্টিকেলটি শেষ করার জন্য, আমরা দেখব কিভাবে শেল কমান্ড ব্যবহার করবেন এবং তাদের সম্পর্কে আরও ইনফরমেশন কোথায় পাবেন।

আপনি যদি না জানেন শেল কী, তবে আপনি উপরের সেকশনটি স্কিপ করেছেন যেখানে আমি ব্যাখ্যা করেছি।

ADB Shell ব্যবহার করার পদ্ধতি

ADB ব্যবহার করে ডিভাইসের শেলে একটি কমান্ড পাঠানো সহজ। মনে রাখবেন যদি আপনার কাছে একাধিক ডিভাইস কানেক্টেড থাকে, তবে -s <device-serial-number> এর সাথে ফলো করুন কমান্ডটি নির্দিষ্ট ডিভাইসে ডিরেক্ট করার জন্য।

একটি সিঙ্গল শেল কমান্ড করার জন্য, আমাদের adb shell কমান্ড ব্যবহার করতে হবে (বড় আশ্চর্য, ঠিক?), এরপর সেই একচুয়া কমান্ডটি যা আমরা ডিভাইসের শেলে করতে চাই:

adb shell ls

আউটপুট:

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

যেমন আগে বললাম, ls কমান্ড CLI-এর করেন্ট ডিরেক্টরিতে ফাইল এবং ডিরেক্টরির তালিকা ডিসপ্লে করে। এটা হয়তো অ্যান্ড্রয়েড ডিভাইসের রুট ডিরেক্টরি যতক্ষণ না আমরা অন্য কোথাও মুভ করি।

আপনি যদি শেলের মাধ্যমে অনেক কমান্ড করার পরিকল্পনা করেন, তবে আপনি একটি ইন্টারঅ্যাক্টিভ শেল সেশনও শুরু করতে পারেন। এটি সিম্পল কমান্ড দিয়ে করা যায়:

adb shell

একটি ইন্টারঅ্যাক্টিভ শেল সেশনে থাকতে, আপনি শেল কমান্ড সরাসরি টাইপ করতে পারবেন adb shell <command> আরও ব্যবহার ছাড়া।

নোট করুন যে আপনি যখন ইন্টারঅ্যাক্টিভ শেল সেশন থেকে বের হতে চান, তবে exit টাইপ করে বা Ctrl + D চাপায় করতে পারেন।

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

শেলের মাধ্যমে আপনি বিভিন্ন কমান্ড এবং ইউটিলিটি ব্যবহার করতে পারেন। একটি অ্যান্ড্রয়েড ডিভাইসের ActivityManager (am)  খুব উপকারী হতে পারে একটি অ্যান্ড্রয়েড অ্যাপের বিভিন্ন কম্পোনেন্ট (Activities, Services, BroadcastReceivers, কয়েকটি নামানোর জন্য) বিভিন্ন পরিস্থিতিতে টেস্ট করার জন্য।

ধরুন আমরা একটি নির্দিষ্ট Activity-তে সরাসরি লঞ্চ করতে চাই, কিন্তু এই Activity ম্যানিফেস্টে launcher Activity হিসেবে ডিজাইনেটেড নয়।

আপনাকে এখনও প্রতিটি <activity/> এন্ট্রিতে android:exported=”true” অ্যাট্রিবিউট যোগ করতে হবে যেগুলো আপনি লঞ্চ করতে চান (যদি সেটি ইতিমধ্যে launcher Activity না হয়)।

এইর পর আপনি নিচের কমান্ডটি ব্যবহার করে সেখানে সরাসরি যেতে পারেন:

am start -n <app-package-id>/<activity-name>

নোট করুন যে <activity-name> অবশ্যই সেই প্যাকেজগুলো ইনক্লুড করতে হবে, প্যাকেজ-আইডির সাপেক্ষে, যেগুলোর ভিতরে সেটি অবস্থিত। নিচের আউটপুটে একটি উদাহরণ দেখুন যেটি چندین প্যাকেজের ভিতরে বসে একটি Activity লঞ্চ করছে।

व्यাপক ADB গাইড: অ্যান্ড্রয়েড ডিভাইসের জন্য ড্রাইভার ইনস্টলেশন এবং কমান্ড মাস্টারি

আরও পড়ুন

এই আর্টিকেলে আমার লক্ষ্য ছিল আমার নিজের শব্দে (যতটুকু সম্ভব) ADB-এর ব্যবহার পরিচিত, ব্যাখ্যা, এবং গাইড করা।

এই মুহূর্তে আমাকে কিছু খুব কন্ট্রাইভড উদাহরণ বানাতে হতো বা সিম্পলি ডকুমেন্টেশন কার্বন কপি করতে হতো, য ত যেগুলো আমি করতে আগ্রহী নই।

বদলে, আমি আপনাকে ডকুমেন্টেশন ভিজিট করতে, এবং Activity Manager, Package Manager, Policy Manager, এবং অন্যদের মত টুলস ব্যবহার করে আপনি কী কী কুল জিনিস করতে পারেন সেটা সংক্ষেপে দেখতে অনুমোদনা করছি।

আপনি সোশ্যাল মিডিয়ায় আমার সাথে যোগাযোগ করতে পারেন এখানে:

https://www.instagram.com/rkay301/
https://www.facebook.com/wiseassblog/
https://twitter.com/wiseass301
https://wiseassblog.com/

  1. Android ডিভাইসে Microsoft Teams ইনস্টল ও সেট আপ করুন: ধাপে ধাপে গাইড

  2. অ্যান্ড্রয়েডে মাইক্রোসফ্ট এজ ইনস্টল ও দক্ষতার সাথে ব্যবহার করুন – দ্রুত গাইড

  3. কাস্টম অ্যান্ড্রয়েড ROM-এ GApps ইনস্টল করুন: ধাপে ধাপে গাইড

  4. Android-এ সহজে একাধিক Facebook অ্যাকাউন্ট ম্যানেজ করুন: সম্পূর্ণ সেটআপ গাইড