অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি)

অ্যান্ড্রয়েড ডিবাগ ব্রিজ ( adb ) একটি বহুমুখী কমান্ড-লাইন টুল যা আপনাকে একটি ডিভাইসের সাথে যোগাযোগ করতে দেয়। adb কমান্ড বিভিন্ন ধরনের ডিভাইস অ্যাকশনের সুবিধা দেয়, যেমন অ্যাপ ইনস্টল করা এবং ডিবাগ করা। adb একটি ইউনিক্স শেল অ্যাক্সেস প্রদান করে যা আপনি একটি ডিভাইসে বিভিন্ন কমান্ড চালানোর জন্য ব্যবহার করতে পারেন। এটি একটি ক্লায়েন্ট-সার্ভার প্রোগ্রাম যা তিনটি উপাদান অন্তর্ভুক্ত করে:

  • একটি ক্লায়েন্ট , যা কমান্ড পাঠায়। ক্লায়েন্ট আপনার ডেভেলপমেন্ট মেশিনে চলে। আপনি একটি adb কমান্ড জারি করে একটি কমান্ড-লাইন টার্মিনাল থেকে একটি ক্লায়েন্টকে আহ্বান করতে পারেন।
  • একটি ডেমন (adbd) , যা একটি ডিভাইসে কমান্ড চালায়। ডেমন প্রতিটি ডিভাইসে একটি পটভূমি প্রক্রিয়া হিসাবে চলে।
  • একটি সার্ভার , যা ক্লায়েন্ট এবং ডেমনের মধ্যে যোগাযোগ পরিচালনা করে। সার্ভারটি আপনার ডেভেলপমেন্ট মেশিনে একটি ব্যাকগ্রাউন্ড প্রক্রিয়া হিসাবে চলে।

adb অ্যান্ড্রয়েড SDK প্ল্যাটফর্ম টুলস প্যাকেজে অন্তর্ভুক্ত। SDK ম্যানেজার দিয়ে এই প্যাকেজটি ডাউনলোড করুন, যা এটিকে android_sdk /platform-tools/ এ ইনস্টল করে। আপনি যদি স্বতন্ত্র অ্যান্ড্রয়েড SDK প্ল্যাটফর্ম টুলস প্যাকেজ চান তবে এটি এখানে ডাউনলোড করুন

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

কিভাবে adb কাজ করে

আপনি যখন একটি adb ক্লায়েন্ট শুরু করেন, ক্লায়েন্ট প্রথমে পরীক্ষা করে যে একটি adb সার্ভার প্রক্রিয়া ইতিমধ্যেই চলছে কিনা। যদি না থাকে তবে এটি সার্ভার প্রক্রিয়া শুরু করে। যখন সার্ভার শুরু হয়, তখন এটি স্থানীয় TCP পোর্ট 5037 এর সাথে আবদ্ধ হয় এবং adb ক্লায়েন্টদের থেকে পাঠানো কমান্ড শোনে।

দ্রষ্টব্য: সমস্ত adb ক্লায়েন্ট adb সার্ভারের সাথে যোগাযোগ করতে পোর্ট 5037 ব্যবহার করে।

সার্ভার তারপর সমস্ত চলমান ডিভাইসের সাথে সংযোগ স্থাপন করে। এটি 5555 থেকে 5585 রেঞ্জের মধ্যে বিজোড়-সংখ্যাযুক্ত পোর্ট স্ক্যান করে এমুলেটরগুলি সনাক্ত করে, যা প্রথম 16টি এমুলেটর দ্বারা ব্যবহৃত পরিসর। যেখানে সার্ভার একটি adb ডেমন (adbd) খুঁজে পায়, এটি সেই পোর্টের সাথে একটি সংযোগ স্থাপন করে।

প্রতিটি এমুলেটর একজোড়া ক্রমিক পোর্ট ব্যবহার করে — কনসোল সংযোগের জন্য একটি জোড়-সংখ্যাযুক্ত পোর্ট এবং adb সংযোগের জন্য একটি বিজোড়-সংখ্যাযুক্ত পোর্ট। যেমন:

এমুলেটর 1, কনসোল: 5554
এমুলেটর 1, adb : 5555
এমুলেটর 2, কনসোল: 5556
এমুলেটর 2, adb : 5557
এবং তাই

যেমন দেখানো হয়েছে, পোর্ট 5555-এ adb এর সাথে সংযুক্ত এমুলেটরটি সেই এমুলেটরের মতো যার কনসোল পোর্ট 5554-এ শোনে।

একবার সার্ভার সমস্ত ডিভাইসে সংযোগ স্থাপন করে, আপনি সেই ডিভাইসগুলি অ্যাক্সেস করতে adb কমান্ড ব্যবহার করতে পারেন। যেহেতু সার্ভারটি ডিভাইসের সাথে সংযোগ পরিচালনা করে এবং একাধিক adb ক্লায়েন্ট থেকে কমান্ড পরিচালনা করে, আপনি যেকোনো ক্লায়েন্ট বা স্ক্রিপ্ট থেকে যেকোনো ডিভাইস নিয়ন্ত্রণ করতে পারেন।

আপনার ডিভাইসে অ্যাডবি ডিবাগিং সক্ষম করুন

USB-এর মাধ্যমে সংযুক্ত একটি ডিভাইসের সাথে adb ব্যবহার করতে, আপনাকে অবশ্যই বিকাশকারী বিকল্পগুলির অধীনে ডিভাইস সিস্টেম সেটিংসে USB ডিবাগিং সক্ষম করতে হবে৷ Android 4.2 (API স্তর 17) এবং উচ্চতর, বিকাশকারী বিকল্পগুলির স্ক্রীনটি ডিফল্টরূপে লুকানো থাকে৷ এটি দৃশ্যমান করতে, বিকাশকারী বিকল্পগুলি সক্ষম করুন৷

আপনি এখন USB দিয়ে আপনার ডিভাইস সংযোগ করতে পারেন। আপনি android_sdk /platform-tools/ ডিরেক্টরি থেকে adb devices সম্পাদন করে আপনার ডিভাইসটি সংযুক্ত কিনা তা যাচাই করতে পারেন। সংযুক্ত থাকলে, আপনি "ডিভাইস" হিসাবে তালিকাভুক্ত ডিভাইসের নাম দেখতে পাবেন।

দ্রষ্টব্য: আপনি যখন Android 4.2.2 (API স্তর 17) বা উচ্চতর চলমান একটি ডিভাইস সংযুক্ত করেন, তখন সিস্টেমটি একটি ডায়ালগ দেখায় যা জিজ্ঞাসা করে যে একটি RSA কী গ্রহণ করবেন কিনা যা এই কম্পিউটারের মাধ্যমে ডিবাগ করার অনুমতি দেয়৷ এই নিরাপত্তা ব্যবস্থা ব্যবহারকারীর ডিভাইসগুলিকে রক্ষা করে কারণ এটি নিশ্চিত করে যে USB ডিবাগিং এবং অন্যান্য adb কমান্ডগুলি কার্যকর করা যাবে না যদি না আপনি ডিভাইসটি আনলক করতে এবং ডায়ালগটি স্বীকার করতে সক্ষম হন।

USB এর মাধ্যমে একটি ডিভাইসের সাথে সংযোগ করার বিষয়ে আরও তথ্যের জন্য, একটি হার্ডওয়্যার ডিভাইসে অ্যাপ্লিকেশন চালান পড়ুন।

Wi-Fi এর মাধ্যমে একটি ডিভাইসের সাথে সংযোগ করুন৷

দ্রষ্টব্য: নীচের নির্দেশাবলী Android 11 (API স্তর 30) চালিত Wear ডিভাইসগুলিতে প্রযোজ্য নয়। আরও তথ্যের জন্য একটি Wear OS অ্যাপ ডিবাগ করার নির্দেশিকা দেখুন।

অ্যান্ড্রয়েড 11 (এপিআই লেভেল 30) এবং উচ্চতর সমর্থন অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) ব্যবহার করে আপনার ওয়ার্কস্টেশন থেকে ওয়্যারলেসভাবে আপনার অ্যাপ স্থাপন এবং ডিবাগ করা। উদাহরণস্বরূপ, আপনি USB এর মাধ্যমে আপনার ডিভাইসটিকে শারীরিকভাবে সংযুক্ত করার প্রয়োজন ছাড়াই একাধিক দূরবর্তী ডিভাইসে আপনার ডিবাগযোগ্য অ্যাপ স্থাপন করতে পারেন। এটি ড্রাইভার ইনস্টলেশনের মতো সাধারণ USB সংযোগ সমস্যাগুলি মোকাবেলা করার প্রয়োজনীয়তা দূর করে।

আপনি ওয়্যারলেস ডিবাগিং ব্যবহার শুরু করার আগে, নিম্নলিখিতগুলি করুন:

  • আপনার ওয়ার্কস্টেশন এবং ডিভাইস একই ওয়্যারলেস নেটওয়ার্কের সাথে সংযুক্ত আছে তা নিশ্চিত করুন।

  • নিশ্চিত করুন যে আপনার ডিভাইসটি Android 11 (API লেভেল 30) বা ফোনের জন্য উচ্চতর বা Android 13 (API লেভেল 33) বা TV এবং WearOS-এর জন্য উচ্চতর চালাচ্ছে। আরও তথ্যের জন্য, আপনার অ্যান্ড্রয়েড সংস্করণ দেখুন এবং আপডেট করুন

  • যদি IDE ব্যবহার করেন, তাহলে নিশ্চিত করুন যে আপনার Android Studio এর সর্বশেষ সংস্করণ ইনস্টল করা আছে। আপনি এখানে এটি ডাউনলোড করতে পারেন.

  • আপনার ওয়ার্কস্টেশনে, SDK প্ল্যাটফর্ম টুলের সর্বশেষ সংস্করণে আপডেট করুন।

ওয়্যারলেস ডিবাগিং ব্যবহার করতে, আপনাকে অবশ্যই একটি QR কোড বা একটি পেয়ারিং কোড ব্যবহার করে আপনার ডিভাইসটিকে আপনার ওয়ার্কস্টেশনের সাথে যুক্ত করতে হবে৷ আপনার ওয়ার্কস্টেশন এবং ডিভাইস অবশ্যই একই ওয়্যারলেস নেটওয়ার্কের সাথে সংযুক্ত থাকতে হবে। আপনার ডিভাইসের সাথে সংযোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার ডিভাইসে বিকাশকারী বিকল্পগুলি সক্ষম করুন

  2. অ্যান্ড্রয়েড স্টুডিও খুলুন এবং রান কনফিগারেশন মেনু থেকে Wi-Fi ব্যবহার করে ডিভাইস জোড়া নির্বাচন করুন।

    কনফিগারেশন ড্রপডাউন মেনু চালান
    চিত্র 1. কনফিগারেশন মেনু চালান।

    Wi-Fi উইন্ডোতে জোড়া ডিভাইসগুলি পপ আপ হয়, যেমন চিত্র 2 এ দেখানো হয়েছে।

    Wi-Fi পপআপ উইন্ডোতে জোড়া ডিভাইসের স্ক্রিনশট
    চিত্র 2. QR কোড বা পেয়ারিং কোড ব্যবহার করে ডিভাইস জোড়ার জন্য পপআপ উইন্ডো।
  3. আপনার ডিভাইসে, ওয়্যারলেস ডিবাগিং আলতো চাপুন এবং আপনার ডিভাইস যুক্ত করুন:

    একটি পিক্সেল ফোনের স্ক্রিনশট ওয়্যারলেস ডিবাগিং সিস্টেম সেটিং দেখাচ্ছে৷
    চিত্র 3. Google Pixel ফোনে ওয়্যারলেস ডিবাগিং সেটিংসের স্ক্রিনশট।
    1. আপনার ডিভাইসটিকে একটি QR কোডের সাথে পেয়ার করতে, QR কোডের সাথে পেয়ার ডিভাইস নির্বাচন করুন এবং চিত্র 2-এ দেখানো Wi-Fi পপআপের মাধ্যমে পেয়ার ডিভাইসগুলি থেকে প্রাপ্ত QR কোডটি স্ক্যান করুন৷

    2. পেয়ারিং কোডের সাথে আপনার ডিভাইস পেয়ার করতে, Wi-Fi পপআপের মাধ্যমে পেয়ার ডিভাইস থেকে পেয়ারিং কোডের সাথে পেয়ার ডিভাইস নির্বাচন করুন। আপনার ডিভাইসে, পেয়ারিং কোড ব্যবহার করে পেয়ার নির্বাচন করুন এবং প্রদত্ত ছয়-সংখ্যার কোডটি নোট করুন। একবার আপনার ডিভাইসটি Wi-Fi উইন্ডোতে পেয়ার ডিভাইসে প্রদর্শিত হলে, আপনি পেয়ার নির্বাচন করতে পারেন এবং আপনার ডিভাইসে দেখানো ছয়-সংখ্যার কোডটি প্রবেশ করতে পারেন।

      পিন কোড এন্ট্রির উদাহরণের স্ক্রিনশট
      চিত্র 4. ছয় সংখ্যার কোড এন্ট্রির উদাহরণ।
  4. আপনার ডিভাইস যুক্ত হওয়ার পরে, আপনি আপনার ডিভাইসে আপনার অ্যাপ স্থাপন করার চেষ্টা করতে পারেন।

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

  5. আপনি যদি ওয়্যারলেস ডিবাগিং দ্রুত চালু এবং বন্ধ করতে চান, আপনি ওয়্যারলেস ডিবাগিংয়ের জন্য দ্রুত সেটিংস ডেভেলপার টাইলস ব্যবহার করতে পারেন, যা বিকাশকারী বিকল্প > দ্রুত সেটিংস বিকাশকারী টাইলস- এ পাওয়া যায়।

    একটি Google Pixel ফোন থেকে দ্রুত সেটিংস ডেভেলপার টাইলসের স্ক্রিনশট।
    চিত্র 5. দ্রুত সেটিংস বিকাশকারী টাইলস সেটিং আপনাকে দ্রুত ওয়্যারলেস ডিবাগিং চালু এবং বন্ধ করতে দেয়।

কমান্ড লাইন ব্যবহার করে Wi-Fi সংযোগ

বিকল্পভাবে, অ্যান্ড্রয়েড স্টুডিও ছাড়া কমান্ড লাইন ব্যবহার করে আপনার ডিভাইসে সংযোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার ডিভাইসে বিকাশকারী বিকল্পগুলি সক্ষম করুন, যেমনটি আগে বর্ণিত হয়েছে৷

  2. আপনার ডিভাইসে ওয়্যারলেস ডিবাগিং সক্ষম করুন, যেমনটি আগে বর্ণিত হয়েছে।

  3. আপনার ওয়ার্কস্টেশনে, একটি টার্মিনাল উইন্ডো খুলুন এবং android_sdk/platform-tools এ নেভিগেট করুন।

  4. পেয়ারিং কোডের সাথে পেয়ার ডিভাইস নির্বাচন করে আপনার IP ঠিকানা, পোর্ট নম্বর এবং পেয়ারিং কোড খুঁজুন। ডিভাইসে প্রদর্শিত IP ঠিকানা, পোর্ট নম্বর এবং পেয়ারিং কোড নোট করুন।

  5. আপনার ওয়ার্কস্টেশনের টার্মিনালে, adb pair ipaddr:port চালান। উপরে থেকে আইপি ঠিকানা এবং পোর্ট নম্বর ব্যবহার করুন।

  6. অনুরোধ করা হলে, পেয়ারিং কোড লিখুন, যেমন নীচে দেখানো হয়েছে।

    কমান্ড লাইনে জোড়ার স্ক্রিনশট।
    চিত্র 6. একটি বার্তা নির্দেশ করে যে আপনার ডিভাইসটি সফলভাবে জোড়া হয়েছে৷

বেতার সংযোগ সমস্যা সমাধান করুন

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

আপনার ওয়ার্কস্টেশন এবং ডিভাইস পূর্বশর্তগুলি পূরণ করে কিনা তা পরীক্ষা করুন

ওয়ার্কস্টেশন এবং ডিভাইস এই বিভাগের শুরুতে তালিকাভুক্ত পূর্বশর্তগুলি পূরণ করে কিনা তা পরীক্ষা করুন৷

অন্যান্য পরিচিত সমস্যা জন্য পরীক্ষা করুন

ওয়্যারলেস ডিবাগিং (এডিবি বা অ্যান্ড্রয়েড স্টুডিও সহ) এবং কীভাবে সেগুলি সমাধান করা যায় তার বর্তমান পরিচিত সমস্যাগুলির একটি তালিকা নীচে দেওয়া হল:

  • Wi-Fi সংযোগ হচ্ছে না : নিরাপদ Wi-Fi নেটওয়ার্ক, যেমন কর্পোরেট ওয়াই-ফাই নেটওয়ার্ক, p2p সংযোগগুলি ব্লক করতে পারে এবং আপনাকে Wi-Fi এর মাধ্যমে সংযোগ করতে দেয় না৷ একটি কেবল বা অন্য (নন-কর্প) Wi-Fi নেটওয়ার্কের সাথে সংযোগ করার চেষ্টা করুন৷ adb connect ip : port ওভার টিসিপি/আইপি (প্রাথমিক ইউএসবি কানেকশন অনুসরণ করে) আরেকটি বিকল্প, যদি নন-কর্প নেটওয়ার্ক অবলম্বন করা একটি বিকল্প।

  • adb ওভার Wi-Fi কখনও কখনও স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় : ডিভাইসটি Wi-Fi নেটওয়ার্ক সুইচ করলে বা নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন হলে এটি ঘটতে পারে৷ সমাধান করতে, নেটওয়ার্কে পুনরায় সংযোগ করুন৷

  • সফলভাবে জোড়া লাগানোর পর ডিভাইস সংযোগ হচ্ছে না : adb জোড়া ডিভাইস আবিষ্কার করতে এবং স্বয়ংক্রিয়ভাবে সংযোগ করতে mDNS-এর উপর নির্ভর করে। যদি আপনার নেটওয়ার্ক বা ডিভাইস কনফিগারেশন mDNS সমর্থন না করে বা এটি নিষ্ক্রিয় করে থাকে, তাহলে আপনাকে adb connect ip : port ব্যবহার করে ডিভাইসের সাথে ম্যানুয়ালি সংযোগ করতে হবে।

একটি প্রাথমিক USB সংযোগের পরে একটি ডিভাইসের সাথে ওয়্যারলেসভাবে সংযোগ করুন (কেবলমাত্র Android 10 এবং তার নিচের সংস্করণগুলিতে উপলব্ধ)

দ্রষ্টব্য: এই ওয়ার্কফ্লোটি Android 11 (এবং উচ্চতর) এর ক্ষেত্রেও প্রযোজ্য, সতর্কতা হল যে এটিতে একটি *প্রাথমিক* সংযোগও রয়েছে।

দ্রষ্টব্য: নিম্নলিখিত নির্দেশাবলী Android 10 (API স্তর 29) বা তার নিচের চলমান Wear ডিভাইসগুলিতে প্রযোজ্য নয়৷ আরও তথ্যের জন্য একটি Wear OS অ্যাপ ডিবাগ করার নির্দেশিকা দেখুন।

adb সাধারণত USB এর মাধ্যমে ডিভাইসের সাথে যোগাযোগ করে, তবে আপনি Wi-Fi এর মাধ্যমে adb ব্যবহার করতে পারেন। অ্যান্ড্রয়েড 10 (এপিআই লেভেল 29) বা তার নিচে চলমান একটি ডিভাইস সংযোগ করতে, ইউএসবি-তে এই প্রাথমিক পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার অ্যান্ড্রয়েড ডিভাইস এবং adb হোস্ট কম্পিউটারকে একটি সাধারণ ওয়াই-ফাই নেটওয়ার্কে সংযুক্ত করুন৷
  2. দ্রষ্টব্য: সতর্ক থাকুন যে সমস্ত অ্যাক্সেস পয়েন্ট উপযুক্ত নয়। আপনাকে একটি অ্যাক্সেস পয়েন্ট ব্যবহার করতে হতে পারে যার ফায়ারওয়াল adb সমর্থন করার জন্য সঠিকভাবে কনফিগার করা হয়েছে।

  3. একটি USB তারের সাহায্যে হোস্ট কম্পিউটারের সাথে ডিভাইসটিকে সংযুক্ত করুন৷
  4. পোর্ট 5555 এ একটি TCP/IP সংযোগের জন্য শোনার জন্য লক্ষ্য ডিভাইস সেট করুন:
    adb tcpip 5555
    
  5. লক্ষ্য ডিভাইস থেকে USB তারের সংযোগ বিচ্ছিন্ন করুন.
  6. অ্যান্ড্রয়েড ডিভাইসের আইপি ঠিকানা খুঁজুন। উদাহরণস্বরূপ, একটি Nexus ডিভাইসে, আপনি সেটিংস > ট্যাবলেট সম্পর্কে (বা ফোন সম্পর্কে ) > স্থিতি > IP ঠিকানাতে IP ঠিকানা খুঁজে পেতে পারেন।
  7. আইপি ঠিকানা দ্বারা ডিভাইসের সাথে সংযোগ করুন:
    adb connect device_ip_address:5555
    
  8. নিশ্চিত করুন যে আপনার হোস্ট কম্পিউটার লক্ষ্য ডিভাইসের সাথে সংযুক্ত আছে:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

আপনার ডিভাইস এখন adb এর সাথে সংযুক্ত।

আপনার ডিভাইসে adb সংযোগ হারিয়ে গেলে:

  • নিশ্চিত করুন যে আপনার হোস্ট এখনও আপনার Android ডিভাইসের মতো একই Wi-Fi নেটওয়ার্কের সাথে সংযুক্ত রয়েছে৷
  • adb connect ধাপটি আবার সম্পাদন করে পুনরায় সংযোগ করুন।
  • যদি এটি কাজ না করে, আপনার adb হোস্ট রিসেট করুন:
    adb kill-server
    

    তারপর আবার শুরু থেকে শুরু করুন।

ডিভাইসের জন্য ক্যোয়ারী

adb কমান্ড ইস্যু করার আগে, adb সার্ভারের সাথে কোন ডিভাইসের দৃষ্টান্ত সংযুক্ত আছে তা জেনে নেওয়া সহায়ক। devices কমান্ড ব্যবহার করে সংযুক্ত ডিভাইসের একটি তালিকা তৈরি করুন:

  adb devices -l
  

প্রতিক্রিয়া হিসাবে, adb প্রতিটি ডিভাইসের জন্য এই স্থিতি তথ্য মুদ্রণ করে:

  • সিরিয়াল নম্বর: adb ডিভাইসটিকে তার পোর্ট নম্বর দ্বারা অনন্যভাবে সনাক্ত করার জন্য একটি স্ট্রিং তৈরি করে। এখানে একটি উদাহরণ সিরিয়াল নম্বর: emulator-5554
  • অবস্থা: ডিভাইসের সংযোগের অবস্থা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
    • offline : ডিভাইসটি adb এর সাথে সংযুক্ত নয় বা সাড়া দিচ্ছে না।
    • device : ডিভাইসটি adb সার্ভারের সাথে সংযুক্ত। মনে রাখবেন যে এই অবস্থাটি বোঝায় না যে অ্যান্ড্রয়েড সিস্টেমটি সম্পূর্ণরূপে বুট হয়েছে এবং চালু আছে, কারণ সিস্টেমটি বুট করার সময় ডিভাইসটি adb এর সাথে সংযোগ করে। বুট-আপের পরে, এটি একটি ডিভাইসের স্বাভাবিক অপারেশনাল অবস্থা।
    • no device : কোনো ডিভাইস সংযুক্ত নেই।
  • বর্ণনা: আপনি যদি -l বিকল্পটি অন্তর্ভুক্ত করেন, devices কমান্ড আপনাকে বলে যে ডিভাইসটি কী। এই তথ্যটি সহায়ক যখন আপনার একাধিক ডিভাইস সংযুক্ত থাকে যাতে আপনি তাদের আলাদা করে বলতে পারেন৷

নিম্নলিখিত উদাহরণটি devices কমান্ড এবং এর আউটপুট দেখায়। তিনটি ডিভাইস চলছে। তালিকার প্রথম দুটি লাইন হল এমুলেটর, এবং তৃতীয় লাইন হল একটি হার্ডওয়্যার ডিভাইস যা কম্পিউটারের সাথে সংযুক্ত।

$ adb devices
List of devices attached
emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64
emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86
0a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo

এমুলেটর তালিকাভুক্ত নয়

adb devices কমান্ডের একটি কর্নার-কেস কমান্ড সিকোয়েন্স রয়েছে যার কারণে এমুলেটরগুলি আপনার ডেস্কটপে দৃশ্যমান থাকা সত্ত্বেও চলমান এমুলেটরগুলি adb devices আউটপুটে দেখা যায় না। এটি ঘটে যখন নিম্নলিখিত সমস্ত শর্ত সত্য হয়:

  • adb সার্ভার চলছে না।
  • আপনি 5554 এবং 5584 এর মধ্যে বিজোড়-সংখ্যাযুক্ত পোর্ট মান সহ -port বা -ports বিকল্পের সাথে emulator কমান্ডটি ব্যবহার করেন।
  • আপনার বেছে নেওয়া বিজোড়-সংখ্যার পোর্টটি ব্যস্ত নয়, তাই পোর্ট সংযোগটি নির্দিষ্ট পোর্ট নম্বরে করা যেতে পারে — অথবা, যদি এটি ব্যস্ত থাকে, তাহলে এমুলেটরটি অন্য পোর্টে স্যুইচ করে যা 2-এ প্রয়োজনীয়তা পূরণ করে।
  • আপনি এমুলেটর শুরু করার পরে আপনি adb সার্ভার শুরু করবেন।

এই পরিস্থিতি এড়াতে একটি উপায় হল এমুলেটরকে তার নিজস্ব পোর্ট বেছে নিতে দেওয়া এবং একবারে 16 টির বেশি এমুলেটর চালানো না। আরেকটি উপায় হল emulator কমান্ড ব্যবহার করার আগে সর্বদা adb সার্ভার চালু করা, যেমনটি নিম্নলিখিত উদাহরণগুলিতে ব্যাখ্যা করা হয়েছে।

উদাহরণ 1: নিম্নলিখিত কমান্ডের ক্রমানুসারে, adb devices কমান্ড adb সার্ভার শুরু করে, কিন্তু ডিভাইসের তালিকা প্রদর্শিত হয় না।

adb সার্ভার বন্ধ করুন এবং দেখানো ক্রমে নিম্নলিখিত কমান্ড লিখুন। AVD নামের জন্য, আপনার সিস্টেম থেকে একটি বৈধ AVD নাম প্রদান করুন। AVD নামের একটি তালিকা পেতে, emulator -list-avds টাইপ করুন। emulator কমান্ডটি android_sdk /tools ডিরেক্টরিতে রয়েছে।

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5555
$ adb devices

List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

উদাহরণ 2: নিম্নলিখিত কমান্ড ক্রমানুসারে, adb devices ডিভাইসের তালিকা প্রদর্শন করে কারণ adb সার্ভারটি প্রথমে শুরু হয়েছিল।

adb devices আউটপুটে এমুলেটর দেখতে, adb সার্ভার বন্ধ করুন এবং তারপরে emulator কমান্ড ব্যবহার করার পরে এবং adb devices কমান্ড ব্যবহার করার আগে এটি আবার শুরু করুন, নিম্নরূপ:

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5557
$ adb start-server
$ adb devices

List of devices attached
emulator-5557 device

এমুলেটর কমান্ড-লাইন বিকল্পগুলি সম্পর্কে আরও তথ্যের জন্য, কমান্ড-লাইন স্টার্টআপ বিকল্পগুলি দেখুন।

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

একাধিক ডিভাইস চলমান থাকলে, adb কমান্ড ইস্যু করার সময় আপনাকে অবশ্যই লক্ষ্য ডিভাইসটি নির্দিষ্ট করতে হবে। লক্ষ্য নির্দিষ্ট করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. লক্ষ্যের সিরিয়াল নম্বর পেতে devices কমান্ড ব্যবহার করুন।
  2. আপনার সিরিয়াল নম্বর হয়ে গেলে, সিরিয়াল নম্বর নির্দিষ্ট করতে adb কমান্ডের সাথে -s বিকল্পটি ব্যবহার করুন।
    1. আপনি যদি অনেকগুলি adb কমান্ড ইস্যু করতে যাচ্ছেন, তাহলে আপনি ক্রমিক নম্বর ধারণ করার জন্য $ANDROID_SERIAL পরিবেশ পরিবর্তনশীল সেট করতে পারেন।
    2. আপনি যদি -s এবং $ANDROID_SERIAL উভয়ই ব্যবহার করেন, -s ওভাররাইড করে $ANDROID_SERIAL

নিম্নলিখিত উদাহরণে, সংযুক্ত ডিভাইসের তালিকা পাওয়া যায়, এবং তারপরে সেই ডিভাইসে helloWorld.apk ইনস্টল করতে ডিভাইসগুলির একটির সিরিয়াল নম্বর ব্যবহার করা হয়:

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
0.0.0.0:6520  device

# To install on emulator-5555
$ adb -s emulator-5555 install helloWorld.apk
# To install on 0.0.0.0:6520
$ adb -s 0.0.0.0:6520 install helloWorld.apk

দ্রষ্টব্য: আপনি একাধিক ডিভাইস উপলব্ধ থাকাকালীন একটি টার্গেট ডিভাইস নির্দিষ্ট না করে একটি কমান্ড ইস্যু করলে, adb একটি ত্রুটি প্রদর্শন করে "adb: একাধিক ডিভাইস/এমুলেটর"।

আপনার যদি একাধিক ডিভাইস উপলব্ধ থাকে তবে শুধুমাত্র একটি এমুলেটর হয়, তাহলে এমুলেটরে কমান্ড পাঠাতে -e বিকল্পটি ব্যবহার করুন। যদি একাধিক ডিভাইস থাকে কিন্তু শুধুমাত্র একটি হার্ডওয়্যার ডিভাইস সংযুক্ত থাকে, তাহলে হার্ডওয়্যার ডিভাইসে কমান্ড পাঠাতে -d বিকল্পটি ব্যবহার করুন।

একটি অ্যাপ ইনস্টল করুন

আপনি install কমান্ড সহ একটি এমুলেটর বা সংযুক্ত ডিভাইসে একটি APK ইনস্টল করতে adb ব্যবহার করতে পারেন:

adb install path_to_apk

আপনি একটি পরীক্ষা APK ইনস্টল করার সময় install কমান্ডের সাথে -t বিকল্পটি ব্যবহার করতে হবে। আরও তথ্যের জন্য, দেখুন -t

একাধিক APK ইনস্টল করতে install-multiple ব্যবহার করুন। আপনি যদি প্লে কনসোল থেকে আপনার অ্যাপের জন্য একটি নির্দিষ্ট ডিভাইসের জন্য সমস্ত APK ডাউনলোড করেন এবং এমুলেটর বা শারীরিক ডিভাইসে ইনস্টল করতে চান তবে এটি কার্যকর।

আপনি একটি এমুলেটর/ডিভাইস ইনস্ট্যান্সে ইনস্টল করতে পারেন এমন একটি APK ফাইল কীভাবে তৈরি করবেন সে সম্পর্কে আরও তথ্যের জন্য, আপনার অ্যাপ তৈরি করুন এবং চালান দেখুন।

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

পোর্ট ফরওয়ার্ডিং সেট আপ করুন

ইচ্ছামত পোর্ট ফরওয়ার্ডিং সেট আপ করতে forward কমান্ডটি ব্যবহার করুন, যা একটি নির্দিষ্ট হোস্ট পোর্টের অনুরোধগুলিকে একটি ডিভাইসের একটি ভিন্ন পোর্টে ফরোয়ার্ড করে। নিম্নলিখিত উদাহরণটি হোস্ট পোর্ট 6100 এর ডিভাইস পোর্ট 7100 এ ফরওয়ার্ডিং সেট আপ করে:

adb forward tcp:6100 tcp:7100

নিম্নলিখিত উদাহরণটি হোস্ট পোর্ট 6100-কে স্থানীয়:logd-এ ফরওয়ার্ডিং সেট আপ করে:

adb forward tcp:6100 local:logd

আপনি ডিভাইসে একটি প্রদত্ত পোর্টে কি পাঠানো হচ্ছে তা নির্ধারণ করার চেষ্টা করলে এটি কার্যকর হতে পারে। সমস্ত প্রাপ্ত ডেটা সিস্টেম-লগিং ডেমনে লেখা হবে এবং ডিভাইস লগগুলিতে প্রদর্শিত হবে।

একটি ডিভাইস থেকে ফাইল কপি করুন

একটি ডিভাইস থেকে ফাইল কপি করতে pull এবং push কমান্ড ব্যবহার করুন। install কমান্ডের বিপরীতে, যা শুধুমাত্র একটি নির্দিষ্ট স্থানে একটি APK ফাইল অনুলিপি করে, pull এবং push কমান্ডগুলি আপনাকে ডিভাইসের যেকোনো অবস্থানে নির্বিচারে ডিরেক্টরি এবং ফাইলগুলি অনুলিপি করতে দেয়।

ডিভাইস থেকে একটি ফাইল বা ডিরেক্টরি এবং এর সাব-ডিরেক্টরি অনুলিপি করতে, নিম্নলিখিতগুলি করুন:

adb pull remote local

ডিভাইসে একটি ফাইল বা ডিরেক্টরি এবং এর সাব-ডিরেক্টরি অনুলিপি করতে, নিম্নলিখিতগুলি করুন:

adb push local remote

আপনার ডেভেলপমেন্ট মেশিনে (স্থানীয়) এবং ডিভাইসে (দূরবর্তী) টার্গেট ফাইল/ডিরেক্টরীতে পাথ দিয়ে local এবং remote প্রতিস্থাপন করুন। যেমন:

adb push myfile.txt /sdcard/myfile.txt

অ্যাডবি সার্ভার বন্ধ করুন

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

adb সার্ভার বন্ধ করতে, adb kill-server কমান্ড ব্যবহার করুন। তারপর আপনি অন্য কোন adb কমান্ড জারি করে সার্ভার পুনরায় চালু করতে পারেন।

adb কমান্ড ইস্যু করুন

আপনার ডেভেলপমেন্ট মেশিনে একটি কমান্ড লাইন থেকে বা নিম্নলিখিত ব্যবহার করে একটি স্ক্রিপ্ট থেকে adb কমান্ড ইস্যু করুন:

adb [-d | -e | -s serial_number] command

শুধুমাত্র একটি এমুলেটর চলমান থাকলে বা শুধুমাত্র একটি ডিভাইস সংযুক্ত থাকলে, ডিফল্টরূপে সেই ডিভাইসে adb কমান্ড পাঠানো হয়। যদি একাধিক এমুলেটর চলমান থাকে এবং/অথবা একাধিক ডিভাইস সংযুক্ত থাকে, তাহলে আপনাকে -d , -e , বা -s বিকল্পটি ব্যবহার করতে হবে লক্ষ্য ডিভাইসটি নির্দিষ্ট করতে যেখানে কমান্ডটি নির্দেশিত হবে।

আপনি নিম্নলিখিত কমান্ড ব্যবহার করে সমস্ত সমর্থিত adb কমান্ডের একটি বিস্তারিত তালিকা দেখতে পারেন:

adb --help

শেল কমান্ড ইস্যু করুন

আপনি adb এর মাধ্যমে ডিভাইস কমান্ড ইস্যু করতে বা একটি ইন্টারেক্টিভ শেল শুরু করতে shell কমান্ড ব্যবহার করতে পারেন। একটি একক কমান্ড ইস্যু করতে, এই মত shell কমান্ড ব্যবহার করুন:

adb [-d |-e | -s serial_number] shell shell_command

একটি ডিভাইসে একটি ইন্টারেক্টিভ শেল শুরু করতে, এই মত shell কমান্ড ব্যবহার করুন:

adb [-d | -e | -s serial_number] shell

একটি ইন্টারেক্টিভ শেল থেকে প্রস্থান করতে, Control+D টিপুন বা exit টাইপ করুন।

অ্যান্ড্রয়েড বেশিরভাগ সাধারণ ইউনিক্স কমান্ড-লাইন সরঞ্জাম সরবরাহ করে। উপলব্ধ সরঞ্জামগুলির একটি তালিকার জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

adb shell ls /system/bin

--help আর্গুমেন্টের মাধ্যমে বেশিরভাগ কমান্ডের জন্য সাহায্য পাওয়া যায়। অনেক শেল কমান্ড টয়বক্স দ্বারা সরবরাহ করা হয়। toybox --help এর মাধ্যমে সমস্ত toybox কমান্ডের জন্য প্রযোজ্য সাধারণ সাহায্য পাওয়া যায়।

অ্যান্ড্রয়েড প্ল্যাটফর্ম টুল 23 এবং উচ্চতরের সাথে, adb ssh(1) কমান্ডের মতো আর্গুমেন্ট পরিচালনা করে। এই পরিবর্তনটি কমান্ড ইনজেকশনের অনেক সমস্যার সমাধান করেছে এবং শেল মেটাক্যারেক্টার ধারণকারী কমান্ডগুলিকে নিরাপদে চালানো সম্ভব করে তোলে, যেমন adb install Let\'sGo.apk । এই পরিবর্তনের অর্থ হল শেল মেটাক্যারেক্টার ধারণ করে এমন যেকোনো কমান্ডের ব্যাখ্যাও পরিবর্তিত হয়েছে।

উদাহরণস্বরূপ, adb shell setprop key ' two words ' এখন একটি ত্রুটি, কারণ উদ্ধৃতিগুলি স্থানীয় শেল দ্বারা গ্রাস করা হয় এবং ডিভাইসটি adb shell setprop key two words দেখতে পায়। কমান্ডটি কাজ করার জন্য, দুইবার উদ্ধৃতি করুন, একবার স্থানীয় শেলের জন্য এবং একবার দূরবর্তী শেলের জন্য, যেমন আপনি ssh(1) দিয়ে করেন। উদাহরণস্বরূপ, adb shell setprop key "' two words '" কাজ করে কারণ স্থানীয় শেলটি উদ্ধৃতির বাইরের স্তরটি নেয় এবং ডিভাইসটি এখনও উদ্ধৃতির ভিতরের স্তরটি দেখতে পায়: setprop key 'two words' । পালানোও একটি বিকল্প, তবে দুবার উদ্ধৃত করা সাধারণত সহজ।

এছাড়াও Logcat কমান্ড-লাইন টুল দেখুন, যা সিস্টেম লগ নিরীক্ষণের জন্য দরকারী।

অ্যাক্টিভিটি ম্যানেজারকে কল করুন

একটি adb শেলের মধ্যে, আপনি বিভিন্ন সিস্টেম ক্রিয়া সম্পাদনের জন্য কার্যকলাপ পরিচালক ( am ) টুলের সাথে কমান্ড ইস্যু করতে পারেন, যেমন একটি কার্যকলাপ শুরু করা, একটি প্রক্রিয়া জোর করে বন্ধ করা, একটি উদ্দেশ্য সম্প্রচার করা, ডিভাইসের স্ক্রীন বৈশিষ্ট্যগুলি পরিবর্তন করা এবং আরও অনেক কিছু।

একটি শেল থাকাকালীন, am সিনট্যাক্স হল:

am command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি কার্যকলাপ পরিচালক কমান্ড ইস্যু করতে পারেন। যেমন:

adb shell am start -a android.intent.action.VIEW

সারণী 1. উপলব্ধ কার্যকলাপ পরিচালক কমান্ড

আদেশ বর্ণনা
start [ options ] intent intent দ্বারা নির্দিষ্ট একটি Activity শুরু করুন।

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • -D : ডিবাগিং সক্ষম করুন।
  • -W : লঞ্চ সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন।
  • --start-profiler file : প্রোফাইলার শুরু করুন এবং file ফলাফল পাঠান।
  • -P file : যেমন --start-profiler , কিন্তু অ্যাপটি নিষ্ক্রিয় হয়ে গেলে প্রোফাইলিং বন্ধ হয়ে যায়।
  • -R count : কার্যকলাপ লঞ্চ count বার পুনরাবৃত্তি করুন. প্রতিটি পুনরাবৃত্তির আগে, শীর্ষ কার্যকলাপ শেষ হবে।
  • -S : কার্যকলাপ শুরু করার আগে লক্ষ্য অ্যাপটিকে জোর করে বন্ধ করুন।
  • --opengl-trace : OpenGL ফাংশনগুলির ট্রেসিং সক্ষম করুন।
  • --user user_id | current : কোন ব্যবহারকারী হিসাবে চালাতে হবে তা নির্দিষ্ট করুন; যদি নির্দিষ্ট না করা হয়, তাহলে বর্তমান ব্যবহারকারী হিসাবে চালান।
startservice [ options ] intent intent দ্বারা নির্দিষ্ট Service শুরু করুন।

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • --user user_id | current : কোন ব্যবহারকারী হিসাবে চালাতে হবে তা নির্দিষ্ট করুন। যদি নির্দিষ্ট করা না থাকে, তাহলে বর্তমান ব্যবহারকারী হিসেবে চালান।
force-stop package package সাথে যুক্ত সবকিছু জোর করে বন্ধ করুন।
kill [ options ] package package সাথে যুক্ত সমস্ত প্রসেস মেরে ফেলুন। এই কমান্ডটি কেবলমাত্র সেই প্রক্রিয়াগুলিকে হত্যা করে যা হত্যা করা নিরাপদ এবং এটি ব্যবহারকারীর অভিজ্ঞতাকে প্রভাবিত করবে না।

বিকল্পগুলি হল:

  • --user user_id | all | current : কোন ব্যবহারকারীর প্রক্রিয়াগুলিকে হত্যা করতে হবে তা নির্দিষ্ট করুন। যদি নির্দিষ্ট করা না থাকে, তাহলে সমস্ত ব্যবহারকারীর প্রসেস মেরে ফেলুন।
kill-all সমস্ত ব্যাকগ্রাউন্ড প্রসেস মেরে ফেলুন।
broadcast [ options ] intent একটি সম্প্রচার অভিপ্রায় ইস্যু.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • [--user user_id | all | current] : কোন ব্যবহারকারীকে পাঠাতে হবে তা উল্লেখ করুন। যদি নির্দিষ্ট না থাকে, তাহলে সমস্ত ব্যবহারকারীদের কাছে পাঠান।
instrument [ options ] component একটি Instrumentation উদাহরণ দিয়ে পর্যবেক্ষণ শুরু করুন। সাধারণত লক্ষ্য component ফর্ম test_package / runner_class

বিকল্পগুলি হল:

  • -r : কাঁচা ফলাফল প্রিন্ট করুন (অন্যথায় report_key_streamresult ডিকোড করুন)। পারফরম্যান্স পরিমাপের জন্য কাঁচা আউটপুট তৈরি করতে [-e perf true] দিয়ে ব্যবহার করুন।
  • -e name value : আর্গুমেন্টের name value হিসাবে সেট করুন। টেস্ট রানারদের জন্য একটি সাধারণ ফর্ম হল -e testrunner_flag value [, value ...]
  • -p file : file প্রোফাইলিং ডেটা লিখুন।
  • -w : ফিরে আসার আগে ইন্সট্রুমেন্টেশন শেষ হওয়ার জন্য অপেক্ষা করুন। টেস্ট রানারদের জন্য প্রয়োজনীয়।
  • --no-window-animation : চলার সময় উইন্ডো অ্যানিমেশন বন্ধ করুন।
  • --user user_id | current : কোন ব্যবহারকারীর ইন্সট্রুমেন্টেশন চলে তা নির্দিষ্ট করুন। নির্দিষ্ট না থাকলে বর্তমান ব্যবহারকারীতে চালান।
profile start process file process প্রোফাইলার শুরু করুন, file ফলাফল লিখুন।
profile stop process process প্রোফাইলার বন্ধ করুন।
dumpheap [ options ] process file process গাদা ডাম্প করুন, file লিখুন।

বিকল্পগুলি হল:

  • --user [ user_id | current] : একটি প্রক্রিয়ার নাম সরবরাহ করার সময়, ডাম্প করার প্রক্রিয়াটির ব্যবহারকারী উল্লেখ করুন। উল্লেখ না থাকলে, বর্তমান ব্যবহারকারী ব্যবহার করা হয়।
  • -b [| png | jpg | webp] : গ্রাফিক্স মেমরি থেকে বিটম্যাপ ডাম্প করুন (API লেভেল 35 এবং তার উপরে)। ঐচ্ছিকভাবে ডাম্প ইন করার বিন্যাস নির্দিষ্ট করুন (ডিফল্টরূপে PNG)।
  • -n : পরিচালিত হিপের পরিবর্তে নেটিভ হিপ ডাম্প করুন।
set-debug-app [ options ] package ডিবাগ করার জন্য অ্যাপ package সেট করুন।

বিকল্পগুলি হল:

  • -w : অ্যাপ শুরু হলে ডিবাগারের জন্য অপেক্ষা করুন।
  • --persistent : এই মান বজায় রাখুন।
clear-debug-app set-debug-app দিয়ে ডিবাগ করার জন্য আগের সেটটি সাফ করুন।
monitor [ options ] ক্র্যাশ বা ANR-এর জন্য পর্যবেক্ষণ শুরু করুন।

বিকল্পগুলি হল:

  • --gdb : ক্র্যাশ/ANR এ প্রদত্ত পোর্টে gdbserv শুরু করুন।
screen-compat {on | off} package package পর্দা সামঞ্জস্যপূর্ণ মোড নিয়ন্ত্রণ করুন।
display-size [reset | width x height ] ডিভাইস প্রদর্শনের আকার ওভাররাইড করুন। এই কমান্ডটি একটি বড় স্ক্রীন সহ একটি ডিভাইস ব্যবহার করে একটি ছোট স্ক্রীন রেজোলিউশনের অনুকরণ করে বিভিন্ন স্ক্রীন সাইজ জুড়ে আপনার অ্যাপটি পরীক্ষা করার জন্য সহায়ক এবং এর বিপরীতে।

উদাহরণ:
am display-size 1280x800

display-density dpi ডিভাইস প্রদর্শনের ঘনত্ব ওভাররাইড করুন। এই কমান্ডটি কম ঘনত্বের স্ক্রীন ব্যবহার করে উচ্চ-ঘনত্বের স্ক্রীন পরিবেশের অনুকরণ করে বিভিন্ন স্ক্রীনের ঘনত্ব জুড়ে আপনার অ্যাপ পরীক্ষা করার জন্য সহায়ক।

উদাহরণ:
am display-density 480

to-uri intent একটি URI হিসাবে প্রদত্ত অভিপ্রায় স্পেসিফিকেশন মুদ্রণ করুন.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

to-intent-uri intent প্রদত্ত অভিপ্রায় স্পেসিফিকেশন একটি intent: URI.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

উদ্দেশ্য আর্গুমেন্ট জন্য স্পেসিফিকেশন

অ্যাক্টিভিটি ম্যানেজার কমান্ডগুলির জন্য যা একটি intent যুক্তি গ্রহণ করে, আপনি নিম্নলিখিত বিকল্পগুলির সাথে অভিপ্রায় নির্দিষ্ট করতে পারেন:

প্যাকেজ ম্যানেজারকে কল করুন ( pm )

একটি adb শেলের মধ্যে, আপনি ডিভাইসে ইনস্টল করা অ্যাপ প্যাকেজগুলিতে অ্যাকশন এবং প্রশ্নগুলি সম্পাদন করতে প্যাকেজ ম্যানেজার ( pm ) টুলের সাহায্যে কমান্ড ইস্যু করতে পারেন।

একটি শেলে থাকাকালীন, pm সিনট্যাক্স হল:

pm command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি প্যাকেজ ম্যানেজার কমান্ড ইস্যু করতে পারেন। যেমন:

adb shell pm uninstall com.example.MyApp

সারণি 2. উপলব্ধ প্যাকেজ ম্যানেজার কমান্ড

আদেশ বর্ণনা
list packages [ options ] filter সমস্ত প্যাকেজ প্রিন্ট করুন, ঐচ্ছিকভাবে শুধুমাত্র যাদের প্যাকেজের নাম filter লেখা আছে।

বিকল্প:

  • -f : সংশ্লিষ্ট ফাইল দেখুন।
  • -d : শুধুমাত্র নিষ্ক্রিয় প্যাকেজ দেখাতে ফিল্টার করুন।
  • -e : শুধুমাত্র সক্ষম প্যাকেজগুলি দেখাতে ফিল্টার করুন।
  • -s : শুধুমাত্র সিস্টেম প্যাকেজ দেখাতে ফিল্টার করুন।
  • -3 : শুধুমাত্র তৃতীয় পক্ষের প্যাকেজ দেখাতে ফিল্টার করুন।
  • -i : প্যাকেজগুলির জন্য ইনস্টলার দেখুন।
  • -u : আনইনস্টল করা প্যাকেজ অন্তর্ভুক্ত করুন।
  • --user user_id : প্রশ্ন করার জন্য ব্যবহারকারীর স্থান।
list permission-groups সমস্ত পরিচিত অনুমতি গ্রুপ প্রিন্ট করুন.
list permissions [ options ] group সমস্ত পরিচিত অনুমতি প্রিন্ট করুন, ঐচ্ছিকভাবে শুধুমাত্র group থাকা।

বিকল্প:

  • -g : গ্রুপ দ্বারা সংগঠিত.
  • -f : সমস্ত তথ্য প্রিন্ট করুন।
  • -s : সংক্ষিপ্ত সারাংশ।
  • -d : শুধুমাত্র বিপজ্জনক অনুমতি তালিকা.
  • -u : শুধুমাত্র ব্যবহারকারীরা যে অনুমতিগুলি দেখতে পাবেন তা তালিকাভুক্ত করুন।
list instrumentation [ options ] সমস্ত পরীক্ষা প্যাকেজ তালিকা.

বিকল্প:

  • -f : পরীক্ষার প্যাকেজের জন্য APK ফাইলের তালিকা করুন।
  • target_package : শুধুমাত্র এই অ্যাপের জন্য পরীক্ষা প্যাকেজ তালিকা করুন।
list features সিস্টেমের সমস্ত বৈশিষ্ট্য মুদ্রণ করুন।
list libraries বর্তমান ডিভাইস দ্বারা সমর্থিত সমস্ত লাইব্রেরি প্রিন্ট করুন।
list users সিস্টেমে সমস্ত ব্যবহারকারী মুদ্রণ করুন।
path package প্রদত্ত package APK-এর পথ প্রিন্ট করুন।
install [ options ] path সিস্টেমে path দ্বারা নির্দিষ্ট একটি প্যাকেজ ইনস্টল করুন।

বিকল্প:

  • -r : একটি বিদ্যমান অ্যাপ পুনরায় ইনস্টল করুন, এর ডেটা রেখে।
  • -t : পরীক্ষার APK ইনস্টল করার অনুমতি দিন। আপনি যখন শুধুমাত্র আপনার অ্যাপটি চালান বা ডিবাগ করেন বা Android Studio Build > Build APK কমান্ড ব্যবহার করেন তখন Gradle একটি পরীক্ষামূলক APK তৈরি করে। যদি APK একটি ডেভেলপার প্রিভিউ SDK ব্যবহার করে তৈরি করা হয়, আপনি যদি একটি টেস্ট APK ইন্সটল করছেন তাহলে আপনাকে install কমান্ডের সাথে -t বিকল্পটি অন্তর্ভুক্ত করতে হবে।
  • -i installer_package_name : ইনস্টলার প্যাকেজের নাম উল্লেখ করুন।
  • --install-location location : নিম্নলিখিত মানগুলির একটি ব্যবহার করে ইনস্টল করার অবস্থান সেট করুন:
    • 0 : ডিফল্ট ইনস্টল অবস্থান ব্যবহার করুন.
    • 1 : অভ্যন্তরীণ ডিভাইস স্টোরেজ ইনস্টল করুন.
    • 2 : বাহ্যিক মিডিয়াতে ইনস্টল করুন।
  • -f : অভ্যন্তরীণ সিস্টেম মেমরিতে প্যাকেজ ইনস্টল করুন।
  • -d : সংস্করণ কোড ডাউনগ্রেড করার অনুমতি দিন।
  • -g : অ্যাপ ম্যানিফেস্টে তালিকাভুক্ত সমস্ত অনুমতি দিন।
  • --fastdeploy : পরিবর্তন করা APK-এর অংশগুলি আপডেট করে একটি ইনস্টল করা প্যাকেজ দ্রুত আপডেট করুন।
  • --incremental : ব্যাকগ্রাউন্ডে অবশিষ্ট ডেটা স্ট্রিম করার সময় অ্যাপটি চালু করার জন্য যথেষ্ট APK ইনস্টল করে। এই বৈশিষ্ট্যটি ব্যবহার করতে, আপনাকে অবশ্যই APK স্বাক্ষর করতে হবে, একটি APK স্বাক্ষর স্কিম v4 ফাইল তৈরি করতে হবে এবং এই ফাইলটিকে APK-এর মতো একই ডিরেক্টরিতে রাখতে হবে। এই বৈশিষ্ট্যটি শুধুমাত্র কিছু ডিভাইসে সমর্থিত। এই বিকল্পটি adb বৈশিষ্ট্যটি ব্যবহার করতে বাধ্য করে বা এটি সমর্থিত না হলে ব্যর্থ হয়, কেন এটি ব্যর্থ হয়েছে তার ভার্বস তথ্য সহ। APK-এ অ্যাক্সেস দেওয়ার আগে APK সম্পূর্ণরূপে ইনস্টল না হওয়া পর্যন্ত অপেক্ষা করতে --wait বিকল্পটি যোগ করুন।

    --no-incremental adb এই বৈশিষ্ট্যটি ব্যবহার করতে বাধা দেয়।

uninstall [ options ] package সিস্টেম থেকে একটি প্যাকেজ সরিয়ে দেয়।

বিকল্প:

  • -k : প্যাকেজ অপসারণের পরে ডেটা এবং ক্যাশে ডিরেক্টরি রাখুন।
  • --user user_id : সেই ব্যবহারকারীকে নির্দিষ্ট করে যার জন্য প্যাকেজটি সরানো হয়েছে।
  • --versionCode version_code : অ্যাপটিতে প্রদত্ত সংস্করণ কোড থাকলেই কেবল আনইনস্টল হয়।
clear package একটি প্যাকেজের সাথে যুক্ত সমস্ত ডেটা মুছুন।
enable package_or_component প্রদত্ত প্যাকেজ বা উপাদান সক্রিয় করুন ("প্যাকেজ/শ্রেণী" হিসাবে লেখা)।
disable package_or_component প্রদত্ত প্যাকেজ বা উপাদান অক্ষম করুন ("প্যাকেজ/শ্রেণী" হিসাবে লেখা)।
disable-user [ options ] package_or_component

বিকল্প:

  • --user user_id : অক্ষম করার জন্য ব্যবহারকারী।
grant package_name permission একটি অ্যাপের অনুমতি দিন। Android 6.0 (API লেভেল 23) এবং উচ্চতর চলমান ডিভাইসগুলিতে, অনুমতিটি অ্যাপ ম্যানিফেস্টে ঘোষিত যেকোনো অনুমতি হতে পারে। Android 5.1 (API লেভেল 22) এবং তার নিচে চলমান ডিভাইসগুলিতে অ্যাপ দ্বারা সংজ্ঞায়িত একটি ঐচ্ছিক অনুমতি থাকতে হবে।
revoke package_name permission একটি অ্যাপ্লিকেশন থেকে একটি অনুমতি প্রত্যাহার করুন. Android 6.0 (API লেভেল 23) এবং উচ্চতর চলমান ডিভাইসগুলিতে, অনুমতিটি অ্যাপ ম্যানিফেস্টে ঘোষিত যেকোনো অনুমতি হতে পারে। Android 5.1 (API লেভেল 22) এবং তার নিচে চলমান ডিভাইসগুলিতে অ্যাপ দ্বারা সংজ্ঞায়িত একটি ঐচ্ছিক অনুমতি থাকতে হবে।
set-install-location location ডিফল্ট ইনস্টল অবস্থান পরিবর্তন করুন. অবস্থান মান:
  • 0 : স্বয়ংক্রিয়: সিস্টেমকে সর্বোত্তম অবস্থান নির্ধারণ করতে দিন।
  • 1 : অভ্যন্তরীণ: অভ্যন্তরীণ ডিভাইস সঞ্চয়স্থানে ইনস্টল করুন।
  • 2 : বাহ্যিক: বাহ্যিক মিডিয়াতে ইনস্টল করুন।

দ্রষ্টব্য: এটি শুধুমাত্র ডিবাগ করার উদ্দেশ্যে করা হয়েছে। এটি ব্যবহার করলে অ্যাপগুলি ভেঙে যেতে পারে এবং অন্যান্য অবাঞ্ছিত আচরণ হতে পারে।

get-install-location বর্তমান ইনস্টলের অবস্থান ফেরত দেয়। রিটার্ন মান:
  • 0 [auto] : সিস্টেমকে সর্বোত্তম অবস্থান নির্ধারণ করতে দিন
  • 1 [internal] : অভ্যন্তরীণ ডিভাইস স্টোরেজে ইনস্টল করুন
  • 2 [external] : বাহ্যিক মিডিয়াতে ইনস্টল করুন
set-permission-enforced permission [true | false] প্রদত্ত অনুমতি প্রয়োগ করা উচিত কিনা তা উল্লেখ করুন।
trim-caches desired_free_space প্রদত্ত ফাঁকা জায়গায় পৌঁছানোর জন্য ক্যাশে ফাইল ট্রিম করুন।
create-user user_name প্রদত্ত user_name দিয়ে একটি নতুন ব্যবহারকারী তৈরি করুন, ব্যবহারকারীর নতুন ব্যবহারকারী শনাক্তকারী মুদ্রণ করুন।
remove-user user_id প্রদত্ত user_id সহ ব্যবহারকারীকে সরান, সেই ব্যবহারকারীর সাথে যুক্ত সমস্ত ডেটা মুছে দিন
get-max-users ডিভাইস দ্বারা সমর্থিত ব্যবহারকারীদের সর্বাধিক সংখ্যা প্রিন্ট করুন।
get-app-links [ options ] [ package ]

প্রদত্ত package জন্য ডোমেন যাচাইকরণ অবস্থা মুদ্রণ করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য। রাজ্য কোড নিম্নরূপ সংজ্ঞায়িত করা হয়:

  • none : এই ডোমেনের জন্য কিছুই রেকর্ড করা হয়নি
  • verified : ডোমেনটি সফলভাবে যাচাই করা হয়েছে
  • approved : বল-অনুমোদিত, সাধারণত শেল মাধ্যমে
  • denied : বলপ্রত্যাখ্যান, সাধারণত শেল মাধ্যমে
  • migrated : একটি উত্তরাধিকার প্রতিক্রিয়া থেকে যাচাইকরণ সংরক্ষিত
  • restored : ব্যবহারকারীর ডেটা পুনরুদ্ধার থেকে সংরক্ষিত যাচাইকরণ
  • legacy_failure : একটি উত্তরাধিকার যাচাইকারী দ্বারা প্রত্যাখ্যাত, অজানা কারণ
  • system_configured : ডিভাইস কনফিগারেশন দ্বারা স্বয়ংক্রিয়ভাবে অনুমোদিত
  • >= 1024 : কাস্টম ত্রুটি কোড, যা ডিভাইস যাচাইকারীর জন্য নির্দিষ্ট

বিকল্পগুলি হল:

  • --user user_id : ব্যবহারকারী নির্বাচন অন্তর্ভুক্ত করুন। সমস্ত ডোমেন অন্তর্ভুক্ত করুন, শুধুমাত্র স্বয়ংক্রিয় যাচাইকরণ নয়।
reset-app-links [ options ] [ package ]

প্রদত্ত প্যাকেজের জন্য ডোমেন যাচাইকরণ অবস্থা রিসেট করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য।

  • package : রিসেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ রিসেট করতে "সব"

বিকল্পগুলি হল:

  • --user user_id : ব্যবহারকারী নির্বাচন অন্তর্ভুক্ত করুন। সমস্ত ডোমেন অন্তর্ভুক্ত করুন, শুধুমাত্র স্বয়ংক্রিয় যাচাইকরণ নয়।
verify-app-links [ --re-verify ] [ package ]

প্রদত্ত package জন্য একটি যাচাইকরণের অনুরোধ সম্প্রচার করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য। প্যাকেজটি পূর্বে কোনো প্রতিক্রিয়া রেকর্ড না করলেই কেবল পাঠায়।

  • --re-verify : প্যাকেজটি একটি প্রতিক্রিয়া রেকর্ড করলেও পাঠান
set-app-links [--package package ] state domains

একটি প্যাকেজের জন্য একটি ডোমেনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা স্বয়ংক্রিয় যাচাই হিসাবে ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --package package : সেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ সেট করার জন্য "সব"
  • state : ডোমেন সেট করার জন্য কোড। বৈধ মান হল:
    • STATE_NO_RESPONSE (0) : রিসেট করুন যেন কোনো প্রতিক্রিয়া রেকর্ড করা হয়নি।
    • STATE_SUCCESS (1) : ডোমেনকে ডোমেন যাচাইকরণ এজেন্ট দ্বারা সফলভাবে যাচাই করা হিসাবে বিবেচনা করুন। মনে রাখবেন যে ডোমেন যাচাইকরণ এজেন্ট এটিকে ওভাররাইড করতে পারে।
    • STATE_APPROVED (2) : ডোমেনকে সর্বদা অনুমোদিত হিসাবে বিবেচনা করুন, ডোমেন যাচাইকরণ এজেন্টকে এটি পরিবর্তন করা থেকে বাধা দেয়।
    • STATE_DENIED (3) : ডোমেনকে সর্বদা অস্বীকৃত হিসাবে বিবেচনা করুন, ডোমেন যাচাইকরণ এজেন্টকে এটি পরিবর্তন করতে বাধা দেয়।
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"।
set-app-links-user-selection --user user_id [--package package ] enabled domains

একটি প্যাকেজের জন্য হোস্ট ব্যবহারকারী নির্বাচনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করা প্যাকেজ
  • enabled : ডোমেন অনুমোদন করতে হবে কিনা
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"
set-app-links-user-selection --user user_id [--package package ] enabled domains

একটি প্যাকেজের জন্য হোস্ট ব্যবহারকারী নির্বাচনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করা প্যাকেজ
  • enabled : ডোমেন অনুমোদন করতে হবে কিনা
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"
set-app-links-allowed --user user_id [--package package ] allowed

একটি প্যাকেজের জন্য স্বয়ংক্রিয়ভাবে যাচাই করা লিঙ্ক-হ্যান্ডলিং সেটিংটি টগল করুন।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ সেট করার জন্য "সব"; প্যাকেজ রিসেট করা হবে যদি কোনো প্যাকেজ নির্দিষ্ট করা না থাকে
  • allowed : প্যাকেজটিকে স্বয়ংক্রিয় যাচাই করা লিঙ্কগুলি খুলতে অনুমতি দেওয়ার জন্য সত্য, নিষ্ক্রিয় করার জন্য মিথ্যা৷
get-app-link-owners --user user_id [--package package ] domains

প্রদত্ত ব্যবহারকারীর জন্য একটি নির্দিষ্ট ডোমেনের জন্য মালিকদের প্রিন্ট করুন কম- থেকে উচ্চ-অগ্রাধিকার ক্রমে।

  • --user user_id : যে ব্যবহারকারীর জন্য প্রশ্ন করতে হবে
  • --package package : ঐচ্ছিকভাবে প্যাকেজ দ্বারা ঘোষিত সমস্ত ওয়েব ডোমেনের জন্যও মুদ্রণ করুন, বা সমস্ত প্যাকেজ প্রিন্ট করতে "সমস্ত"
  • domains : স্পেস-বিভক্ত ডোমেনের তালিকা যার জন্য অনুসন্ধান করতে হবে

ডিভাইস পলিসি ম্যানেজারকে কল করুন ( dpm )

আপনার ডিভাইস ম্যানেজমেন্ট অ্যাপ্লিকেশানগুলি বিকাশ এবং পরীক্ষা করতে আপনাকে সাহায্য করতে, ডিভাইস নীতি পরিচালক ( dpm ) টুলে কমান্ড ইস্যু করুন৷ সক্রিয় অ্যাডমিন অ্যাপ নিয়ন্ত্রণ করতে বা ডিভাইসে নীতির স্থিতি ডেটা পরিবর্তন করতে টুলটি ব্যবহার করুন।

একটি শেলে থাকাকালীন, dpm সিনট্যাক্স হল:

dpm command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি ডিভাইস নীতি পরিচালক কমান্ড ইস্যু করতে পারেন:

adb shell dpm command

সারণী 3. উপলব্ধ ডিভাইস পলিসি ম্যানেজার কমান্ড

আদেশ বর্ণনা
set-active-admin [ options ] component সক্রিয় প্রশাসক হিসাবে component সেট.

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
set-profile-owner [ options ] component একটি বিদ্যমান ব্যবহারকারীর জন্য সক্রিয় প্রশাসক হিসাবে component এবং প্রোফাইল মালিক হিসাবে এর প্যাকেজ সেট করুন।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
  • --name name : মানব-পাঠযোগ্য প্রতিষ্ঠানের নাম উল্লেখ করুন।
set-device-owner [ options ] component সক্রিয় প্রশাসক হিসাবে component এবং ডিভাইস মালিক হিসাবে এর প্যাকেজ সেট করুন।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
  • --name name : মানব-পাঠযোগ্য প্রতিষ্ঠানের নাম উল্লেখ করুন।
remove-active-admin [ options ] component একটি সক্রিয় অ্যাডমিন অক্ষম করুন। অ্যাপটিকে অবশ্যই ঘোষণা করতে হবে android:testOnly ম্যানিফেস্টে৷ এই কমান্ডটি ডিভাইস এবং প্রোফাইল মালিকদেরও সরিয়ে দেয়।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
clear-freeze-period-record সিস্টেম OTA আপডেটের জন্য পূর্বে সেট করা ফ্রিজ পিরিয়ডের ডিভাইসের রেকর্ড সাফ করুন। ফ্রিজ পিরিয়ড ম্যানেজ করে এমন অ্যাপ ডেভেলপ করার সময় ডিভাইসের সময় নির্ধারণের সীমাবদ্ধতা এড়াতে এটি কার্যকর। সিস্টেম আপডেটগুলি পরিচালনা করুন দেখুন।

Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

force-network-logs একটি DPC দ্বারা পুনরুদ্ধারের জন্য যেকোন বিদ্যমান নেটওয়ার্ক লগ প্রস্তুত করতে সিস্টেমটিকে বাধ্য করুন৷ সংযোগ বা DNS লগ উপলব্ধ থাকলে, DPC onNetworkLogsAvailable() কলব্যাক গ্রহণ করে। নেটওয়ার্ক কার্যকলাপ লগিং দেখুন.

এই কমান্ড হার-সীমিত. Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

force-security-logs ডিপিসি-তে বিদ্যমান নিরাপত্তা লগগুলি উপলব্ধ করতে সিস্টেমটিকে বাধ্য করুন৷ লগগুলি উপলব্ধ থাকলে, DPC onSecurityLogsAvailable() কলব্যাক গ্রহণ করে। লগ এন্টারপ্রাইজ ডিভাইস কার্যকলাপ দেখুন.

এই কমান্ড হার-সীমিত. Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

একটি স্ক্রিনশট নিন

screencap কমান্ডটি একটি ডিভাইস প্রদর্শনের স্ক্রিনশট নেওয়ার জন্য একটি শেল ইউটিলিটি।

একটি শেল থাকাকালীন, screencap সিনট্যাক্স হল:

screencap filename

কমান্ড লাইন থেকে screencap ব্যবহার করতে, নিম্নলিখিত লিখুন:

adb shell screencap /sdcard/screen.png

এখানে একটি উদাহরণ স্ক্রিনশট সেশন, স্ক্রিনশট ক্যাপচার করতে adb শেল ব্যবহার করে এবং ডিভাইস থেকে ফাইলটি ডাউনলোড করার জন্য pull কমান্ড:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

একটি ভিডিও রেকর্ড করুন

screenrecord কমান্ড হল একটি শেল ইউটিলিটি যা Android 4.4 (API লেভেল 19) এবং উচ্চতর চলমান ডিভাইসগুলির প্রদর্শন রেকর্ড করার জন্য। ইউটিলিটি একটি MPEG-4 ফাইলে স্ক্রীন কার্যকলাপ রেকর্ড করে। আপনি প্রচারমূলক বা প্রশিক্ষণ ভিডিও তৈরি করতে বা ডিবাগিং এবং পরীক্ষার জন্য এই ফাইলটি ব্যবহার করতে পারেন৷

একটি শেলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

screenrecord [options] filename

কমান্ড লাইন থেকে screenrecord ব্যবহার করতে, নিম্নলিখিত লিখুন:

adb shell screenrecord /sdcard/demo.mp4

Control+C টিপে স্ক্রীন রেকর্ডিং বন্ধ করুন। অন্যথায়, রেকর্ডিং স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় তিন মিনিটে বা --time-limit দ্বারা নির্ধারিত সময়সীমা।

আপনার ডিভাইসের স্ক্রীন রেকর্ড করা শুরু করতে, ভিডিও রেকর্ড করতে screenrecord কমান্ডটি চালান। তারপরে, হোস্ট কম্পিউটারে ডিভাইস থেকে ভিডিও ডাউনলোড করতে pull কমান্ডটি চালান। এখানে একটি উদাহরণ রেকর্ডিং সেশন:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

screenrecord ইউটিলিটি ডিভাইসের ডিসপ্লের আকৃতির অনুপাত বজায় রেখে আপনার অনুরোধ করা যেকোনো সমর্থিত রেজোলিউশন এবং বিট রেট রেকর্ড করতে পারে। ইউটিলিটি নেটিভ ডিসপ্লে রেজোলিউশনে রেকর্ড করে এবং ডিফল্টরূপে ওরিয়েন্টেশন, সর্বোচ্চ তিন মিনিটের দৈর্ঘ্য সহ।

screenrecord ইউটিলিটির সীমাবদ্ধতা:

  • ভিডিও ফাইলের সাথে অডিও রেকর্ড করা হয় না।
  • Wear OS চালিত ডিভাইসগুলির জন্য ভিডিও রেকর্ডিং উপলব্ধ নয়।
  • কিছু ডিভাইস তাদের নেটিভ ডিসপ্লে রেজোলিউশনে রেকর্ড করতে সক্ষম নাও হতে পারে। আপনি যদি স্ক্রীন রেকর্ডিংয়ে সমস্যার সম্মুখীন হন, তাহলে নিম্ন স্ক্রীন রেজোলিউশন ব্যবহার করার চেষ্টা করুন।
  • রেকর্ডিংয়ের সময় পর্দার ঘূর্ণন সমর্থিত নয়। রেকর্ডিংয়ের সময় যদি স্ক্রিনটি ঘোরে, তবে রেকর্ডিংয়ের কিছু স্ক্রীন কেটে যায়।

সারণী 4. screenrecord বিকল্প

অপশন বর্ণনা
--help কমান্ড সিনট্যাক্স এবং বিকল্পগুলি প্রদর্শন করুন
--size width x height ভিডিও আকার সেট করুন: 1280x720 । ডিফল্ট মান হল ডিভাইসের নেটিভ ডিসপ্লে রেজোলিউশন (যদি সমর্থিত হয়), না হলে 1280x720। সেরা ফলাফলের জন্য, আপনার ডিভাইসের অ্যাডভান্সড ভিডিও কোডিং (AVC) এনকোডার দ্বারা সমর্থিত আকার ব্যবহার করুন৷
--bit-rate rate ভিডিওর জন্য ভিডিও বিট রেট সেট করুন, প্রতি সেকেন্ডে মেগাবিট। ডিফল্ট মান হল 20Mbps। আপনি ভিডিওর গুণমান উন্নত করতে বিট রেট বাড়াতে পারেন, কিন্তু এটি করার ফলে বড় মুভি ফাইল হয়। নিম্নলিখিত উদাহরণটি রেকর্ডিং বিট রেট 6Mbps এ সেট করে:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time সেকেন্ডে সর্বোচ্চ রেকর্ডিং সময় সেট করুন। ডিফল্ট এবং সর্বোচ্চ মান হল 180 (3 মিনিট)।
--rotate আউটপুট 90 ডিগ্রি ঘোরান। এই বৈশিষ্ট্যটি পরীক্ষামূলক।
--verbose কমান্ড-লাইন স্ক্রিনে লগ তথ্য প্রদর্শন করুন। আপনি যদি এই বিকল্পটি সেট না করেন, ইউটিলিটি চলাকালীন কোনো তথ্য প্রদর্শন করে না।

অ্যাপের জন্য ART প্রোফাইল পড়ুন

অ্যান্ড্রয়েড 7.0 (এপিআই লেভেল 24) থেকে শুরু করে, অ্যান্ড্রয়েড রানটাইম (এআরটি) ইনস্টল করা অ্যাপের জন্য এক্সিকিউশন প্রোফাইল সংগ্রহ করে, যেগুলো অ্যাপ পারফরম্যান্স অপ্টিমাইজ করতে ব্যবহৃত হয়। অ্যাপ্লিকেশান স্টার্টআপের সময় কোন পদ্ধতিগুলি প্রায়শই কার্যকর করা হয় এবং কোন ক্লাসগুলি ব্যবহার করা হয় তা বোঝার জন্য সংগৃহীত প্রোফাইলগুলি পরীক্ষা করুন৷

দ্রষ্টব্য: এক্সিকিউশন প্রোফাইল ফাইলের নামটি পুনরুদ্ধার করা কেবল তখনই সম্ভব যদি আপনার ফাইল সিস্টেমে রুট অ্যাক্সেস থাকে, উদাহরণস্বরূপ, একটি এমুলেটরে।

প্রোফাইল তথ্যের একটি পাঠ্য ফর্ম তৈরি করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

adb shell cmd package dump-profiles package

উত্পাদিত ফাইল পুনরুদ্ধার করতে, ব্যবহার করুন:

adb pull /data/misc/profman/package.prof.txt

পরীক্ষার ডিভাইস রিসেট করুন

আপনি একাধিক পরীক্ষা ডিভাইস জুড়ে আপনার অ্যাপ পরীক্ষা করলে, পরীক্ষার মধ্যে আপনার ডিভাইস রিসেট করা উপকারী হতে পারে, উদাহরণস্বরূপ, ব্যবহারকারীর ডেটা সরাতে এবং পরীক্ষার পরিবেশ রিসেট করতে। আপনি testharness adb শেল কমান্ড ব্যবহার করে Android 10 (API লেভেল 29) বা উচ্চতর চলমান একটি টেস্ট ডিভাইসের ফ্যাক্টরি রিসেট করতে পারেন, যেমন দেখানো হয়েছে:

adb shell cmd testharness enable

testharness ব্যবহার করে ডিভাইসটি পুনরুদ্ধার করার সময়, ডিভাইসটি স্বয়ংক্রিয়ভাবে RSA কী ব্যাক আপ করে যা একটি স্থায়ী অবস্থানে বর্তমান ওয়ার্কস্টেশনের মাধ্যমে ডিবাগ করার অনুমতি দেয়। অর্থাৎ, ডিভাইসটি রিসেট করার পরে, ওয়ার্কস্টেশনটি ম্যানুয়ালি একটি নতুন কী নিবন্ধন না করেই ডিভাইসে ডিবাগ এবং adb কমান্ড ইস্যু করা চালিয়ে যেতে পারে।

উপরন্তু, আপনার অ্যাপের পরীক্ষা চালিয়ে যাওয়া সহজ এবং আরও নিরাপদ করতে সাহায্য করার জন্য, একটি ডিভাইস পুনরুদ্ধার করতে testharness ব্যবহার করে নিম্নলিখিত ডিভাইস সেটিংসও পরিবর্তন করে:

  • ডিভাইসটি নির্দিষ্ট সিস্টেম সেটিংস সেট আপ করে যাতে প্রাথমিক ডিভাইস সেটআপ উইজার্ডগুলি উপস্থিত না হয়৷ অর্থাৎ, ডিভাইসটি এমন একটি অবস্থায় প্রবেশ করে যেখান থেকে আপনি দ্রুত ইনস্টল, ডিবাগ এবং আপনার অ্যাপ পরীক্ষা করতে পারবেন।
  • সেটিংস:
    • লক স্ক্রিন অক্ষম করে।
    • জরুরী সতর্কতা অক্ষম করে।
    • অ্যাকাউন্টের জন্য স্বতঃ-সিঙ্ক অক্ষম করে।
    • স্বয়ংক্রিয় সিস্টেম আপডেট অক্ষম করে।
  • অন্যান্য:
    • পূর্ব-ইন্সটল করা নিরাপত্তা অ্যাপ অক্ষম করে।

আপনার অ্যাপটিকে testharness কমান্ডের ডিফল্ট সেটিংস সনাক্ত করতে এবং মানিয়ে নিতে হলে ActivityManager.isRunningInUserTestHarness() ব্যবহার করুন।

sqlite

sqlite3 SQLite ডাটাবেস পরীক্ষা করার জন্য sqlite কমান্ড-লাইন প্রোগ্রাম শুরু করে। এটি একটি টেবিলের বিষয়বস্তু প্রিন্ট করার জন্য .schema এবং বিদ্যমান টেবিলের জন্য SQL CREATE স্টেটমেন্ট প্রিন্ট করার জন্য .dump এর মতো কমান্ড অন্তর্ভুক্ত করে। আপনি কমান্ড লাইন থেকে SQLite কমান্ডগুলিও চালাতে পারেন, যেমন দেখানো হয়েছে:

$ adb -s emulator-5554 shell
$ sqlite3 /data/data/com.example.app/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions

দ্রষ্টব্য: শুধুমাত্র একটি SQLite ডাটাবেস অ্যাক্সেস করা সম্ভব যদি আপনার ফাইল সিস্টেমে রুট অ্যাক্সেস থাকে, উদাহরণস্বরূপ, একটি এমুলেটরে।

আরও তথ্যের জন্য, sqlite3 কমান্ড লাইন ডকুমেন্টেশন দেখুন।

adb USB ব্যাকএন্ড

অ্যাডবি সার্ভার দুটি ব্যাকএন্ডের মাধ্যমে ইউএসবি স্ট্যাকের সাথে ইন্টারঅ্যাক্ট করতে পারে। এটি হয় ওএস (উইন্ডোজ, লিনাক্স, বা ম্যাকওএস) এর নেটিভ ব্যাকএন্ড ব্যবহার করতে পারে অথবা এটি libusb ব্যাকএন্ড ব্যবহার করতে পারে। কিছু বৈশিষ্ট্য, যেমন attach , detach , এবং USB গতি সনাক্তকরণ, শুধুমাত্র libusb ব্যাকএন্ড ব্যবহার করার সময় উপলব্ধ।

আপনি ADB_LIBUSB পরিবেশ পরিবর্তনশীল ব্যবহার করে একটি ব্যাকএন্ড চয়ন করতে পারেন। এটি সেট না থাকলে, adb তার ডিফল্ট ব্যাকএন্ড ব্যবহার করে। ডিফল্ট আচরণ OS এর মধ্যে পরিবর্তিত হয়। ADB v34 দিয়ে শুরু করে, liubusb ব্যাকএন্ড ডিফল্টরূপে উইন্ডোজ ছাড়া সমস্ত OS-এ ব্যবহৃত হয়, যেখানে নেটিভ ব্যাকএন্ড ডিফল্টরূপে ব্যবহৃত হয়। যদি ADB_LIBUSB সেট করা থাকে, তাহলে এটি নির্ধারণ করে যে নেটিভ ব্যাকএন্ড বা libusb ব্যবহার করা হবে কিনা। adb পরিবেশ ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য adb ম্যানুয়াল পৃষ্ঠাটি দেখুন।

adb mDNS ব্যাকএন্ড

সার্ভার এবং ডিভাইসগুলিকে স্বয়ংক্রিয়ভাবে সংযুক্ত করতে ADB মাল্টিকাস্ট ডিএনএস প্রোটোকল ব্যবহার করতে পারে। ADB সার্ভার দুটি ব্যাকএন্ড, Bonjour (Apple এর mdnsResponder) এবং Openscreen সহ পাঠানো হয়।

হোস্ট মেশিনে চলার জন্য Bonjour ব্যাকএন্ডের একটি ডেমন প্রয়োজন। MacOS অ্যাপলের অন্তর্নির্মিত ডেমন সর্বদা চলমান থাকে, তবে উইন্ডোজ এবং লিনাক্সে, ব্যবহারকারীকে নিশ্চিত করতে হবে যে mdnsd ডেমন চালু আছে এবং চলছে। যদি adb mdns check কমান্ড একটি ত্রুটি প্রদান করে, তাহলে সম্ভবত ADB Bonjour ব্যাকএন্ড ব্যবহার করছে কিন্তু কোন Bonjour ডেমন চলছে না।

ওপেনস্ক্রিন ব্যাকএন্ডের মেশিনে চলার জন্য ডেমনের প্রয়োজন নেই। MacOS-এ ওপেনস্ক্রিন ব্যাকএন্ডের জন্য সমর্থন ADB v35 থেকে শুরু হয়। উইন্ডোজ এবং লিনাক্স ADB v34 হিসাবে সমর্থিত।

ডিফল্টরূপে ADB Bonjour ব্যাকএন্ড ব্যবহার করে। পরিবেশ পরিবর্তনশীল ADB_MDNS_OPENSCREEN ( 1 বা 0 এ সেট) ব্যবহার করে এই আচরণ পরিবর্তন করা যেতে পারে। আরও বিস্তারিত জানার জন্য ADB ম্যানুয়াল পৃষ্ঠা দেখুন।

,

অ্যান্ড্রয়েড ডিবাগ ব্রিজ ( adb ) একটি বহুমুখী কমান্ড-লাইন টুল যা আপনাকে একটি ডিভাইসের সাথে যোগাযোগ করতে দেয়। adb কমান্ড বিভিন্ন ধরনের ডিভাইস অ্যাকশনের সুবিধা দেয়, যেমন অ্যাপ ইনস্টল করা এবং ডিবাগ করা। adb একটি ইউনিক্স শেল অ্যাক্সেস প্রদান করে যা আপনি একটি ডিভাইসে বিভিন্ন কমান্ড চালানোর জন্য ব্যবহার করতে পারেন। এটি একটি ক্লায়েন্ট-সার্ভার প্রোগ্রাম যা তিনটি উপাদান অন্তর্ভুক্ত করে:

  • একটি ক্লায়েন্ট , যা কমান্ড পাঠায়। ক্লায়েন্ট আপনার ডেভেলপমেন্ট মেশিনে চলে। আপনি একটি adb কমান্ড জারি করে একটি কমান্ড-লাইন টার্মিনাল থেকে একটি ক্লায়েন্টকে আহ্বান করতে পারেন।
  • একটি ডেমন (adbd) , যা একটি ডিভাইসে কমান্ড চালায়। ডেমন প্রতিটি ডিভাইসে একটি পটভূমি প্রক্রিয়া হিসাবে চলে।
  • একটি সার্ভার , যা ক্লায়েন্ট এবং ডেমনের মধ্যে যোগাযোগ পরিচালনা করে। সার্ভারটি আপনার ডেভেলপমেন্ট মেশিনে একটি ব্যাকগ্রাউন্ড প্রক্রিয়া হিসাবে চলে।

adb অ্যান্ড্রয়েড SDK প্ল্যাটফর্ম টুলস প্যাকেজে অন্তর্ভুক্ত। SDK ম্যানেজার দিয়ে এই প্যাকেজটি ডাউনলোড করুন, যা এটিকে android_sdk /platform-tools/ এ ইনস্টল করে। আপনি যদি স্বতন্ত্র অ্যান্ড্রয়েড SDK প্ল্যাটফর্ম টুলস প্যাকেজ চান তবে এটি এখানে ডাউনলোড করুন

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

কিভাবে adb কাজ করে

আপনি যখন একটি adb ক্লায়েন্ট শুরু করেন, ক্লায়েন্ট প্রথমে পরীক্ষা করে যে একটি adb সার্ভার প্রক্রিয়া ইতিমধ্যেই চলছে কিনা। যদি না থাকে তবে এটি সার্ভার প্রক্রিয়া শুরু করে। যখন সার্ভার শুরু হয়, তখন এটি স্থানীয় TCP পোর্ট 5037 এর সাথে আবদ্ধ হয় এবং adb ক্লায়েন্টদের থেকে পাঠানো কমান্ড শোনে।

দ্রষ্টব্য: সমস্ত adb ক্লায়েন্ট adb সার্ভারের সাথে যোগাযোগ করতে পোর্ট 5037 ব্যবহার করে।

সার্ভার তারপর সমস্ত চলমান ডিভাইসের সাথে সংযোগ স্থাপন করে। এটি 5555 থেকে 5585 রেঞ্জের মধ্যে বিজোড়-সংখ্যাযুক্ত পোর্ট স্ক্যান করে এমুলেটরগুলি সনাক্ত করে, যা প্রথম 16টি এমুলেটর দ্বারা ব্যবহৃত পরিসর। যেখানে সার্ভার একটি adb ডেমন (adbd) খুঁজে পায়, এটি সেই পোর্টের সাথে একটি সংযোগ স্থাপন করে।

প্রতিটি এমুলেটর একজোড়া ক্রমিক পোর্ট ব্যবহার করে — কনসোল সংযোগের জন্য একটি জোড়-সংখ্যাযুক্ত পোর্ট এবং adb সংযোগের জন্য একটি বিজোড়-সংখ্যাযুক্ত পোর্ট। যেমন:

এমুলেটর 1, কনসোল: 5554
এমুলেটর 1, adb : 5555
এমুলেটর 2, কনসোল: 5556
এমুলেটর 2, adb : 5557
এবং তাই

যেমন দেখানো হয়েছে, পোর্ট 5555-এ adb এর সাথে সংযুক্ত এমুলেটরটি সেই এমুলেটরের মতো যার কনসোল পোর্ট 5554-এ শোনে।

একবার সার্ভার সমস্ত ডিভাইসে সংযোগ স্থাপন করে, আপনি সেই ডিভাইসগুলি অ্যাক্সেস করতে adb কমান্ড ব্যবহার করতে পারেন। যেহেতু সার্ভারটি ডিভাইসের সাথে সংযোগ পরিচালনা করে এবং একাধিক adb ক্লায়েন্ট থেকে কমান্ড পরিচালনা করে, আপনি যেকোনো ক্লায়েন্ট বা স্ক্রিপ্ট থেকে যেকোনো ডিভাইস নিয়ন্ত্রণ করতে পারেন।

আপনার ডিভাইসে অ্যাডবি ডিবাগিং সক্ষম করুন

USB-এর মাধ্যমে সংযুক্ত একটি ডিভাইসের সাথে adb ব্যবহার করতে, আপনাকে অবশ্যই বিকাশকারী বিকল্পগুলির অধীনে ডিভাইস সিস্টেম সেটিংসে USB ডিবাগিং সক্ষম করতে হবে৷ Android 4.2 (API স্তর 17) এবং উচ্চতর, বিকাশকারী বিকল্পগুলির স্ক্রীনটি ডিফল্টরূপে লুকানো থাকে৷ এটি দৃশ্যমান করতে, বিকাশকারী বিকল্পগুলি সক্ষম করুন৷

আপনি এখন USB দিয়ে আপনার ডিভাইস সংযোগ করতে পারেন। আপনি android_sdk /platform-tools/ ডিরেক্টরি থেকে adb devices সম্পাদন করে আপনার ডিভাইসটি সংযুক্ত কিনা তা যাচাই করতে পারেন। সংযুক্ত থাকলে, আপনি "ডিভাইস" হিসাবে তালিকাভুক্ত ডিভাইসের নাম দেখতে পাবেন।

দ্রষ্টব্য: আপনি যখন Android 4.2.2 (API স্তর 17) বা উচ্চতর চলমান একটি ডিভাইস সংযুক্ত করেন, তখন সিস্টেমটি একটি ডায়ালগ দেখায় যা জিজ্ঞাসা করে যে একটি RSA কী গ্রহণ করবেন কিনা যা এই কম্পিউটারের মাধ্যমে ডিবাগ করার অনুমতি দেয়৷ এই নিরাপত্তা ব্যবস্থা ব্যবহারকারীর ডিভাইসগুলিকে রক্ষা করে কারণ এটি নিশ্চিত করে যে USB ডিবাগিং এবং অন্যান্য adb কমান্ডগুলি কার্যকর করা যাবে না যদি না আপনি ডিভাইসটি আনলক করতে এবং ডায়ালগটি স্বীকার করতে সক্ষম হন।

USB এর মাধ্যমে একটি ডিভাইসের সাথে সংযোগ করার বিষয়ে আরও তথ্যের জন্য, একটি হার্ডওয়্যার ডিভাইসে অ্যাপ্লিকেশন চালান পড়ুন।

Wi-Fi এর মাধ্যমে একটি ডিভাইসের সাথে সংযোগ করুন৷

দ্রষ্টব্য: নীচের নির্দেশাবলী Android 11 (API স্তর 30) চালিত Wear ডিভাইসগুলিতে প্রযোজ্য নয়। আরও তথ্যের জন্য একটি Wear OS অ্যাপ ডিবাগ করার নির্দেশিকা দেখুন।

অ্যান্ড্রয়েড 11 (এপিআই লেভেল 30) এবং উচ্চতর সমর্থন অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) ব্যবহার করে আপনার ওয়ার্কস্টেশন থেকে ওয়্যারলেসভাবে আপনার অ্যাপ স্থাপন এবং ডিবাগ করা। উদাহরণস্বরূপ, আপনি USB এর মাধ্যমে আপনার ডিভাইসটিকে শারীরিকভাবে সংযুক্ত করার প্রয়োজন ছাড়াই একাধিক দূরবর্তী ডিভাইসে আপনার ডিবাগযোগ্য অ্যাপ স্থাপন করতে পারেন। এটি ড্রাইভার ইনস্টলেশনের মতো সাধারণ USB সংযোগ সমস্যাগুলি মোকাবেলা করার প্রয়োজনীয়তা দূর করে।

আপনি ওয়্যারলেস ডিবাগিং ব্যবহার শুরু করার আগে, নিম্নলিখিতগুলি করুন:

  • আপনার ওয়ার্কস্টেশন এবং ডিভাইস একই ওয়্যারলেস নেটওয়ার্কের সাথে সংযুক্ত আছে তা নিশ্চিত করুন।

  • নিশ্চিত করুন যে আপনার ডিভাইসটি Android 11 (API লেভেল 30) বা ফোনের জন্য উচ্চতর বা Android 13 (API লেভেল 33) বা TV এবং WearOS-এর জন্য উচ্চতর চালাচ্ছে। আরও তথ্যের জন্য, আপনার অ্যান্ড্রয়েড সংস্করণ দেখুন এবং আপডেট করুন

  • যদি IDE ব্যবহার করেন, তাহলে নিশ্চিত করুন যে আপনার Android Studio এর সর্বশেষ সংস্করণ ইনস্টল করা আছে। আপনি এখানে এটি ডাউনলোড করতে পারেন.

  • আপনার ওয়ার্কস্টেশনে, SDK প্ল্যাটফর্ম টুলের সর্বশেষ সংস্করণে আপডেট করুন।

ওয়্যারলেস ডিবাগিং ব্যবহার করতে, আপনাকে অবশ্যই একটি QR কোড বা একটি পেয়ারিং কোড ব্যবহার করে আপনার ডিভাইসটিকে আপনার ওয়ার্কস্টেশনের সাথে যুক্ত করতে হবে৷ আপনার ওয়ার্কস্টেশন এবং ডিভাইস অবশ্যই একই ওয়্যারলেস নেটওয়ার্কের সাথে সংযুক্ত থাকতে হবে। আপনার ডিভাইসের সাথে সংযোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার ডিভাইসে বিকাশকারী বিকল্পগুলি সক্ষম করুন

  2. অ্যান্ড্রয়েড স্টুডিও খুলুন এবং রান কনফিগারেশন মেনু থেকে Wi-Fi ব্যবহার করে ডিভাইস জোড়া নির্বাচন করুন।

    কনফিগারেশন ড্রপডাউন মেনু চালান
    চিত্র 1. কনফিগারেশন মেনু চালান।

    Wi-Fi উইন্ডোতে জোড়া ডিভাইসগুলি পপ আপ হয়, যেমন চিত্র 2 এ দেখানো হয়েছে।

    Wi-Fi পপআপ উইন্ডোতে জোড়া ডিভাইসের স্ক্রিনশট
    চিত্র 2. QR কোড বা পেয়ারিং কোড ব্যবহার করে ডিভাইস জোড়ার জন্য পপআপ উইন্ডো।
  3. আপনার ডিভাইসে, ওয়্যারলেস ডিবাগিং আলতো চাপুন এবং আপনার ডিভাইস যুক্ত করুন:

    একটি পিক্সেল ফোনের স্ক্রিনশট ওয়্যারলেস ডিবাগিং সিস্টেম সেটিং দেখাচ্ছে৷
    চিত্র 3. Google Pixel ফোনে ওয়্যারলেস ডিবাগিং সেটিংসের স্ক্রিনশট।
    1. আপনার ডিভাইসটিকে একটি QR কোডের সাথে পেয়ার করতে, QR কোডের সাথে পেয়ার ডিভাইস নির্বাচন করুন এবং চিত্র 2-এ দেখানো Wi-Fi পপআপের মাধ্যমে পেয়ার ডিভাইসগুলি থেকে প্রাপ্ত QR কোডটি স্ক্যান করুন৷

    2. পেয়ারিং কোডের সাথে আপনার ডিভাইস পেয়ার করতে, Wi-Fi পপআপের মাধ্যমে পেয়ার ডিভাইস থেকে পেয়ারিং কোডের সাথে পেয়ার ডিভাইস নির্বাচন করুন। আপনার ডিভাইসে, পেয়ারিং কোড ব্যবহার করে পেয়ার নির্বাচন করুন এবং প্রদত্ত ছয়-সংখ্যার কোডটি নোট করুন। একবার আপনার ডিভাইসটি Wi-Fi উইন্ডোতে পেয়ার ডিভাইসে প্রদর্শিত হলে, আপনি পেয়ার নির্বাচন করতে পারেন এবং আপনার ডিভাইসে দেখানো ছয়-সংখ্যার কোডটি প্রবেশ করতে পারেন।

      পিন কোড এন্ট্রির উদাহরণের স্ক্রিনশট
      চিত্র 4. ছয় সংখ্যার কোড এন্ট্রির উদাহরণ।
  4. আপনার ডিভাইস যুক্ত হওয়ার পরে, আপনি আপনার ডিভাইসে আপনার অ্যাপ স্থাপন করার চেষ্টা করতে পারেন।

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

  5. আপনি যদি ওয়্যারলেস ডিবাগিং দ্রুত চালু এবং বন্ধ করতে চান, আপনি ওয়্যারলেস ডিবাগিংয়ের জন্য দ্রুত সেটিংস ডেভেলপার টাইলস ব্যবহার করতে পারেন, যা বিকাশকারী বিকল্প > দ্রুত সেটিংস বিকাশকারী টাইলস- এ পাওয়া যায়।

    একটি Google Pixel ফোন থেকে দ্রুত সেটিংস ডেভেলপার টাইলসের স্ক্রিনশট।
    চিত্র 5. দ্রুত সেটিংস বিকাশকারী টাইলস সেটিং আপনাকে দ্রুত ওয়্যারলেস ডিবাগিং চালু এবং বন্ধ করতে দেয়।

কমান্ড লাইন ব্যবহার করে Wi-Fi সংযোগ

বিকল্পভাবে, অ্যান্ড্রয়েড স্টুডিও ছাড়া কমান্ড লাইন ব্যবহার করে আপনার ডিভাইসে সংযোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার ডিভাইসে বিকাশকারী বিকল্পগুলি সক্ষম করুন, যেমনটি আগে বর্ণিত হয়েছে৷

  2. আপনার ডিভাইসে ওয়্যারলেস ডিবাগিং সক্ষম করুন, যেমনটি আগে বর্ণিত হয়েছে।

  3. আপনার ওয়ার্কস্টেশনে, একটি টার্মিনাল উইন্ডো খুলুন এবং android_sdk/platform-tools এ নেভিগেট করুন।

  4. পেয়ারিং কোডের সাথে পেয়ার ডিভাইস নির্বাচন করে আপনার IP ঠিকানা, পোর্ট নম্বর এবং পেয়ারিং কোড খুঁজুন। ডিভাইসে প্রদর্শিত IP ঠিকানা, পোর্ট নম্বর এবং পেয়ারিং কোড নোট করুন।

  5. আপনার ওয়ার্কস্টেশনের টার্মিনালে, adb pair ipaddr:port চালান। উপরে থেকে আইপি ঠিকানা এবং পোর্ট নম্বর ব্যবহার করুন।

  6. অনুরোধ করা হলে, পেয়ারিং কোড লিখুন, যেমন নীচে দেখানো হয়েছে।

    কমান্ড লাইনে জোড়ার স্ক্রিনশট।
    চিত্র 6. একটি বার্তা নির্দেশ করে যে আপনার ডিভাইসটি সফলভাবে জোড়া হয়েছে৷

বেতার সংযোগ সমস্যা সমাধান করুন

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

আপনার ওয়ার্কস্টেশন এবং ডিভাইস পূর্বশর্তগুলি পূরণ করে কিনা তা পরীক্ষা করুন

ওয়ার্কস্টেশন এবং ডিভাইস এই বিভাগের শুরুতে তালিকাভুক্ত পূর্বশর্তগুলি পূরণ করে কিনা তা পরীক্ষা করুন৷

অন্যান্য পরিচিত সমস্যা জন্য পরীক্ষা করুন

ওয়্যারলেস ডিবাগিং (এডিবি বা অ্যান্ড্রয়েড স্টুডিও সহ) এবং কীভাবে সেগুলি সমাধান করা যায় তার বর্তমান পরিচিত সমস্যাগুলির একটি তালিকা নীচে দেওয়া হল:

  • Wi-Fi সংযোগ হচ্ছে না : নিরাপদ Wi-Fi নেটওয়ার্ক, যেমন কর্পোরেট ওয়াই-ফাই নেটওয়ার্ক, p2p সংযোগগুলি ব্লক করতে পারে এবং আপনাকে Wi-Fi এর মাধ্যমে সংযোগ করতে দেয় না৷ একটি কেবল বা অন্য (নন-কর্প) Wi-Fi নেটওয়ার্কের সাথে সংযোগ করার চেষ্টা করুন৷ adb connect ip : port ওভার টিসিপি/আইপি (প্রাথমিক ইউএসবি কানেকশন অনুসরণ করে) আরেকটি বিকল্প, যদি নন-কর্প নেটওয়ার্ক অবলম্বন করা একটি বিকল্প।

  • adb ওভার Wi-Fi কখনও কখনও স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় : ডিভাইসটি Wi-Fi নেটওয়ার্ক সুইচ করলে বা নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন হলে এটি ঘটতে পারে৷ সমাধান করতে, নেটওয়ার্কে পুনরায় সংযোগ করুন৷

  • সফলভাবে জোড়া লাগানোর পর ডিভাইস সংযোগ হচ্ছে না : adb জোড়া ডিভাইস আবিষ্কার করতে এবং স্বয়ংক্রিয়ভাবে সংযোগ করতে mDNS-এর উপর নির্ভর করে। যদি আপনার নেটওয়ার্ক বা ডিভাইস কনফিগারেশন mDNS সমর্থন না করে বা এটি নিষ্ক্রিয় করে থাকে, তাহলে আপনাকে adb connect ip : port ব্যবহার করে ডিভাইসের সাথে ম্যানুয়ালি সংযোগ করতে হবে।

একটি প্রাথমিক USB সংযোগের পরে একটি ডিভাইসের সাথে ওয়্যারলেসভাবে সংযোগ করুন (কেবলমাত্র Android 10 এবং তার নিচের সংস্করণগুলিতে উপলব্ধ)

দ্রষ্টব্য: এই ওয়ার্কফ্লোটি Android 11 (এবং উচ্চতর) এর ক্ষেত্রেও প্রযোজ্য, সতর্কতা হল যে এটিতে একটি *প্রাথমিক* সংযোগও রয়েছে।

দ্রষ্টব্য: নিম্নলিখিত নির্দেশাবলী Android 10 (API স্তর 29) বা তার নিচের চলমান Wear ডিভাইসগুলিতে প্রযোজ্য নয়৷ আরও তথ্যের জন্য একটি Wear OS অ্যাপ ডিবাগ করার নির্দেশিকা দেখুন।

adb সাধারণত USB এর মাধ্যমে ডিভাইসের সাথে যোগাযোগ করে, তবে আপনি Wi-Fi এর মাধ্যমে adb ব্যবহার করতে পারেন। অ্যান্ড্রয়েড 10 (এপিআই লেভেল 29) বা তার নিচে চলমান একটি ডিভাইস সংযোগ করতে, ইউএসবি-তে এই প্রাথমিক পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার অ্যান্ড্রয়েড ডিভাইস এবং adb হোস্ট কম্পিউটারকে একটি সাধারণ ওয়াই-ফাই নেটওয়ার্কে সংযুক্ত করুন৷
  2. দ্রষ্টব্য: সতর্ক থাকুন যে সমস্ত অ্যাক্সেস পয়েন্ট উপযুক্ত নয়। আপনাকে একটি অ্যাক্সেস পয়েন্ট ব্যবহার করতে হতে পারে যার ফায়ারওয়াল adb সমর্থন করার জন্য সঠিকভাবে কনফিগার করা হয়েছে।

  3. একটি USB তারের সাহায্যে হোস্ট কম্পিউটারের সাথে ডিভাইসটিকে সংযুক্ত করুন৷
  4. পোর্ট 5555 এ একটি TCP/IP সংযোগের জন্য শোনার জন্য লক্ষ্য ডিভাইস সেট করুন:
    adb tcpip 5555
    
  5. লক্ষ্য ডিভাইস থেকে USB তারের সংযোগ বিচ্ছিন্ন করুন.
  6. অ্যান্ড্রয়েড ডিভাইসের আইপি ঠিকানা খুঁজুন। উদাহরণস্বরূপ, একটি Nexus ডিভাইসে, আপনি সেটিংস > ট্যাবলেট সম্পর্কে (বা ফোন সম্পর্কে ) > স্থিতি > IP ঠিকানাতে IP ঠিকানা খুঁজে পেতে পারেন।
  7. আইপি ঠিকানা দ্বারা ডিভাইসের সাথে সংযোগ করুন:
    adb connect device_ip_address:5555
    
  8. নিশ্চিত করুন যে আপনার হোস্ট কম্পিউটার লক্ষ্য ডিভাইসের সাথে সংযুক্ত আছে:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

আপনার ডিভাইস এখন adb এর সাথে সংযুক্ত।

আপনার ডিভাইসে adb সংযোগ হারিয়ে গেলে:

  • নিশ্চিত করুন যে আপনার হোস্ট এখনও আপনার Android ডিভাইসের মতো একই Wi-Fi নেটওয়ার্কের সাথে সংযুক্ত রয়েছে৷
  • adb connect ধাপটি আবার সম্পাদন করে পুনরায় সংযোগ করুন।
  • যদি এটি কাজ না করে, আপনার adb হোস্ট রিসেট করুন:
    adb kill-server
    

    তারপর আবার শুরু থেকে শুরু করুন।

ডিভাইসের জন্য ক্যোয়ারী

adb কমান্ড ইস্যু করার আগে, adb সার্ভারের সাথে কোন ডিভাইসের দৃষ্টান্ত সংযুক্ত আছে তা জেনে নেওয়া সহায়ক। devices কমান্ড ব্যবহার করে সংযুক্ত ডিভাইসের একটি তালিকা তৈরি করুন:

  adb devices -l
  

প্রতিক্রিয়া হিসাবে, adb প্রতিটি ডিভাইসের জন্য এই স্থিতি তথ্য মুদ্রণ করে:

  • সিরিয়াল নম্বর: adb ডিভাইসটিকে তার পোর্ট নম্বর দ্বারা অনন্যভাবে সনাক্ত করার জন্য একটি স্ট্রিং তৈরি করে। এখানে একটি উদাহরণ সিরিয়াল নম্বর: emulator-5554
  • অবস্থা: ডিভাইসের সংযোগের অবস্থা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
    • offline : ডিভাইসটি adb এর সাথে সংযুক্ত নয় বা সাড়া দিচ্ছে না।
    • device : ডিভাইসটি adb সার্ভারের সাথে সংযুক্ত। মনে রাখবেন যে এই অবস্থাটি বোঝায় না যে অ্যান্ড্রয়েড সিস্টেমটি সম্পূর্ণরূপে বুট হয়েছে এবং চালু আছে, কারণ সিস্টেমটি বুট করার সময় ডিভাইসটি adb এর সাথে সংযোগ করে। বুট-আপের পরে, এটি একটি ডিভাইসের স্বাভাবিক অপারেশনাল অবস্থা।
    • no device : কোনো ডিভাইস সংযুক্ত নেই।
  • বর্ণনা: আপনি যদি -l বিকল্পটি অন্তর্ভুক্ত করেন, devices কমান্ড আপনাকে বলে যে ডিভাইসটি কী। এই তথ্যটি সহায়ক যখন আপনার একাধিক ডিভাইস সংযুক্ত থাকে যাতে আপনি তাদের আলাদা করে বলতে পারেন৷

নিম্নলিখিত উদাহরণটি devices কমান্ড এবং এর আউটপুট দেখায়। তিনটি ডিভাইস চলছে। তালিকার প্রথম দুটি লাইন হল এমুলেটর, এবং তৃতীয় লাইন হল একটি হার্ডওয়্যার ডিভাইস যা কম্পিউটারের সাথে সংযুক্ত।

$ adb devices
List of devices attached
emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64
emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86
0a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo

এমুলেটর তালিকাভুক্ত নয়

adb devices কমান্ডের একটি কর্নার-কেস কমান্ড সিকোয়েন্স রয়েছে যার কারণে এমুলেটরগুলি আপনার ডেস্কটপে দৃশ্যমান থাকা সত্ত্বেও চলমান এমুলেটরগুলি adb devices আউটপুটে দেখা যায় না। এটি ঘটে যখন নিম্নলিখিত সমস্ত শর্ত সত্য হয়:

  • adb সার্ভার চলছে না।
  • আপনি 5554 এবং 5584 এর মধ্যে বিজোড়-সংখ্যাযুক্ত পোর্ট মান সহ -port বা -ports বিকল্পের সাথে emulator কমান্ডটি ব্যবহার করেন।
  • আপনার বেছে নেওয়া বিজোড়-সংখ্যার পোর্টটি ব্যস্ত নয়, তাই পোর্ট সংযোগটি নির্দিষ্ট পোর্ট নম্বরে করা যেতে পারে — অথবা, যদি এটি ব্যস্ত থাকে, তাহলে এমুলেটরটি অন্য পোর্টে স্যুইচ করে যা 2-এ প্রয়োজনীয়তা পূরণ করে।
  • আপনি এমুলেটর শুরু করার পরে আপনি adb সার্ভার শুরু করবেন।

এই পরিস্থিতি এড়াতে একটি উপায় হল এমুলেটরকে তার নিজস্ব পোর্ট বেছে নিতে দেওয়া এবং একবারে 16 টির বেশি এমুলেটর চালানো না। আরেকটি উপায় হল emulator কমান্ড ব্যবহার করার আগে সর্বদা adb সার্ভার চালু করা, যেমনটি নিম্নলিখিত উদাহরণগুলিতে ব্যাখ্যা করা হয়েছে।

উদাহরণ 1: নিম্নলিখিত কমান্ডের ক্রমানুসারে, adb devices কমান্ড adb সার্ভার শুরু করে, কিন্তু ডিভাইসের তালিকা প্রদর্শিত হয় না।

adb সার্ভার বন্ধ করুন এবং দেখানো ক্রমে নিম্নলিখিত কমান্ড লিখুন। AVD নামের জন্য, আপনার সিস্টেম থেকে একটি বৈধ AVD নাম প্রদান করুন। AVD নামের একটি তালিকা পেতে, emulator -list-avds টাইপ করুন। emulator কমান্ডটি android_sdk /tools ডিরেক্টরিতে রয়েছে।

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5555
$ adb devices

List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

উদাহরণ 2: নিম্নলিখিত কমান্ড ক্রমানুসারে, adb devices ডিভাইসের তালিকা প্রদর্শন করে কারণ adb সার্ভারটি প্রথমে শুরু হয়েছিল।

adb devices আউটপুটে এমুলেটর দেখতে, adb সার্ভার বন্ধ করুন এবং তারপরে emulator কমান্ড ব্যবহার করার পরে এবং adb devices কমান্ড ব্যবহার করার আগে এটি আবার শুরু করুন, নিম্নরূপ:

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5557
$ adb start-server
$ adb devices

List of devices attached
emulator-5557 device

এমুলেটর কমান্ড-লাইন বিকল্পগুলি সম্পর্কে আরও তথ্যের জন্য, কমান্ড-লাইন স্টার্টআপ বিকল্পগুলি দেখুন।

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

একাধিক ডিভাইস চলমান থাকলে, adb কমান্ড ইস্যু করার সময় আপনাকে অবশ্যই লক্ষ্য ডিভাইসটি নির্দিষ্ট করতে হবে। লক্ষ্য নির্দিষ্ট করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. লক্ষ্যের সিরিয়াল নম্বর পেতে devices কমান্ড ব্যবহার করুন।
  2. আপনার সিরিয়াল নম্বর হয়ে গেলে, সিরিয়াল নম্বর নির্দিষ্ট করতে adb কমান্ডের সাথে -s বিকল্পটি ব্যবহার করুন।
    1. আপনি যদি অনেকগুলি adb কমান্ড ইস্যু করতে যাচ্ছেন, তাহলে আপনি ক্রমিক নম্বর ধারণ করার জন্য $ANDROID_SERIAL পরিবেশ পরিবর্তনশীল সেট করতে পারেন।
    2. আপনি যদি -s এবং $ANDROID_SERIAL উভয়ই ব্যবহার করেন, -s ওভাররাইড করে $ANDROID_SERIAL

নিম্নলিখিত উদাহরণে, সংযুক্ত ডিভাইসের তালিকা পাওয়া যায়, এবং তারপরে সেই ডিভাইসে helloWorld.apk ইনস্টল করতে ডিভাইসগুলির একটির সিরিয়াল নম্বর ব্যবহার করা হয়:

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
0.0.0.0:6520  device

# To install on emulator-5555
$ adb -s emulator-5555 install helloWorld.apk
# To install on 0.0.0.0:6520
$ adb -s 0.0.0.0:6520 install helloWorld.apk

দ্রষ্টব্য: আপনি একাধিক ডিভাইস উপলব্ধ থাকাকালীন একটি টার্গেট ডিভাইস নির্দিষ্ট না করে একটি কমান্ড ইস্যু করলে, adb একটি ত্রুটি প্রদর্শন করে "adb: একাধিক ডিভাইস/এমুলেটর"।

আপনার যদি একাধিক ডিভাইস উপলব্ধ থাকে তবে শুধুমাত্র একটি এমুলেটর হয়, তাহলে এমুলেটরে কমান্ড পাঠাতে -e বিকল্পটি ব্যবহার করুন। যদি একাধিক ডিভাইস থাকে কিন্তু শুধুমাত্র একটি হার্ডওয়্যার ডিভাইস সংযুক্ত থাকে, তাহলে হার্ডওয়্যার ডিভাইসে কমান্ড পাঠাতে -d বিকল্পটি ব্যবহার করুন।

একটি অ্যাপ ইনস্টল করুন

আপনি install কমান্ড সহ একটি এমুলেটর বা সংযুক্ত ডিভাইসে একটি APK ইনস্টল করতে adb ব্যবহার করতে পারেন:

adb install path_to_apk

আপনি একটি পরীক্ষা APK ইনস্টল করার সময় install কমান্ডের সাথে -t বিকল্পটি ব্যবহার করতে হবে। আরও তথ্যের জন্য, দেখুন -t

একাধিক APK ইনস্টল করতে install-multiple ব্যবহার করুন। আপনি যদি প্লে কনসোল থেকে আপনার অ্যাপের জন্য একটি নির্দিষ্ট ডিভাইসের জন্য সমস্ত APK ডাউনলোড করেন এবং এমুলেটর বা শারীরিক ডিভাইসে ইনস্টল করতে চান তবে এটি কার্যকর।

আপনি একটি এমুলেটর/ডিভাইস ইনস্ট্যান্সে ইনস্টল করতে পারেন এমন একটি APK ফাইল কীভাবে তৈরি করবেন সে সম্পর্কে আরও তথ্যের জন্য, আপনার অ্যাপ তৈরি করুন এবং চালান দেখুন।

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

পোর্ট ফরওয়ার্ডিং সেট আপ করুন

ইচ্ছামত পোর্ট ফরওয়ার্ডিং সেট আপ করতে forward কমান্ডটি ব্যবহার করুন, যা একটি নির্দিষ্ট হোস্ট পোর্টের অনুরোধগুলিকে একটি ডিভাইসের একটি ভিন্ন পোর্টে ফরোয়ার্ড করে। নিম্নলিখিত উদাহরণটি হোস্ট পোর্ট 6100 এর ডিভাইস পোর্ট 7100 এ ফরওয়ার্ডিং সেট আপ করে:

adb forward tcp:6100 tcp:7100

নিম্নলিখিত উদাহরণটি হোস্ট পোর্ট 6100-কে স্থানীয়:logd-এ ফরওয়ার্ডিং সেট আপ করে:

adb forward tcp:6100 local:logd

আপনি ডিভাইসে একটি প্রদত্ত পোর্টে কি পাঠানো হচ্ছে তা নির্ধারণ করার চেষ্টা করলে এটি কার্যকর হতে পারে। সমস্ত প্রাপ্ত ডেটা সিস্টেম-লগিং ডেমনে লেখা হবে এবং ডিভাইস লগগুলিতে প্রদর্শিত হবে।

একটি ডিভাইস থেকে ফাইল কপি করুন

একটি ডিভাইস থেকে ফাইল কপি করতে pull এবং push কমান্ড ব্যবহার করুন। install কমান্ডের বিপরীতে, যা শুধুমাত্র একটি নির্দিষ্ট স্থানে একটি APK ফাইল অনুলিপি করে, pull এবং push কমান্ডগুলি আপনাকে ডিভাইসের যেকোনো অবস্থানে নির্বিচারে ডিরেক্টরি এবং ফাইলগুলি অনুলিপি করতে দেয়।

ডিভাইস থেকে একটি ফাইল বা ডিরেক্টরি এবং এর সাব-ডিরেক্টরি অনুলিপি করতে, নিম্নলিখিতগুলি করুন:

adb pull remote local

ডিভাইসে একটি ফাইল বা ডিরেক্টরি এবং এর সাব-ডিরেক্টরি অনুলিপি করতে, নিম্নলিখিতগুলি করুন:

adb push local remote

আপনার ডেভেলপমেন্ট মেশিনে (স্থানীয়) এবং ডিভাইসে (দূরবর্তী) টার্গেট ফাইল/ডিরেক্টরীতে পাথ দিয়ে local এবং remote প্রতিস্থাপন করুন। যেমন:

adb push myfile.txt /sdcard/myfile.txt

অ্যাডবি সার্ভার বন্ধ করুন

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

adb সার্ভার বন্ধ করতে, adb kill-server কমান্ড ব্যবহার করুন। তারপর আপনি অন্য কোন adb কমান্ড জারি করে সার্ভার পুনরায় চালু করতে পারেন।

adb কমান্ড ইস্যু করুন

আপনার ডেভেলপমেন্ট মেশিনে একটি কমান্ড লাইন থেকে বা নিম্নলিখিত ব্যবহার করে একটি স্ক্রিপ্ট থেকে adb কমান্ড ইস্যু করুন:

adb [-d | -e | -s serial_number] command

শুধুমাত্র একটি এমুলেটর চলমান থাকলে বা শুধুমাত্র একটি ডিভাইস সংযুক্ত থাকলে, ডিফল্টরূপে সেই ডিভাইসে adb কমান্ড পাঠানো হয়। যদি একাধিক এমুলেটর চলমান থাকে এবং/অথবা একাধিক ডিভাইস সংযুক্ত থাকে, তাহলে আপনাকে -d , -e , বা -s বিকল্পটি ব্যবহার করতে হবে লক্ষ্য ডিভাইসটি নির্দিষ্ট করতে যেখানে কমান্ডটি নির্দেশিত হবে।

আপনি নিম্নলিখিত কমান্ড ব্যবহার করে সমস্ত সমর্থিত adb কমান্ডের একটি বিস্তারিত তালিকা দেখতে পারেন:

adb --help

শেল কমান্ড ইস্যু করুন

আপনি adb এর মাধ্যমে ডিভাইস কমান্ড ইস্যু করতে বা একটি ইন্টারেক্টিভ শেল শুরু করতে shell কমান্ড ব্যবহার করতে পারেন। একটি একক কমান্ড ইস্যু করতে, এই মত shell কমান্ড ব্যবহার করুন:

adb [-d |-e | -s serial_number] shell shell_command

একটি ডিভাইসে একটি ইন্টারেক্টিভ শেল শুরু করতে, এই মত shell কমান্ড ব্যবহার করুন:

adb [-d | -e | -s serial_number] shell

একটি ইন্টারেক্টিভ শেল থেকে প্রস্থান করতে, Control+D টিপুন বা exit টাইপ করুন।

অ্যান্ড্রয়েড বেশিরভাগ সাধারণ ইউনিক্স কমান্ড-লাইন সরঞ্জাম সরবরাহ করে। উপলব্ধ সরঞ্জামগুলির একটি তালিকার জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

adb shell ls /system/bin

--help আর্গুমেন্টের মাধ্যমে বেশিরভাগ কমান্ডের জন্য সাহায্য পাওয়া যায়। অনেক শেল কমান্ড টয়বক্স দ্বারা সরবরাহ করা হয়। toybox --help এর মাধ্যমে সমস্ত toybox কমান্ডের জন্য প্রযোজ্য সাধারণ সাহায্য পাওয়া যায়।

অ্যান্ড্রয়েড প্ল্যাটফর্ম টুল 23 এবং উচ্চতরের সাথে, adb ssh(1) কমান্ডের মতো আর্গুমেন্ট পরিচালনা করে। এই পরিবর্তনটি কমান্ড ইনজেকশনের অনেক সমস্যার সমাধান করেছে এবং শেল মেটাক্যারেক্টার ধারণকারী কমান্ডগুলিকে নিরাপদে চালানো সম্ভব করে তোলে, যেমন adb install Let\'sGo.apk । এই পরিবর্তনের অর্থ হল শেল মেটাক্যারেক্টার ধারণ করে এমন যেকোনো কমান্ডের ব্যাখ্যাও পরিবর্তিত হয়েছে।

উদাহরণস্বরূপ, adb shell setprop key ' two words ' এখন একটি ত্রুটি, কারণ উদ্ধৃতিগুলি স্থানীয় শেল দ্বারা গ্রাস করা হয় এবং ডিভাইসটি adb shell setprop key two words দেখতে পায়। কমান্ডটি কাজ করার জন্য, দুইবার উদ্ধৃতি করুন, একবার স্থানীয় শেলের জন্য এবং একবার দূরবর্তী শেলের জন্য, যেমন আপনি ssh(1) দিয়ে করেন। উদাহরণস্বরূপ, adb shell setprop key "' two words '" কাজ করে কারণ স্থানীয় শেলটি উদ্ধৃতির বাইরের স্তরটি নেয় এবং ডিভাইসটি এখনও উদ্ধৃতির ভিতরের স্তরটি দেখতে পায়: setprop key 'two words' । পালানোও একটি বিকল্প, তবে দুবার উদ্ধৃত করা সাধারণত সহজ।

এছাড়াও Logcat কমান্ড-লাইন টুল দেখুন, যা সিস্টেম লগ নিরীক্ষণের জন্য দরকারী।

অ্যাক্টিভিটি ম্যানেজারকে কল করুন

একটি adb শেলের মধ্যে, আপনি বিভিন্ন সিস্টেম ক্রিয়া সম্পাদনের জন্য কার্যকলাপ পরিচালক ( am ) টুলের সাথে কমান্ড ইস্যু করতে পারেন, যেমন একটি কার্যকলাপ শুরু করা, একটি প্রক্রিয়া জোর করে বন্ধ করা, একটি উদ্দেশ্য সম্প্রচার করা, ডিভাইসের স্ক্রীন বৈশিষ্ট্যগুলি পরিবর্তন করা এবং আরও অনেক কিছু।

একটি শেল থাকাকালীন, am সিনট্যাক্স হল:

am command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি কার্যকলাপ পরিচালক কমান্ড ইস্যু করতে পারেন। যেমন:

adb shell am start -a android.intent.action.VIEW

সারণী 1. উপলব্ধ কার্যকলাপ পরিচালক কমান্ড

আদেশ বর্ণনা
start [ options ] intent intent দ্বারা নির্দিষ্ট একটি Activity শুরু করুন।

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • -D : ডিবাগিং সক্ষম করুন।
  • -W : লঞ্চ সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন।
  • --start-profiler file : প্রোফাইলার শুরু করুন এবং file ফলাফল পাঠান।
  • -P file : যেমন --start-profiler , কিন্তু অ্যাপটি নিষ্ক্রিয় হয়ে গেলে প্রোফাইলিং বন্ধ হয়ে যায়।
  • -R count : কার্যকলাপ লঞ্চ count বার পুনরাবৃত্তি করুন. প্রতিটি পুনরাবৃত্তির আগে, শীর্ষ কার্যকলাপ শেষ হবে।
  • -S : কার্যকলাপ শুরু করার আগে লক্ষ্য অ্যাপটিকে জোর করে বন্ধ করুন।
  • --opengl-trace : OpenGL ফাংশনগুলির ট্রেসিং সক্ষম করুন।
  • --user user_id | current : কোন ব্যবহারকারী হিসাবে চালাতে হবে তা নির্দিষ্ট করুন; যদি নির্দিষ্ট না করা হয়, তাহলে বর্তমান ব্যবহারকারী হিসাবে চালান।
startservice [ options ] intent intent দ্বারা নির্দিষ্ট Service শুরু করুন।

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • --user user_id | current : কোন ব্যবহারকারী হিসাবে চালাতে হবে তা নির্দিষ্ট করুন। যদি নির্দিষ্ট করা না থাকে, তাহলে বর্তমান ব্যবহারকারী হিসেবে চালান।
force-stop package package সাথে যুক্ত সবকিছু জোর করে বন্ধ করুন।
kill [ options ] package package সাথে যুক্ত সমস্ত প্রসেস মেরে ফেলুন। এই কমান্ডটি কেবলমাত্র সেই প্রক্রিয়াগুলিকে হত্যা করে যা হত্যা করা নিরাপদ এবং এটি ব্যবহারকারীর অভিজ্ঞতাকে প্রভাবিত করবে না।

বিকল্পগুলি হল:

  • --user user_id | all | current : কোন ব্যবহারকারীর প্রক্রিয়াগুলিকে হত্যা করতে হবে তা নির্দিষ্ট করুন। যদি নির্দিষ্ট করা না থাকে, তাহলে সমস্ত ব্যবহারকারীর প্রসেস মেরে ফেলুন।
kill-all সমস্ত ব্যাকগ্রাউন্ড প্রসেস মেরে ফেলুন।
broadcast [ options ] intent একটি সম্প্রচার অভিপ্রায় ইস্যু.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • [--user user_id | all | current] : কোন ব্যবহারকারীকে পাঠাতে হবে তা উল্লেখ করুন। যদি নির্দিষ্ট না থাকে, তাহলে সমস্ত ব্যবহারকারীদের কাছে পাঠান।
instrument [ options ] component একটি Instrumentation উদাহরণ দিয়ে পর্যবেক্ষণ শুরু করুন। সাধারণত লক্ষ্য component ফর্ম test_package / runner_class

বিকল্পগুলি হল:

  • -r : কাঁচা ফলাফল প্রিন্ট করুন (অন্যথায় report_key_streamresult ডিকোড করুন)। পারফরম্যান্স পরিমাপের জন্য কাঁচা আউটপুট তৈরি করতে [-e perf true] দিয়ে ব্যবহার করুন।
  • -e name value : আর্গুমেন্টের name value হিসাবে সেট করুন। টেস্ট রানারদের জন্য একটি সাধারণ ফর্ম হল -e testrunner_flag value [, value ...]
  • -p file : file প্রোফাইলিং ডেটা লিখুন।
  • -w : ফিরে আসার আগে ইন্সট্রুমেন্টেশন শেষ হওয়ার জন্য অপেক্ষা করুন। টেস্ট রানারদের জন্য প্রয়োজনীয়।
  • --no-window-animation : চলার সময় উইন্ডো অ্যানিমেশন বন্ধ করুন।
  • --user user_id | current : কোন ব্যবহারকারীর ইন্সট্রুমেন্টেশন চলে তা নির্দিষ্ট করুন। নির্দিষ্ট না থাকলে বর্তমান ব্যবহারকারীতে চালান।
profile start process file process প্রোফাইলার শুরু করুন, file ফলাফল লিখুন।
profile stop process process প্রোফাইলার বন্ধ করুন।
dumpheap [ options ] process file process গাদা ডাম্প করুন, file লিখুন।

বিকল্পগুলি হল:

  • --user [ user_id | current] : একটি প্রক্রিয়ার নাম সরবরাহ করার সময়, ডাম্প করার প্রক্রিয়াটির ব্যবহারকারী উল্লেখ করুন। উল্লেখ না থাকলে, বর্তমান ব্যবহারকারী ব্যবহার করা হয়।
  • -b [| png | jpg | webp] : গ্রাফিক্স মেমরি থেকে বিটম্যাপ ডাম্প করুন (API লেভেল 35 এবং তার উপরে)। ঐচ্ছিকভাবে ডাম্প ইন করার বিন্যাস নির্দিষ্ট করুন (ডিফল্টরূপে PNG)।
  • -n : পরিচালিত হিপের পরিবর্তে নেটিভ হিপ ডাম্প করুন।
set-debug-app [ options ] package ডিবাগ করার জন্য অ্যাপ package সেট করুন।

বিকল্পগুলি হল:

  • -w : অ্যাপ শুরু হলে ডিবাগারের জন্য অপেক্ষা করুন।
  • --persistent : এই মান বজায় রাখুন।
clear-debug-app set-debug-app দিয়ে ডিবাগ করার জন্য আগের সেটটি সাফ করুন।
monitor [ options ] ক্র্যাশ বা ANR-এর জন্য পর্যবেক্ষণ শুরু করুন।

বিকল্পগুলি হল:

  • --gdb : ক্র্যাশ/ANR এ প্রদত্ত পোর্টে gdbserv শুরু করুন।
screen-compat {on | off} package package পর্দা সামঞ্জস্যপূর্ণ মোড নিয়ন্ত্রণ করুন।
display-size [reset | width x height ] ডিভাইস প্রদর্শনের আকার ওভাররাইড করুন। এই কমান্ডটি একটি বড় স্ক্রীন সহ একটি ডিভাইস ব্যবহার করে একটি ছোট স্ক্রীন রেজোলিউশনের অনুকরণ করে বিভিন্ন স্ক্রীন সাইজ জুড়ে আপনার অ্যাপটি পরীক্ষা করার জন্য সহায়ক এবং এর বিপরীতে।

উদাহরণ:
am display-size 1280x800

display-density dpi ডিভাইস প্রদর্শনের ঘনত্ব ওভাররাইড করুন। এই কমান্ডটি কম ঘনত্বের স্ক্রীন ব্যবহার করে উচ্চ-ঘনত্বের স্ক্রীন পরিবেশের অনুকরণ করে বিভিন্ন স্ক্রীনের ঘনত্ব জুড়ে আপনার অ্যাপ পরীক্ষা করার জন্য সহায়ক।

উদাহরণ:
am display-density 480

to-uri intent একটি URI হিসাবে প্রদত্ত অভিপ্রায় স্পেসিফিকেশন মুদ্রণ করুন.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

to-intent-uri intent প্রদত্ত অভিপ্রায় স্পেসিফিকেশন একটি intent: URI.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

উদ্দেশ্য আর্গুমেন্ট জন্য স্পেসিফিকেশন

অ্যাক্টিভিটি ম্যানেজার কমান্ডগুলির জন্য যা একটি intent যুক্তি গ্রহণ করে, আপনি নিম্নলিখিত বিকল্পগুলির সাথে অভিপ্রায় নির্দিষ্ট করতে পারেন:

প্যাকেজ ম্যানেজারকে কল করুন ( pm )

একটি adb শেলের মধ্যে, আপনি ডিভাইসে ইনস্টল করা অ্যাপ প্যাকেজগুলিতে অ্যাকশন এবং প্রশ্নগুলি সম্পাদন করতে প্যাকেজ ম্যানেজার ( pm ) টুলের সাহায্যে কমান্ড ইস্যু করতে পারেন।

একটি শেলে থাকাকালীন, pm সিনট্যাক্স হল:

pm command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি প্যাকেজ ম্যানেজার কমান্ড ইস্যু করতে পারেন। যেমন:

adb shell pm uninstall com.example.MyApp

সারণি 2. উপলব্ধ প্যাকেজ ম্যানেজার কমান্ড

আদেশ বর্ণনা
list packages [ options ] filter সমস্ত প্যাকেজ প্রিন্ট করুন, ঐচ্ছিকভাবে শুধুমাত্র যাদের প্যাকেজের নাম filter লেখা আছে।

বিকল্প:

  • -f : সংশ্লিষ্ট ফাইল দেখুন।
  • -d : শুধুমাত্র নিষ্ক্রিয় প্যাকেজ দেখাতে ফিল্টার করুন।
  • -e : শুধুমাত্র সক্ষম প্যাকেজগুলি দেখাতে ফিল্টার করুন।
  • -s : শুধুমাত্র সিস্টেম প্যাকেজ দেখাতে ফিল্টার করুন।
  • -3 : শুধুমাত্র তৃতীয় পক্ষের প্যাকেজ দেখাতে ফিল্টার করুন।
  • -i : প্যাকেজগুলির জন্য ইনস্টলার দেখুন।
  • -u : আনইনস্টল করা প্যাকেজ অন্তর্ভুক্ত করুন।
  • --user user_id : প্রশ্ন করার জন্য ব্যবহারকারীর স্থান।
list permission-groups সমস্ত পরিচিত অনুমতি গ্রুপ প্রিন্ট করুন.
list permissions [ options ] group সমস্ত পরিচিত অনুমতি প্রিন্ট করুন, ঐচ্ছিকভাবে শুধুমাত্র group থাকা।

বিকল্প:

  • -g : গ্রুপ দ্বারা সংগঠিত.
  • -f : সমস্ত তথ্য প্রিন্ট করুন।
  • -s : সংক্ষিপ্ত সারাংশ।
  • -d : শুধুমাত্র বিপজ্জনক অনুমতি তালিকা.
  • -u : শুধুমাত্র ব্যবহারকারীরা যে অনুমতিগুলি দেখতে পাবেন তা তালিকাভুক্ত করুন।
list instrumentation [ options ] সমস্ত পরীক্ষা প্যাকেজ তালিকা.

বিকল্প:

  • -f : পরীক্ষার প্যাকেজের জন্য APK ফাইলের তালিকা করুন।
  • target_package : শুধুমাত্র এই অ্যাপের জন্য পরীক্ষা প্যাকেজ তালিকা করুন।
list features সিস্টেমের সমস্ত বৈশিষ্ট্য মুদ্রণ করুন।
list libraries বর্তমান ডিভাইস দ্বারা সমর্থিত সমস্ত লাইব্রেরি প্রিন্ট করুন।
list users সিস্টেমে সমস্ত ব্যবহারকারী মুদ্রণ করুন।
path package প্রদত্ত package APK-এর পথ প্রিন্ট করুন।
install [ options ] path সিস্টেমে path দ্বারা নির্দিষ্ট একটি প্যাকেজ ইনস্টল করুন।

বিকল্প:

  • -r : একটি বিদ্যমান অ্যাপ পুনরায় ইনস্টল করুন, এর ডেটা রেখে।
  • -t : পরীক্ষার APK ইনস্টল করার অনুমতি দিন। আপনি যখন শুধুমাত্র আপনার অ্যাপটি চালান বা ডিবাগ করেন বা Android Studio Build > Build APK কমান্ড ব্যবহার করেন তখন Gradle একটি পরীক্ষামূলক APK তৈরি করে। যদি APK একটি ডেভেলপার প্রিভিউ SDK ব্যবহার করে তৈরি করা হয়, আপনি যদি একটি টেস্ট APK ইন্সটল করছেন তাহলে আপনাকে install কমান্ডের সাথে -t বিকল্পটি অন্তর্ভুক্ত করতে হবে।
  • -i installer_package_name : ইনস্টলার প্যাকেজের নাম উল্লেখ করুন।
  • --install-location location : নিম্নলিখিত মানগুলির একটি ব্যবহার করে ইনস্টল করার অবস্থান সেট করুন:
    • 0 : ডিফল্ট ইনস্টল অবস্থান ব্যবহার করুন.
    • 1 : অভ্যন্তরীণ ডিভাইস স্টোরেজ ইনস্টল করুন.
    • 2 : বাহ্যিক মিডিয়াতে ইনস্টল করুন।
  • -f : অভ্যন্তরীণ সিস্টেম মেমরিতে প্যাকেজ ইনস্টল করুন।
  • -d : সংস্করণ কোড ডাউনগ্রেড করার অনুমতি দিন।
  • -g : অ্যাপ ম্যানিফেস্টে তালিকাভুক্ত সমস্ত অনুমতি দিন।
  • --fastdeploy : পরিবর্তন করা APK-এর অংশগুলি আপডেট করে একটি ইনস্টল করা প্যাকেজ দ্রুত আপডেট করুন।
  • --incremental : ব্যাকগ্রাউন্ডে অবশিষ্ট ডেটা স্ট্রিম করার সময় অ্যাপটি চালু করার জন্য যথেষ্ট APK ইনস্টল করে। এই বৈশিষ্ট্যটি ব্যবহার করতে, আপনাকে অবশ্যই APK স্বাক্ষর করতে হবে, একটি APK স্বাক্ষর স্কিম v4 ফাইল তৈরি করতে হবে এবং এই ফাইলটিকে APK-এর মতো একই ডিরেক্টরিতে রাখতে হবে। এই বৈশিষ্ট্যটি শুধুমাত্র কিছু ডিভাইসে সমর্থিত। এই বিকল্পটি adb বৈশিষ্ট্যটি ব্যবহার করতে বাধ্য করে বা এটি সমর্থিত না হলে ব্যর্থ হয়, কেন এটি ব্যর্থ হয়েছে তার ভার্বস তথ্য সহ। APK-এ অ্যাক্সেস দেওয়ার আগে APK সম্পূর্ণরূপে ইনস্টল না হওয়া পর্যন্ত অপেক্ষা করতে --wait বিকল্পটি যোগ করুন।

    --no-incremental adb এই বৈশিষ্ট্যটি ব্যবহার করতে বাধা দেয়।

uninstall [ options ] package সিস্টেম থেকে একটি প্যাকেজ সরিয়ে দেয়।

বিকল্প:

  • -k : প্যাকেজ অপসারণের পরে ডেটা এবং ক্যাশে ডিরেক্টরি রাখুন।
  • --user user_id : সেই ব্যবহারকারীকে নির্দিষ্ট করে যার জন্য প্যাকেজটি সরানো হয়েছে।
  • --versionCode version_code : অ্যাপটিতে প্রদত্ত সংস্করণ কোড থাকলেই কেবল আনইনস্টল হয়।
clear package একটি প্যাকেজের সাথে যুক্ত সমস্ত ডেটা মুছুন।
enable package_or_component প্রদত্ত প্যাকেজ বা উপাদান সক্রিয় করুন ("প্যাকেজ/শ্রেণী" হিসাবে লেখা)।
disable package_or_component প্রদত্ত প্যাকেজ বা উপাদান অক্ষম করুন ("প্যাকেজ/শ্রেণী" হিসাবে লেখা)।
disable-user [ options ] package_or_component

বিকল্প:

  • --user user_id : অক্ষম করার জন্য ব্যবহারকারী।
grant package_name permission একটি অ্যাপের অনুমতি দিন। Android 6.0 (API লেভেল 23) এবং উচ্চতর চলমান ডিভাইসগুলিতে, অনুমতিটি অ্যাপ ম্যানিফেস্টে ঘোষিত যেকোনো অনুমতি হতে পারে। Android 5.1 (API লেভেল 22) এবং তার নিচে চলমান ডিভাইসগুলিতে অ্যাপ দ্বারা সংজ্ঞায়িত একটি ঐচ্ছিক অনুমতি থাকতে হবে।
revoke package_name permission একটি অ্যাপ্লিকেশন থেকে একটি অনুমতি প্রত্যাহার করুন. Android 6.0 (API লেভেল 23) এবং উচ্চতর চলমান ডিভাইসগুলিতে, অনুমতিটি অ্যাপ ম্যানিফেস্টে ঘোষিত যেকোনো অনুমতি হতে পারে। Android 5.1 (API লেভেল 22) এবং তার নিচে চলমান ডিভাইসগুলিতে অ্যাপ দ্বারা সংজ্ঞায়িত একটি ঐচ্ছিক অনুমতি থাকতে হবে।
set-install-location location ডিফল্ট ইনস্টল অবস্থান পরিবর্তন করুন. অবস্থান মান:
  • 0 : স্বয়ংক্রিয়: সিস্টেমকে সর্বোত্তম অবস্থান নির্ধারণ করতে দিন।
  • 1 : অভ্যন্তরীণ: অভ্যন্তরীণ ডিভাইস সঞ্চয়স্থানে ইনস্টল করুন।
  • 2 : বাহ্যিক: বাহ্যিক মিডিয়াতে ইনস্টল করুন।

দ্রষ্টব্য: এটি শুধুমাত্র ডিবাগ করার উদ্দেশ্যে করা হয়েছে। এটি ব্যবহার করলে অ্যাপগুলি ভেঙে যেতে পারে এবং অন্যান্য অবাঞ্ছিত আচরণ হতে পারে।

get-install-location বর্তমান ইনস্টলের অবস্থান ফেরত দেয়। রিটার্ন মান:
  • 0 [auto] : সিস্টেমকে সর্বোত্তম অবস্থান নির্ধারণ করতে দিন
  • 1 [internal] : অভ্যন্তরীণ ডিভাইস স্টোরেজে ইনস্টল করুন
  • 2 [external] : বাহ্যিক মিডিয়াতে ইনস্টল করুন
set-permission-enforced permission [true | false] প্রদত্ত অনুমতি প্রয়োগ করা উচিত কিনা তা উল্লেখ করুন।
trim-caches desired_free_space প্রদত্ত ফাঁকা জায়গায় পৌঁছানোর জন্য ক্যাশে ফাইল ট্রিম করুন।
create-user user_name প্রদত্ত user_name দিয়ে একটি নতুন ব্যবহারকারী তৈরি করুন, ব্যবহারকারীর নতুন ব্যবহারকারী শনাক্তকারী মুদ্রণ করুন।
remove-user user_id প্রদত্ত user_id সহ ব্যবহারকারীকে সরান, সেই ব্যবহারকারীর সাথে যুক্ত সমস্ত ডেটা মুছে দিন
get-max-users ডিভাইস দ্বারা সমর্থিত ব্যবহারকারীদের সর্বাধিক সংখ্যা প্রিন্ট করুন।
get-app-links [ options ] [ package ]

প্রদত্ত package জন্য ডোমেন যাচাইকরণ অবস্থা মুদ্রণ করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য। রাজ্য কোড নিম্নরূপ সংজ্ঞায়িত করা হয়:

  • none : এই ডোমেনের জন্য কিছুই রেকর্ড করা হয়নি
  • verified : ডোমেনটি সফলভাবে যাচাই করা হয়েছে
  • approved : বল-অনুমোদিত, সাধারণত শেল মাধ্যমে
  • denied : বলপ্রত্যাখ্যান, সাধারণত শেল মাধ্যমে
  • migrated : একটি উত্তরাধিকার প্রতিক্রিয়া থেকে যাচাইকরণ সংরক্ষিত
  • restored : ব্যবহারকারীর ডেটা পুনরুদ্ধার থেকে সংরক্ষিত যাচাইকরণ
  • legacy_failure : একটি উত্তরাধিকার যাচাইকারী দ্বারা প্রত্যাখ্যাত, অজানা কারণ
  • system_configured : ডিভাইস কনফিগারেশন দ্বারা স্বয়ংক্রিয়ভাবে অনুমোদিত
  • >= 1024 : কাস্টম ত্রুটি কোড, যা ডিভাইস যাচাইকারীর জন্য নির্দিষ্ট

বিকল্পগুলি হল:

  • --user user_id : ব্যবহারকারী নির্বাচন অন্তর্ভুক্ত করুন। সমস্ত ডোমেন অন্তর্ভুক্ত করুন, শুধুমাত্র স্বয়ংক্রিয় যাচাইকরণ নয়।
reset-app-links [ options ] [ package ]

প্রদত্ত প্যাকেজের জন্য ডোমেন যাচাইকরণ অবস্থা রিসেট করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য।

  • package : রিসেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ রিসেট করতে "সব"

বিকল্পগুলি হল:

  • --user user_id : ব্যবহারকারী নির্বাচন অন্তর্ভুক্ত করুন। সমস্ত ডোমেন অন্তর্ভুক্ত করুন, শুধুমাত্র স্বয়ংক্রিয় যাচাইকরণ নয়।
verify-app-links [ --re-verify ] [ package ]

প্রদত্ত package জন্য একটি যাচাইকরণের অনুরোধ সম্প্রচার করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য। প্যাকেজটি পূর্বে কোনো প্রতিক্রিয়া রেকর্ড না করলেই কেবল পাঠায়।

  • --re-verify : প্যাকেজটি একটি প্রতিক্রিয়া রেকর্ড করলেও পাঠান
set-app-links [--package package ] state domains

একটি প্যাকেজের জন্য একটি ডোমেনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা স্বয়ংক্রিয় যাচাই হিসাবে ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --package package : সেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ সেট করার জন্য "সব"
  • state : ডোমেন সেট করার জন্য কোড। বৈধ মান হল:
    • STATE_NO_RESPONSE (0) : রিসেট করুন যেন কোনো প্রতিক্রিয়া রেকর্ড করা হয়নি।
    • STATE_SUCCESS (1) : ডোমেনকে ডোমেন যাচাইকরণ এজেন্ট দ্বারা সফলভাবে যাচাই করা হিসাবে বিবেচনা করুন। মনে রাখবেন যে ডোমেন যাচাইকরণ এজেন্ট এটিকে ওভাররাইড করতে পারে।
    • STATE_APPROVED (2) : ডোমেনকে সর্বদা অনুমোদিত হিসাবে বিবেচনা করুন, ডোমেন যাচাইকরণ এজেন্টকে এটি পরিবর্তন করা থেকে বাধা দেয়।
    • STATE_DENIED (3) : ডোমেনকে সর্বদা অস্বীকৃত হিসাবে বিবেচনা করুন, ডোমেন যাচাইকরণ এজেন্টকে এটি পরিবর্তন করতে বাধা দেয়।
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"।
set-app-links-user-selection --user user_id [--package package ] enabled domains

একটি প্যাকেজের জন্য হোস্ট ব্যবহারকারী নির্বাচনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করা প্যাকেজ
  • enabled : ডোমেন অনুমোদন করতে হবে কিনা
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"
set-app-links-user-selection --user user_id [--package package ] enabled domains

একটি প্যাকেজের জন্য হোস্ট ব্যবহারকারী নির্বাচনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করা প্যাকেজ
  • enabled : ডোমেন অনুমোদন করতে হবে কিনা
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"
set-app-links-allowed --user user_id [--package package ] allowed

একটি প্যাকেজের জন্য স্বয়ংক্রিয়ভাবে যাচাই করা লিঙ্ক-হ্যান্ডলিং সেটিংটি টগল করুন।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ সেট করার জন্য "সব"; প্যাকেজ রিসেট করা হবে যদি কোনো প্যাকেজ নির্দিষ্ট করা না থাকে
  • allowed : প্যাকেজটিকে স্বয়ংক্রিয় যাচাই করা লিঙ্কগুলি খুলতে অনুমতি দেওয়ার জন্য সত্য, নিষ্ক্রিয় করার জন্য মিথ্যা৷
get-app-link-owners --user user_id [--package package ] domains

প্রদত্ত ব্যবহারকারীর জন্য একটি নির্দিষ্ট ডোমেনের জন্য মালিকদের প্রিন্ট করুন কম- থেকে উচ্চ-অগ্রাধিকার ক্রমে।

  • --user user_id : যে ব্যবহারকারীর জন্য প্রশ্ন করতে হবে
  • --package package : ঐচ্ছিকভাবে প্যাকেজ দ্বারা ঘোষিত সমস্ত ওয়েব ডোমেনের জন্যও মুদ্রণ করুন, বা সমস্ত প্যাকেজ প্রিন্ট করতে "সমস্ত"
  • domains : স্পেস-বিভক্ত ডোমেনের তালিকা যার জন্য অনুসন্ধান করতে হবে

ডিভাইস পলিসি ম্যানেজারকে কল করুন ( dpm )

আপনার ডিভাইস ম্যানেজমেন্ট অ্যাপ্লিকেশানগুলি বিকাশ এবং পরীক্ষা করতে আপনাকে সাহায্য করতে, ডিভাইস নীতি পরিচালক ( dpm ) টুলে কমান্ড ইস্যু করুন৷ সক্রিয় অ্যাডমিন অ্যাপ নিয়ন্ত্রণ করতে বা ডিভাইসে নীতির স্থিতি ডেটা পরিবর্তন করতে টুলটি ব্যবহার করুন।

একটি শেলে থাকাকালীন, dpm সিনট্যাক্স হল:

dpm command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি ডিভাইস নীতি পরিচালক কমান্ড ইস্যু করতে পারেন:

adb shell dpm command

সারণী 3. উপলব্ধ ডিভাইস পলিসি ম্যানেজার কমান্ড

আদেশ বর্ণনা
set-active-admin [ options ] component সক্রিয় প্রশাসক হিসাবে component সেট.

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
set-profile-owner [ options ] component একটি বিদ্যমান ব্যবহারকারীর জন্য সক্রিয় প্রশাসক হিসাবে component এবং প্রোফাইল মালিক হিসাবে এর প্যাকেজ সেট করুন।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
  • --name name : মানব-পাঠযোগ্য প্রতিষ্ঠানের নাম উল্লেখ করুন।
set-device-owner [ options ] component সক্রিয় প্রশাসক হিসাবে component এবং ডিভাইস মালিক হিসাবে এর প্যাকেজ সেট করুন।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
  • --name name : মানব-পাঠযোগ্য প্রতিষ্ঠানের নাম উল্লেখ করুন।
remove-active-admin [ options ] component একটি সক্রিয় অ্যাডমিন অক্ষম করুন। অ্যাপটিকে অবশ্যই ঘোষণা করতে হবে android:testOnly ম্যানিফেস্টে৷ এই কমান্ডটি ডিভাইস এবং প্রোফাইল মালিকদেরও সরিয়ে দেয়।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
clear-freeze-period-record সিস্টেম OTA আপডেটের জন্য পূর্বে সেট করা ফ্রিজ পিরিয়ডের ডিভাইসের রেকর্ড সাফ করুন। ফ্রিজ পিরিয়ড ম্যানেজ করে এমন অ্যাপ ডেভেলপ করার সময় ডিভাইসের সময় নির্ধারণের সীমাবদ্ধতা এড়াতে এটি কার্যকর। সিস্টেম আপডেটগুলি পরিচালনা করুন দেখুন।

Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

force-network-logs একটি DPC দ্বারা পুনরুদ্ধারের জন্য যেকোন বিদ্যমান নেটওয়ার্ক লগ প্রস্তুত করতে সিস্টেমটিকে বাধ্য করুন৷ সংযোগ বা DNS লগ উপলব্ধ থাকলে, DPC onNetworkLogsAvailable() কলব্যাক গ্রহণ করে। নেটওয়ার্ক কার্যকলাপ লগিং দেখুন.

এই কমান্ড হার-সীমিত. Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

force-security-logs ডিপিসি-তে বিদ্যমান নিরাপত্তা লগগুলি উপলব্ধ করতে সিস্টেমটিকে বাধ্য করুন৷ লগগুলি উপলব্ধ থাকলে, DPC onSecurityLogsAvailable() কলব্যাক গ্রহণ করে। লগ এন্টারপ্রাইজ ডিভাইস কার্যকলাপ দেখুন.

এই কমান্ড হার-সীমিত. Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

একটি স্ক্রিনশট নিন

screencap কমান্ডটি একটি ডিভাইস প্রদর্শনের স্ক্রিনশট নেওয়ার জন্য একটি শেল ইউটিলিটি।

একটি শেল থাকাকালীন, screencap সিনট্যাক্স হল:

screencap filename

কমান্ড লাইন থেকে screencap ব্যবহার করতে, নিম্নলিখিত লিখুন:

adb shell screencap /sdcard/screen.png

এখানে একটি উদাহরণ স্ক্রিনশট সেশন, স্ক্রিনশট ক্যাপচার করতে adb শেল ব্যবহার করে এবং ডিভাইস থেকে ফাইলটি ডাউনলোড করার জন্য pull কমান্ড:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

একটি ভিডিও রেকর্ড করুন

screenrecord কমান্ড হল একটি শেল ইউটিলিটি যা Android 4.4 (API লেভেল 19) এবং উচ্চতর চলমান ডিভাইসগুলির প্রদর্শন রেকর্ড করার জন্য। ইউটিলিটি একটি MPEG-4 ফাইলে স্ক্রীন কার্যকলাপ রেকর্ড করে। আপনি প্রচারমূলক বা প্রশিক্ষণ ভিডিও তৈরি করতে বা ডিবাগিং এবং পরীক্ষার জন্য এই ফাইলটি ব্যবহার করতে পারেন৷

একটি শেলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

screenrecord [options] filename

কমান্ড লাইন থেকে screenrecord ব্যবহার করতে, নিম্নলিখিত লিখুন:

adb shell screenrecord /sdcard/demo.mp4

Control+C টিপে স্ক্রীন রেকর্ডিং বন্ধ করুন। অন্যথায়, রেকর্ডিং স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় তিন মিনিটে বা --time-limit দ্বারা নির্ধারিত সময়সীমা।

আপনার ডিভাইসের স্ক্রীন রেকর্ড করা শুরু করতে, ভিডিও রেকর্ড করতে screenrecord কমান্ডটি চালান। তারপরে, হোস্ট কম্পিউটারে ডিভাইস থেকে ভিডিও ডাউনলোড করতে pull কমান্ডটি চালান। এখানে একটি উদাহরণ রেকর্ডিং সেশন:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

screenrecord ইউটিলিটি ডিভাইসের ডিসপ্লের আকৃতির অনুপাত বজায় রেখে আপনার অনুরোধ করা যেকোনো সমর্থিত রেজোলিউশন এবং বিট রেট রেকর্ড করতে পারে। ইউটিলিটি নেটিভ ডিসপ্লে রেজোলিউশনে রেকর্ড করে এবং ডিফল্টরূপে ওরিয়েন্টেশন, সর্বোচ্চ তিন মিনিটের দৈর্ঘ্য সহ।

screenrecord ইউটিলিটির সীমাবদ্ধতা:

  • ভিডিও ফাইলের সাথে অডিও রেকর্ড করা হয় না।
  • Wear OS চালিত ডিভাইসগুলির জন্য ভিডিও রেকর্ডিং উপলব্ধ নয়।
  • কিছু ডিভাইস তাদের নেটিভ ডিসপ্লে রেজোলিউশনে রেকর্ড করতে সক্ষম নাও হতে পারে। আপনি যদি স্ক্রীন রেকর্ডিংয়ে সমস্যার সম্মুখীন হন, তাহলে নিম্ন স্ক্রীন রেজোলিউশন ব্যবহার করার চেষ্টা করুন।
  • রেকর্ডিংয়ের সময় পর্দার ঘূর্ণন সমর্থিত নয়। রেকর্ডিংয়ের সময় যদি স্ক্রিনটি ঘোরে, তবে রেকর্ডিংয়ের কিছু স্ক্রীন কেটে যায়।

সারণী 4. screenrecord বিকল্প

অপশন বর্ণনা
--help কমান্ড সিনট্যাক্স এবং বিকল্পগুলি প্রদর্শন করুন
--size width x height ভিডিও আকার সেট করুন: 1280x720 । ডিফল্ট মান হল ডিভাইসের নেটিভ ডিসপ্লে রেজোলিউশন (যদি সমর্থিত হয়), না হলে 1280x720। সেরা ফলাফলের জন্য, আপনার ডিভাইসের অ্যাডভান্সড ভিডিও কোডিং (AVC) এনকোডার দ্বারা সমর্থিত আকার ব্যবহার করুন৷
--bit-rate rate ভিডিওর জন্য ভিডিও বিট রেট সেট করুন, প্রতি সেকেন্ডে মেগাবিট। ডিফল্ট মান হল 20Mbps। আপনি ভিডিওর গুণমান উন্নত করতে বিট রেট বাড়াতে পারেন, কিন্তু এটি করার ফলে বড় মুভি ফাইল হয়। নিম্নলিখিত উদাহরণটি রেকর্ডিং বিট রেট 6Mbps এ সেট করে:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time সেকেন্ডে সর্বোচ্চ রেকর্ডিং সময় সেট করুন। ডিফল্ট এবং সর্বোচ্চ মান হল 180 (3 মিনিট)।
--rotate আউটপুট 90 ডিগ্রি ঘোরান। এই বৈশিষ্ট্যটি পরীক্ষামূলক।
--verbose কমান্ড-লাইন স্ক্রিনে লগ তথ্য প্রদর্শন করুন। আপনি যদি এই বিকল্পটি সেট না করেন, ইউটিলিটি চলাকালীন কোনো তথ্য প্রদর্শন করে না।

অ্যাপের জন্য ART প্রোফাইল পড়ুন

অ্যান্ড্রয়েড 7.0 (এপিআই লেভেল 24) থেকে শুরু করে, অ্যান্ড্রয়েড রানটাইম (এআরটি) ইনস্টল করা অ্যাপের জন্য এক্সিকিউশন প্রোফাইল সংগ্রহ করে, যেগুলো অ্যাপ পারফরম্যান্স অপ্টিমাইজ করতে ব্যবহৃত হয়। অ্যাপ্লিকেশান স্টার্টআপের সময় কোন পদ্ধতিগুলি প্রায়শই কার্যকর করা হয় এবং কোন ক্লাসগুলি ব্যবহার করা হয় তা বোঝার জন্য সংগৃহীত প্রোফাইলগুলি পরীক্ষা করুন৷

দ্রষ্টব্য: এক্সিকিউশন প্রোফাইল ফাইলের নামটি পুনরুদ্ধার করা কেবল তখনই সম্ভব যদি আপনার ফাইল সিস্টেমে রুট অ্যাক্সেস থাকে, উদাহরণস্বরূপ, একটি এমুলেটরে।

প্রোফাইল তথ্যের একটি পাঠ্য ফর্ম তৈরি করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

adb shell cmd package dump-profiles package

উত্পাদিত ফাইল পুনরুদ্ধার করতে, ব্যবহার করুন:

adb pull /data/misc/profman/package.prof.txt

পরীক্ষার ডিভাইস রিসেট করুন

আপনি একাধিক পরীক্ষা ডিভাইস জুড়ে আপনার অ্যাপ পরীক্ষা করলে, পরীক্ষার মধ্যে আপনার ডিভাইস রিসেট করা উপকারী হতে পারে, উদাহরণস্বরূপ, ব্যবহারকারীর ডেটা সরাতে এবং পরীক্ষার পরিবেশ রিসেট করতে। আপনি testharness adb শেল কমান্ড ব্যবহার করে Android 10 (API লেভেল 29) বা উচ্চতর চলমান একটি টেস্ট ডিভাইসের ফ্যাক্টরি রিসেট করতে পারেন, যেমন দেখানো হয়েছে:

adb shell cmd testharness enable

testharness ব্যবহার করে ডিভাইসটি পুনরুদ্ধার করার সময়, ডিভাইসটি স্বয়ংক্রিয়ভাবে RSA কী ব্যাক আপ করে যা একটি স্থায়ী অবস্থানে বর্তমান ওয়ার্কস্টেশনের মাধ্যমে ডিবাগ করার অনুমতি দেয়। অর্থাৎ, ডিভাইসটি রিসেট করার পরে, ওয়ার্কস্টেশনটি ম্যানুয়ালি একটি নতুন কী নিবন্ধন না করেই ডিভাইসে ডিবাগ এবং adb কমান্ড ইস্যু করা চালিয়ে যেতে পারে।

উপরন্তু, আপনার অ্যাপের পরীক্ষা চালিয়ে যাওয়া সহজ এবং আরও নিরাপদ করতে সাহায্য করার জন্য, একটি ডিভাইস পুনরুদ্ধার করতে testharness ব্যবহার করে নিম্নলিখিত ডিভাইস সেটিংসও পরিবর্তন করে:

  • ডিভাইসটি নির্দিষ্ট সিস্টেম সেটিংস সেট আপ করে যাতে প্রাথমিক ডিভাইস সেটআপ উইজার্ডগুলি উপস্থিত না হয়৷ অর্থাৎ, ডিভাইসটি এমন একটি অবস্থায় প্রবেশ করে যেখান থেকে আপনি দ্রুত ইনস্টল, ডিবাগ এবং আপনার অ্যাপ পরীক্ষা করতে পারবেন।
  • সেটিংস:
    • লক স্ক্রিন অক্ষম করে।
    • জরুরী সতর্কতা অক্ষম করে।
    • অ্যাকাউন্টের জন্য স্বতঃ-সিঙ্ক অক্ষম করে।
    • স্বয়ংক্রিয় সিস্টেম আপডেট অক্ষম করে।
  • অন্যান্য:
    • পূর্ব-ইন্সটল করা নিরাপত্তা অ্যাপ অক্ষম করে।

আপনার অ্যাপটিকে testharness কমান্ডের ডিফল্ট সেটিংস সনাক্ত করতে এবং মানিয়ে নিতে হলে ActivityManager.isRunningInUserTestHarness() ব্যবহার করুন।

sqlite

sqlite3 SQLite ডাটাবেস পরীক্ষা করার জন্য sqlite কমান্ড-লাইন প্রোগ্রাম শুরু করে। এটি একটি টেবিলের বিষয়বস্তু প্রিন্ট করার জন্য .schema এবং বিদ্যমান টেবিলের জন্য SQL CREATE স্টেটমেন্ট প্রিন্ট করার জন্য .dump এর মতো কমান্ড অন্তর্ভুক্ত করে। আপনি কমান্ড লাইন থেকে SQLite কমান্ডগুলিও চালাতে পারেন, যেমন দেখানো হয়েছে:

$ adb -s emulator-5554 shell
$ sqlite3 /data/data/com.example.app/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions

দ্রষ্টব্য: শুধুমাত্র একটি SQLite ডাটাবেস অ্যাক্সেস করা সম্ভব যদি আপনার ফাইল সিস্টেমে রুট অ্যাক্সেস থাকে, উদাহরণস্বরূপ, একটি এমুলেটরে।

আরও তথ্যের জন্য, sqlite3 কমান্ড লাইন ডকুমেন্টেশন দেখুন।

adb USB ব্যাকএন্ড

অ্যাডবি সার্ভার দুটি ব্যাকএন্ডের মাধ্যমে ইউএসবি স্ট্যাকের সাথে ইন্টারঅ্যাক্ট করতে পারে। এটি হয় ওএস (উইন্ডোজ, লিনাক্স, বা ম্যাকওএস) এর নেটিভ ব্যাকএন্ড ব্যবহার করতে পারে অথবা এটি libusb ব্যাকএন্ড ব্যবহার করতে পারে। কিছু বৈশিষ্ট্য, যেমন attach , detach , এবং USB গতি সনাক্তকরণ, শুধুমাত্র libusb ব্যাকএন্ড ব্যবহার করার সময় উপলব্ধ।

আপনি ADB_LIBUSB পরিবেশ পরিবর্তনশীল ব্যবহার করে একটি ব্যাকএন্ড চয়ন করতে পারেন। এটি সেট না থাকলে, adb তার ডিফল্ট ব্যাকএন্ড ব্যবহার করে। ডিফল্ট আচরণ OS এর মধ্যে পরিবর্তিত হয়। ADB v34 দিয়ে শুরু করে, liubusb ব্যাকএন্ড ডিফল্টরূপে উইন্ডোজ ছাড়া সমস্ত OS-এ ব্যবহৃত হয়, যেখানে নেটিভ ব্যাকএন্ড ডিফল্টরূপে ব্যবহৃত হয়। যদি ADB_LIBUSB সেট করা থাকে, তাহলে এটি নির্ধারণ করে যে নেটিভ ব্যাকএন্ড বা libusb ব্যবহার করা হবে কিনা। adb পরিবেশ ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য adb ম্যানুয়াল পৃষ্ঠাটি দেখুন।

adb mDNS ব্যাকএন্ড

সার্ভার এবং ডিভাইসগুলিকে স্বয়ংক্রিয়ভাবে সংযুক্ত করতে ADB মাল্টিকাস্ট ডিএনএস প্রোটোকল ব্যবহার করতে পারে। ADB সার্ভার দুটি ব্যাকএন্ড, Bonjour (Apple এর mdnsResponder) এবং Openscreen সহ পাঠানো হয়।

হোস্ট মেশিনে চলার জন্য Bonjour ব্যাকএন্ডের একটি ডেমন প্রয়োজন। MacOS অ্যাপলের অন্তর্নির্মিত ডেমন সর্বদা চলমান থাকে, তবে উইন্ডোজ এবং লিনাক্সে, ব্যবহারকারীকে নিশ্চিত করতে হবে যে mdnsd ডেমন চালু আছে এবং চলছে। যদি adb mdns check কমান্ড একটি ত্রুটি প্রদান করে, তাহলে সম্ভবত ADB Bonjour ব্যাকএন্ড ব্যবহার করছে কিন্তু কোন Bonjour ডেমন চলছে না।

ওপেনস্ক্রিন ব্যাকএন্ডের মেশিনে চলার জন্য ডেমনের প্রয়োজন নেই। MacOS-এ ওপেনস্ক্রিন ব্যাকএন্ডের জন্য সমর্থন ADB v35 থেকে শুরু হয়। উইন্ডোজ এবং লিনাক্স ADB v34 হিসাবে সমর্থিত।

ডিফল্টরূপে ADB Bonjour ব্যাকএন্ড ব্যবহার করে। পরিবেশ পরিবর্তনশীল ADB_MDNS_OPENSCREEN ( 1 বা 0 এ সেট) ব্যবহার করে এই আচরণ পরিবর্তন করা যেতে পারে। আরও বিস্তারিত জানার জন্য ADB ম্যানুয়াল পৃষ্ঠা দেখুন।

,

অ্যান্ড্রয়েড ডিবাগ ব্রিজ ( adb ) একটি বহুমুখী কমান্ড-লাইন টুল যা আপনাকে একটি ডিভাইসের সাথে যোগাযোগ করতে দেয়। adb কমান্ড বিভিন্ন ধরনের ডিভাইস অ্যাকশনের সুবিধা দেয়, যেমন অ্যাপ ইনস্টল করা এবং ডিবাগ করা। adb একটি ইউনিক্স শেল অ্যাক্সেস প্রদান করে যা আপনি একটি ডিভাইসে বিভিন্ন কমান্ড চালানোর জন্য ব্যবহার করতে পারেন। এটি একটি ক্লায়েন্ট-সার্ভার প্রোগ্রাম যা তিনটি উপাদান অন্তর্ভুক্ত করে:

  • একটি ক্লায়েন্ট , যা কমান্ড পাঠায়। ক্লায়েন্ট আপনার ডেভেলপমেন্ট মেশিনে চলে। আপনি একটি adb কমান্ড জারি করে একটি কমান্ড-লাইন টার্মিনাল থেকে একটি ক্লায়েন্টকে আহ্বান করতে পারেন।
  • একটি ডেমন (adbd) , যা একটি ডিভাইসে কমান্ড চালায়। ডেমন প্রতিটি ডিভাইসে একটি পটভূমি প্রক্রিয়া হিসাবে চলে।
  • একটি সার্ভার , যা ক্লায়েন্ট এবং ডেমনের মধ্যে যোগাযোগ পরিচালনা করে। সার্ভারটি আপনার ডেভেলপমেন্ট মেশিনে একটি ব্যাকগ্রাউন্ড প্রক্রিয়া হিসাবে চলে।

adb অ্যান্ড্রয়েড SDK প্ল্যাটফর্ম টুলস প্যাকেজে অন্তর্ভুক্ত। SDK ম্যানেজার দিয়ে এই প্যাকেজটি ডাউনলোড করুন, যা এটিকে android_sdk /platform-tools/ এ ইনস্টল করে। আপনি যদি স্বতন্ত্র অ্যান্ড্রয়েড SDK প্ল্যাটফর্ম টুলস প্যাকেজ চান তবে এটি এখানে ডাউনলোড করুন

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

কিভাবে adb কাজ করে

আপনি যখন একটি adb ক্লায়েন্ট শুরু করেন, ক্লায়েন্ট প্রথমে পরীক্ষা করে যে একটি adb সার্ভার প্রক্রিয়া ইতিমধ্যেই চলছে কিনা। যদি না থাকে তবে এটি সার্ভার প্রক্রিয়া শুরু করে। যখন সার্ভার শুরু হয়, তখন এটি স্থানীয় TCP পোর্ট 5037 এর সাথে আবদ্ধ হয় এবং adb ক্লায়েন্টদের থেকে পাঠানো কমান্ড শোনে।

দ্রষ্টব্য: সমস্ত adb ক্লায়েন্ট adb সার্ভারের সাথে যোগাযোগ করতে পোর্ট 5037 ব্যবহার করে।

সার্ভার তারপর সমস্ত চলমান ডিভাইসের সাথে সংযোগ স্থাপন করে। এটি 5555 থেকে 5585 রেঞ্জের মধ্যে বিজোড়-সংখ্যাযুক্ত পোর্ট স্ক্যান করে এমুলেটরগুলি সনাক্ত করে, যা প্রথম 16টি এমুলেটর দ্বারা ব্যবহৃত পরিসর। যেখানে সার্ভার একটি adb ডেমন (adbd) খুঁজে পায়, এটি সেই পোর্টের সাথে একটি সংযোগ স্থাপন করে।

প্রতিটি এমুলেটর একজোড়া ক্রমিক পোর্ট ব্যবহার করে — কনসোল সংযোগের জন্য একটি জোড়-সংখ্যাযুক্ত পোর্ট এবং adb সংযোগের জন্য একটি বিজোড়-সংখ্যাযুক্ত পোর্ট। যেমন:

এমুলেটর 1, কনসোল: 5554
এমুলেটর 1, adb : 5555
এমুলেটর 2, কনসোল: 5556
এমুলেটর 2, adb : 5557
এবং তাই

যেমন দেখানো হয়েছে, পোর্ট 5555-এ adb এর সাথে সংযুক্ত এমুলেটরটি সেই এমুলেটরের মতো যার কনসোল পোর্ট 5554-এ শোনে।

একবার সার্ভার সমস্ত ডিভাইসে সংযোগ স্থাপন করে, আপনি সেই ডিভাইসগুলি অ্যাক্সেস করতে adb কমান্ড ব্যবহার করতে পারেন। যেহেতু সার্ভারটি ডিভাইসের সাথে সংযোগ পরিচালনা করে এবং একাধিক adb ক্লায়েন্ট থেকে কমান্ড পরিচালনা করে, আপনি যেকোনো ক্লায়েন্ট বা স্ক্রিপ্ট থেকে যেকোনো ডিভাইস নিয়ন্ত্রণ করতে পারেন।

আপনার ডিভাইসে অ্যাডবি ডিবাগিং সক্ষম করুন

USB-এর মাধ্যমে সংযুক্ত একটি ডিভাইসের সাথে adb ব্যবহার করতে, আপনাকে অবশ্যই বিকাশকারী বিকল্পগুলির অধীনে ডিভাইস সিস্টেম সেটিংসে USB ডিবাগিং সক্ষম করতে হবে৷ Android 4.2 (API স্তর 17) এবং উচ্চতর, বিকাশকারী বিকল্পগুলির স্ক্রীনটি ডিফল্টরূপে লুকানো থাকে৷ এটি দৃশ্যমান করতে, বিকাশকারী বিকল্পগুলি সক্ষম করুন৷

আপনি এখন USB দিয়ে আপনার ডিভাইস সংযোগ করতে পারেন। আপনি android_sdk /platform-tools/ ডিরেক্টরি থেকে adb devices সম্পাদন করে আপনার ডিভাইসটি সংযুক্ত কিনা তা যাচাই করতে পারেন। সংযুক্ত থাকলে, আপনি "ডিভাইস" হিসাবে তালিকাভুক্ত ডিভাইসের নাম দেখতে পাবেন।

দ্রষ্টব্য: আপনি যখন Android 4.2.2 (API স্তর 17) বা উচ্চতর চলমান একটি ডিভাইস সংযুক্ত করেন, তখন সিস্টেমটি একটি ডায়ালগ দেখায় যা জিজ্ঞাসা করে যে একটি RSA কী গ্রহণ করবেন কিনা যা এই কম্পিউটারের মাধ্যমে ডিবাগ করার অনুমতি দেয়৷ এই নিরাপত্তা ব্যবস্থা ব্যবহারকারীর ডিভাইসগুলিকে রক্ষা করে কারণ এটি নিশ্চিত করে যে USB ডিবাগিং এবং অন্যান্য adb কমান্ডগুলি কার্যকর করা যাবে না যদি না আপনি ডিভাইসটি আনলক করতে এবং ডায়ালগটি স্বীকার করতে সক্ষম হন।

USB এর মাধ্যমে একটি ডিভাইসের সাথে সংযোগ করার বিষয়ে আরও তথ্যের জন্য, একটি হার্ডওয়্যার ডিভাইসে অ্যাপ্লিকেশন চালান পড়ুন।

Wi-Fi এর মাধ্যমে একটি ডিভাইসের সাথে সংযোগ করুন৷

দ্রষ্টব্য: নীচের নির্দেশাবলী Android 11 (API স্তর 30) চালিত Wear ডিভাইসগুলিতে প্রযোজ্য নয়। আরও তথ্যের জন্য একটি Wear OS অ্যাপ ডিবাগ করার নির্দেশিকা দেখুন।

অ্যান্ড্রয়েড 11 (এপিআই লেভেল 30) এবং উচ্চতর সমর্থন অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) ব্যবহার করে আপনার ওয়ার্কস্টেশন থেকে ওয়্যারলেসভাবে আপনার অ্যাপ স্থাপন এবং ডিবাগ করা। উদাহরণস্বরূপ, আপনি USB এর মাধ্যমে আপনার ডিভাইসটিকে শারীরিকভাবে সংযুক্ত করার প্রয়োজন ছাড়াই একাধিক দূরবর্তী ডিভাইসে আপনার ডিবাগযোগ্য অ্যাপ স্থাপন করতে পারেন। এটি ড্রাইভার ইনস্টলেশনের মতো সাধারণ USB সংযোগ সমস্যাগুলি মোকাবেলা করার প্রয়োজনীয়তা দূর করে।

আপনি ওয়্যারলেস ডিবাগিং ব্যবহার শুরু করার আগে, নিম্নলিখিতগুলি করুন:

  • আপনার ওয়ার্কস্টেশন এবং ডিভাইস একই ওয়্যারলেস নেটওয়ার্কের সাথে সংযুক্ত আছে তা নিশ্চিত করুন।

  • নিশ্চিত করুন যে আপনার ডিভাইসটি Android 11 (API লেভেল 30) বা ফোনের জন্য উচ্চতর বা Android 13 (API লেভেল 33) বা TV এবং WearOS-এর জন্য উচ্চতর চালাচ্ছে। আরও তথ্যের জন্য, আপনার অ্যান্ড্রয়েড সংস্করণ দেখুন এবং আপডেট করুন

  • যদি IDE ব্যবহার করেন, তাহলে নিশ্চিত করুন যে আপনার Android Studio এর সর্বশেষ সংস্করণ ইনস্টল করা আছে। আপনি এখানে এটি ডাউনলোড করতে পারেন.

  • আপনার ওয়ার্কস্টেশনে, SDK প্ল্যাটফর্ম টুলের সর্বশেষ সংস্করণে আপডেট করুন।

ওয়্যারলেস ডিবাগিং ব্যবহার করতে, আপনাকে অবশ্যই একটি QR কোড বা একটি পেয়ারিং কোড ব্যবহার করে আপনার ডিভাইসটিকে আপনার ওয়ার্কস্টেশনের সাথে যুক্ত করতে হবে৷ আপনার ওয়ার্কস্টেশন এবং ডিভাইস অবশ্যই একই ওয়্যারলেস নেটওয়ার্কের সাথে সংযুক্ত থাকতে হবে। আপনার ডিভাইসের সাথে সংযোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার ডিভাইসে বিকাশকারী বিকল্পগুলি সক্ষম করুন

  2. অ্যান্ড্রয়েড স্টুডিও খুলুন এবং রান কনফিগারেশন মেনু থেকে Wi-Fi ব্যবহার করে ডিভাইস জোড়া নির্বাচন করুন।

    কনফিগারেশন ড্রপডাউন মেনু চালান
    চিত্র 1. কনফিগারেশন মেনু চালান।

    Wi-Fi উইন্ডোতে জোড়া ডিভাইসগুলি পপ আপ হয়, যেমন চিত্র 2 এ দেখানো হয়েছে।

    Wi-Fi পপআপ উইন্ডোতে জোড়া ডিভাইসের স্ক্রিনশট
    চিত্র 2. QR কোড বা পেয়ারিং কোড ব্যবহার করে ডিভাইস জোড়ার জন্য পপআপ উইন্ডো।
  3. আপনার ডিভাইসে, ওয়্যারলেস ডিবাগিং আলতো চাপুন এবং আপনার ডিভাইস যুক্ত করুন:

    একটি পিক্সেল ফোনের স্ক্রিনশট ওয়্যারলেস ডিবাগিং সিস্টেম সেটিং দেখাচ্ছে৷
    চিত্র 3. Google Pixel ফোনে ওয়্যারলেস ডিবাগিং সেটিংসের স্ক্রিনশট।
    1. আপনার ডিভাইসটিকে একটি QR কোডের সাথে পেয়ার করতে, QR কোডের সাথে পেয়ার ডিভাইস নির্বাচন করুন এবং চিত্র 2-এ দেখানো Wi-Fi পপআপের মাধ্যমে পেয়ার ডিভাইসগুলি থেকে প্রাপ্ত QR কোডটি স্ক্যান করুন৷

    2. পেয়ারিং কোডের সাথে আপনার ডিভাইস পেয়ার করতে, Wi-Fi পপআপের মাধ্যমে পেয়ার ডিভাইস থেকে পেয়ারিং কোডের সাথে পেয়ার ডিভাইস নির্বাচন করুন। আপনার ডিভাইসে, পেয়ারিং কোড ব্যবহার করে পেয়ার নির্বাচন করুন এবং প্রদত্ত ছয়-সংখ্যার কোডটি নোট করুন। একবার আপনার ডিভাইসটি Wi-Fi উইন্ডোতে পেয়ার ডিভাইসে প্রদর্শিত হলে, আপনি পেয়ার নির্বাচন করতে পারেন এবং আপনার ডিভাইসে দেখানো ছয়-সংখ্যার কোডটি প্রবেশ করতে পারেন।

      পিন কোড এন্ট্রির উদাহরণের স্ক্রিনশট
      চিত্র 4. ছয় সংখ্যার কোড এন্ট্রির উদাহরণ।
  4. আপনার ডিভাইস যুক্ত হওয়ার পরে, আপনি আপনার ডিভাইসে আপনার অ্যাপ স্থাপন করার চেষ্টা করতে পারেন।

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

  5. আপনি যদি ওয়্যারলেস ডিবাগিং দ্রুত চালু এবং বন্ধ করতে চান, আপনি ওয়্যারলেস ডিবাগিংয়ের জন্য দ্রুত সেটিংস ডেভেলপার টাইলস ব্যবহার করতে পারেন, যা বিকাশকারী বিকল্প > দ্রুত সেটিংস বিকাশকারী টাইলস- এ পাওয়া যায়।

    একটি Google Pixel ফোন থেকে দ্রুত সেটিংস ডেভেলপার টাইলসের স্ক্রিনশট।
    চিত্র 5. দ্রুত সেটিংস বিকাশকারী টাইলস সেটিং আপনাকে দ্রুত ওয়্যারলেস ডিবাগিং চালু এবং বন্ধ করতে দেয়।

কমান্ড লাইন ব্যবহার করে Wi-Fi সংযোগ

বিকল্পভাবে, অ্যান্ড্রয়েড স্টুডিও ছাড়া কমান্ড লাইন ব্যবহার করে আপনার ডিভাইসে সংযোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার ডিভাইসে বিকাশকারী বিকল্পগুলি সক্ষম করুন, যেমনটি আগে বর্ণিত হয়েছে৷

  2. আপনার ডিভাইসে ওয়্যারলেস ডিবাগিং সক্ষম করুন, যেমনটি আগে বর্ণিত হয়েছে।

  3. আপনার ওয়ার্কস্টেশনে, একটি টার্মিনাল উইন্ডো খুলুন এবং android_sdk/platform-tools এ নেভিগেট করুন।

  4. পেয়ারিং কোডের সাথে পেয়ার ডিভাইস নির্বাচন করে আপনার IP ঠিকানা, পোর্ট নম্বর এবং পেয়ারিং কোড খুঁজুন। ডিভাইসে প্রদর্শিত IP ঠিকানা, পোর্ট নম্বর এবং পেয়ারিং কোড নোট করুন।

  5. আপনার ওয়ার্কস্টেশনের টার্মিনালে, adb pair ipaddr:port চালান। উপরে থেকে আইপি ঠিকানা এবং পোর্ট নম্বর ব্যবহার করুন।

  6. অনুরোধ করা হলে, পেয়ারিং কোড লিখুন, যেমন নীচে দেখানো হয়েছে।

    কমান্ড লাইনে জোড়ার স্ক্রিনশট।
    চিত্র 6. একটি বার্তা নির্দেশ করে যে আপনার ডিভাইসটি সফলভাবে জোড়া হয়েছে৷

বেতার সংযোগ সমস্যা সমাধান করুন

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

আপনার ওয়ার্কস্টেশন এবং ডিভাইস পূর্বশর্তগুলি পূরণ করে কিনা তা পরীক্ষা করুন

ওয়ার্কস্টেশন এবং ডিভাইস এই বিভাগের শুরুতে তালিকাভুক্ত পূর্বশর্তগুলি পূরণ করে কিনা তা পরীক্ষা করুন৷

অন্যান্য পরিচিত সমস্যা জন্য পরীক্ষা করুন

ওয়্যারলেস ডিবাগিং (এডিবি বা অ্যান্ড্রয়েড স্টুডিও সহ) এবং কীভাবে সেগুলি সমাধান করা যায় তার বর্তমান পরিচিত সমস্যাগুলির একটি তালিকা নীচে দেওয়া হল:

  • Wi-Fi সংযোগ হচ্ছে না : নিরাপদ Wi-Fi নেটওয়ার্ক, যেমন কর্পোরেট ওয়াই-ফাই নেটওয়ার্ক, p2p সংযোগগুলি ব্লক করতে পারে এবং আপনাকে Wi-Fi এর মাধ্যমে সংযোগ করতে দেয় না৷ একটি কেবল বা অন্য (নন-কর্প) Wi-Fi নেটওয়ার্কের সাথে সংযোগ করার চেষ্টা করুন৷ adb connect ip : port ওভার টিসিপি/আইপি (প্রাথমিক ইউএসবি কানেকশন অনুসরণ করে) আরেকটি বিকল্প, যদি নন-কর্প নেটওয়ার্ক অবলম্বন করা একটি বিকল্প।

  • adb ওভার Wi-Fi কখনও কখনও স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় : ডিভাইসটি Wi-Fi নেটওয়ার্ক সুইচ করলে বা নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন হলে এটি ঘটতে পারে৷ সমাধান করতে, নেটওয়ার্কে পুনরায় সংযোগ করুন৷

  • সফলভাবে জোড়া লাগানোর পর ডিভাইস সংযোগ হচ্ছে না : adb জোড়া ডিভাইস আবিষ্কার করতে এবং স্বয়ংক্রিয়ভাবে সংযোগ করতে mDNS-এর উপর নির্ভর করে। যদি আপনার নেটওয়ার্ক বা ডিভাইস কনফিগারেশন mDNS সমর্থন না করে বা এটি নিষ্ক্রিয় করে থাকে, তাহলে আপনাকে adb connect ip : port ব্যবহার করে ডিভাইসের সাথে ম্যানুয়ালি সংযোগ করতে হবে।

একটি প্রাথমিক USB সংযোগের পরে একটি ডিভাইসের সাথে ওয়্যারলেসভাবে সংযোগ করুন (কেবলমাত্র Android 10 এবং তার নিচের সংস্করণগুলিতে উপলব্ধ)

দ্রষ্টব্য: এই ওয়ার্কফ্লোটি Android 11 (এবং উচ্চতর) এর ক্ষেত্রেও প্রযোজ্য, সতর্কতা হল যে এটিতে একটি *প্রাথমিক* সংযোগও রয়েছে।

দ্রষ্টব্য: নিম্নলিখিত নির্দেশাবলী Android 10 (API স্তর 29) বা তার নিচের চলমান Wear ডিভাইসগুলিতে প্রযোজ্য নয়৷ আরও তথ্যের জন্য একটি Wear OS অ্যাপ ডিবাগ করার নির্দেশিকা দেখুন।

adb সাধারণত USB এর মাধ্যমে ডিভাইসের সাথে যোগাযোগ করে, তবে আপনি Wi-Fi এর মাধ্যমে adb ব্যবহার করতে পারেন। অ্যান্ড্রয়েড 10 (এপিআই লেভেল 29) বা তার নিচে চলমান একটি ডিভাইস সংযোগ করতে, ইউএসবি-তে এই প্রাথমিক পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার অ্যান্ড্রয়েড ডিভাইস এবং adb হোস্ট কম্পিউটারকে একটি সাধারণ ওয়াই-ফাই নেটওয়ার্কে সংযুক্ত করুন৷
  2. দ্রষ্টব্য: সতর্ক থাকুন যে সমস্ত অ্যাক্সেস পয়েন্ট উপযুক্ত নয়। আপনাকে একটি অ্যাক্সেস পয়েন্ট ব্যবহার করতে হতে পারে যার ফায়ারওয়াল adb সমর্থন করার জন্য সঠিকভাবে কনফিগার করা হয়েছে।

  3. একটি USB তারের সাহায্যে হোস্ট কম্পিউটারের সাথে ডিভাইসটিকে সংযুক্ত করুন৷
  4. পোর্ট 5555 এ একটি TCP/IP সংযোগের জন্য শোনার জন্য লক্ষ্য ডিভাইস সেট করুন:
    adb tcpip 5555
    
  5. লক্ষ্য ডিভাইস থেকে USB তারের সংযোগ বিচ্ছিন্ন করুন.
  6. অ্যান্ড্রয়েড ডিভাইসের আইপি ঠিকানা খুঁজুন। উদাহরণস্বরূপ, একটি Nexus ডিভাইসে, আপনি সেটিংস > ট্যাবলেট সম্পর্কে (বা ফোন সম্পর্কে ) > স্থিতি > IP ঠিকানাতে IP ঠিকানা খুঁজে পেতে পারেন।
  7. আইপি ঠিকানা দ্বারা ডিভাইসের সাথে সংযোগ করুন:
    adb connect device_ip_address:5555
    
  8. নিশ্চিত করুন যে আপনার হোস্ট কম্পিউটার লক্ষ্য ডিভাইসের সাথে সংযুক্ত আছে:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

আপনার ডিভাইস এখন adb এর সাথে সংযুক্ত।

আপনার ডিভাইসে adb সংযোগ হারিয়ে গেলে:

  • নিশ্চিত করুন যে আপনার হোস্ট এখনও আপনার Android ডিভাইসের মতো একই Wi-Fi নেটওয়ার্কের সাথে সংযুক্ত রয়েছে৷
  • adb connect ধাপটি আবার সম্পাদন করে পুনরায় সংযোগ করুন।
  • যদি এটি কাজ না করে, আপনার adb হোস্ট রিসেট করুন:
    adb kill-server
    

    তারপর আবার শুরু থেকে শুরু করুন।

ডিভাইসের জন্য ক্যোয়ারী

adb কমান্ড ইস্যু করার আগে, adb সার্ভারের সাথে কোন ডিভাইসের দৃষ্টান্ত সংযুক্ত আছে তা জেনে নেওয়া সহায়ক। devices কমান্ড ব্যবহার করে সংযুক্ত ডিভাইসের একটি তালিকা তৈরি করুন:

  adb devices -l
  

প্রতিক্রিয়া হিসাবে, adb প্রতিটি ডিভাইসের জন্য এই স্থিতি তথ্য মুদ্রণ করে:

  • সিরিয়াল নম্বর: adb ডিভাইসটিকে তার পোর্ট নম্বর দ্বারা অনন্যভাবে সনাক্ত করার জন্য একটি স্ট্রিং তৈরি করে। এখানে একটি উদাহরণ সিরিয়াল নম্বর: emulator-5554
  • অবস্থা: ডিভাইসের সংযোগের অবস্থা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
    • offline : ডিভাইসটি adb এর সাথে সংযুক্ত নয় বা সাড়া দিচ্ছে না।
    • device : ডিভাইসটি adb সার্ভারের সাথে সংযুক্ত। মনে রাখবেন যে এই অবস্থাটি বোঝায় না যে অ্যান্ড্রয়েড সিস্টেমটি সম্পূর্ণরূপে বুট হয়েছে এবং চালু আছে, কারণ সিস্টেমটি বুট করার সময় ডিভাইসটি adb এর সাথে সংযোগ করে। বুট-আপের পরে, এটি একটি ডিভাইসের স্বাভাবিক অপারেশনাল অবস্থা।
    • no device : কোনো ডিভাইস সংযুক্ত নেই।
  • বর্ণনা: আপনি যদি -l বিকল্পটি অন্তর্ভুক্ত করেন, devices কমান্ড আপনাকে বলে যে ডিভাইসটি কী। এই তথ্যটি সহায়ক যখন আপনার একাধিক ডিভাইস সংযুক্ত থাকে যাতে আপনি তাদের আলাদা করে বলতে পারেন৷

নিম্নলিখিত উদাহরণটি devices কমান্ড এবং এর আউটপুট দেখায়। তিনটি ডিভাইস চলছে। তালিকার প্রথম দুটি লাইন হল এমুলেটর, এবং তৃতীয় লাইন হল একটি হার্ডওয়্যার ডিভাইস যা কম্পিউটারের সাথে সংযুক্ত।

$ adb devices
List of devices attached
emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64
emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86
0a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo

এমুলেটর তালিকাভুক্ত নয়

adb devices কমান্ডের একটি কর্নার-কেস কমান্ড সিকোয়েন্স রয়েছে যার কারণে এমুলেটরগুলি আপনার ডেস্কটপে দৃশ্যমান থাকা সত্ত্বেও চলমান এমুলেটরগুলি adb devices আউটপুটে দেখা যায় না। এটি ঘটে যখন নিম্নলিখিত সমস্ত শর্ত সত্য হয়:

  • adb সার্ভার চলছে না।
  • আপনি 5554 এবং 5584 এর মধ্যে বিজোড়-সংখ্যাযুক্ত পোর্ট মান সহ -port বা -ports বিকল্পের সাথে emulator কমান্ডটি ব্যবহার করেন।
  • আপনার বেছে নেওয়া বিজোড়-সংখ্যার পোর্টটি ব্যস্ত নয়, তাই পোর্ট সংযোগটি নির্দিষ্ট পোর্ট নম্বরে করা যেতে পারে — অথবা, যদি এটি ব্যস্ত থাকে, তাহলে এমুলেটরটি অন্য পোর্টে স্যুইচ করে যা 2-এ প্রয়োজনীয়তা পূরণ করে।
  • আপনি এমুলেটর শুরু করার পরে আপনি adb সার্ভার শুরু করবেন।

এই পরিস্থিতি এড়াতে একটি উপায় হল এমুলেটরকে তার নিজস্ব পোর্ট বেছে নিতে দেওয়া এবং একবারে 16 টির বেশি এমুলেটর চালানো না। আরেকটি উপায় হল emulator কমান্ড ব্যবহার করার আগে সর্বদা adb সার্ভার চালু করা, যেমনটি নিম্নলিখিত উদাহরণগুলিতে ব্যাখ্যা করা হয়েছে।

উদাহরণ 1: নিম্নলিখিত কমান্ডের ক্রমানুসারে, adb devices কমান্ড adb সার্ভার শুরু করে, কিন্তু ডিভাইসের তালিকা প্রদর্শিত হয় না।

adb সার্ভার বন্ধ করুন এবং দেখানো ক্রমে নিম্নলিখিত কমান্ড লিখুন। AVD নামের জন্য, আপনার সিস্টেম থেকে একটি বৈধ AVD নাম প্রদান করুন। AVD নামের একটি তালিকা পেতে, emulator -list-avds টাইপ করুন। emulator কমান্ডটি android_sdk /tools ডিরেক্টরিতে রয়েছে।

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5555
$ adb devices

List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

উদাহরণ 2: নিম্নলিখিত কমান্ড ক্রমানুসারে, adb devices ডিভাইসের তালিকা প্রদর্শন করে কারণ adb সার্ভারটি প্রথমে শুরু হয়েছিল।

adb devices আউটপুটে এমুলেটর দেখতে, adb সার্ভার বন্ধ করুন এবং তারপরে emulator কমান্ড ব্যবহার করার পরে এবং adb devices কমান্ড ব্যবহার করার আগে এটি আবার শুরু করুন, নিম্নরূপ:

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5557
$ adb start-server
$ adb devices

List of devices attached
emulator-5557 device

এমুলেটর কমান্ড-লাইন বিকল্পগুলি সম্পর্কে আরও তথ্যের জন্য, কমান্ড-লাইন স্টার্টআপ বিকল্পগুলি দেখুন।

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

একাধিক ডিভাইস চলমান থাকলে, adb কমান্ড ইস্যু করার সময় আপনাকে অবশ্যই লক্ষ্য ডিভাইসটি নির্দিষ্ট করতে হবে। লক্ষ্য নির্দিষ্ট করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. লক্ষ্যের সিরিয়াল নম্বর পেতে devices কমান্ড ব্যবহার করুন।
  2. আপনার সিরিয়াল নম্বর হয়ে গেলে, সিরিয়াল নম্বর নির্দিষ্ট করতে adb কমান্ডের সাথে -s বিকল্পটি ব্যবহার করুন।
    1. আপনি যদি অনেকগুলি adb কমান্ড ইস্যু করতে যাচ্ছেন, তাহলে আপনি ক্রমিক নম্বর ধারণ করার জন্য $ANDROID_SERIAL পরিবেশ পরিবর্তনশীল সেট করতে পারেন।
    2. আপনি যদি -s এবং $ANDROID_SERIAL উভয়ই ব্যবহার করেন, -s ওভাররাইড করে $ANDROID_SERIAL

নিম্নলিখিত উদাহরণে, সংযুক্ত ডিভাইসের তালিকা পাওয়া যায়, এবং তারপরে সেই ডিভাইসে helloWorld.apk ইনস্টল করতে ডিভাইসগুলির একটির সিরিয়াল নম্বর ব্যবহার করা হয়:

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
0.0.0.0:6520  device

# To install on emulator-5555
$ adb -s emulator-5555 install helloWorld.apk
# To install on 0.0.0.0:6520
$ adb -s 0.0.0.0:6520 install helloWorld.apk

দ্রষ্টব্য: আপনি একাধিক ডিভাইস উপলব্ধ থাকাকালীন একটি টার্গেট ডিভাইস নির্দিষ্ট না করে একটি কমান্ড ইস্যু করলে, adb একটি ত্রুটি প্রদর্শন করে "adb: একাধিক ডিভাইস/এমুলেটর"।

আপনার যদি একাধিক ডিভাইস উপলব্ধ থাকে তবে শুধুমাত্র একটি এমুলেটর হয়, তাহলে এমুলেটরে কমান্ড পাঠাতে -e বিকল্পটি ব্যবহার করুন। যদি একাধিক ডিভাইস থাকে কিন্তু শুধুমাত্র একটি হার্ডওয়্যার ডিভাইস সংযুক্ত থাকে, তাহলে হার্ডওয়্যার ডিভাইসে কমান্ড পাঠাতে -d বিকল্পটি ব্যবহার করুন।

একটি অ্যাপ ইনস্টল করুন

আপনি install কমান্ড সহ একটি এমুলেটর বা সংযুক্ত ডিভাইসে একটি APK ইনস্টল করতে adb ব্যবহার করতে পারেন:

adb install path_to_apk

আপনি একটি পরীক্ষা APK ইনস্টল করার সময় install কমান্ডের সাথে -t বিকল্পটি ব্যবহার করতে হবে। আরও তথ্যের জন্য, দেখুন -t

একাধিক APK ইনস্টল করতে install-multiple ব্যবহার করুন। আপনি যদি প্লে কনসোল থেকে আপনার অ্যাপের জন্য একটি নির্দিষ্ট ডিভাইসের জন্য সমস্ত APK ডাউনলোড করেন এবং এমুলেটর বা শারীরিক ডিভাইসে ইনস্টল করতে চান তবে এটি কার্যকর।

আপনি একটি এমুলেটর/ডিভাইস ইনস্ট্যান্সে ইনস্টল করতে পারেন এমন একটি APK ফাইল কীভাবে তৈরি করবেন সে সম্পর্কে আরও তথ্যের জন্য, আপনার অ্যাপ তৈরি করুন এবং চালান দেখুন।

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

পোর্ট ফরওয়ার্ডিং সেট আপ করুন

ইচ্ছামত পোর্ট ফরওয়ার্ডিং সেট আপ করতে forward কমান্ডটি ব্যবহার করুন, যা একটি নির্দিষ্ট হোস্ট পোর্টের অনুরোধগুলিকে একটি ডিভাইসের একটি ভিন্ন পোর্টে ফরোয়ার্ড করে। নিম্নলিখিত উদাহরণটি হোস্ট পোর্ট 6100 এর ডিভাইস পোর্ট 7100 এ ফরওয়ার্ডিং সেট আপ করে:

adb forward tcp:6100 tcp:7100

নিম্নলিখিত উদাহরণটি হোস্ট পোর্ট 6100-কে স্থানীয়:logd-এ ফরওয়ার্ডিং সেট আপ করে:

adb forward tcp:6100 local:logd

আপনি ডিভাইসে একটি প্রদত্ত পোর্টে কি পাঠানো হচ্ছে তা নির্ধারণ করার চেষ্টা করলে এটি কার্যকর হতে পারে। সমস্ত প্রাপ্ত ডেটা সিস্টেম-লগিং ডেমনে লেখা হবে এবং ডিভাইস লগগুলিতে প্রদর্শিত হবে।

একটি ডিভাইস থেকে ফাইল কপি করুন

একটি ডিভাইস থেকে ফাইল কপি করতে pull এবং push কমান্ড ব্যবহার করুন। install কমান্ডের বিপরীতে, যা শুধুমাত্র একটি নির্দিষ্ট স্থানে একটি APK ফাইল অনুলিপি করে, pull এবং push কমান্ডগুলি আপনাকে ডিভাইসের যেকোনো অবস্থানে নির্বিচারে ডিরেক্টরি এবং ফাইলগুলি অনুলিপি করতে দেয়।

ডিভাইস থেকে একটি ফাইল বা ডিরেক্টরি এবং এর সাব-ডিরেক্টরি অনুলিপি করতে, নিম্নলিখিতগুলি করুন:

adb pull remote local

ডিভাইসে একটি ফাইল বা ডিরেক্টরি এবং এর সাব-ডিরেক্টরি অনুলিপি করতে, নিম্নলিখিতগুলি করুন:

adb push local remote

আপনার ডেভেলপমেন্ট মেশিনে (স্থানীয়) এবং ডিভাইসে (দূরবর্তী) টার্গেট ফাইল/ডিরেক্টরীতে পাথ দিয়ে local এবং remote প্রতিস্থাপন করুন। যেমন:

adb push myfile.txt /sdcard/myfile.txt

অ্যাডবি সার্ভার বন্ধ করুন

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

adb সার্ভার বন্ধ করতে, adb kill-server কমান্ড ব্যবহার করুন। তারপর আপনি অন্য কোন adb কমান্ড জারি করে সার্ভার পুনরায় চালু করতে পারেন।

adb কমান্ড ইস্যু করুন

আপনার ডেভেলপমেন্ট মেশিনে একটি কমান্ড লাইন থেকে বা নিম্নলিখিত ব্যবহার করে একটি স্ক্রিপ্ট থেকে adb কমান্ড ইস্যু করুন:

adb [-d | -e | -s serial_number] command

শুধুমাত্র একটি এমুলেটর চলমান থাকলে বা শুধুমাত্র একটি ডিভাইস সংযুক্ত থাকলে, ডিফল্টরূপে সেই ডিভাইসে adb কমান্ড পাঠানো হয়। যদি একাধিক এমুলেটর চলমান থাকে এবং/অথবা একাধিক ডিভাইস সংযুক্ত থাকে, তাহলে আপনাকে -d , -e , বা -s বিকল্পটি ব্যবহার করতে হবে লক্ষ্য ডিভাইসটি নির্দিষ্ট করতে যেখানে কমান্ডটি নির্দেশিত হবে।

আপনি নিম্নলিখিত কমান্ড ব্যবহার করে সমস্ত সমর্থিত adb কমান্ডের একটি বিস্তারিত তালিকা দেখতে পারেন:

adb --help

শেল কমান্ড ইস্যু করুন

আপনি adb এর মাধ্যমে ডিভাইস কমান্ড ইস্যু করতে বা একটি ইন্টারেক্টিভ শেল শুরু করতে shell কমান্ড ব্যবহার করতে পারেন। একটি একক কমান্ড ইস্যু করতে, এই মত shell কমান্ড ব্যবহার করুন:

adb [-d |-e | -s serial_number] shell shell_command

একটি ডিভাইসে একটি ইন্টারেক্টিভ শেল শুরু করতে, এই মত shell কমান্ড ব্যবহার করুন:

adb [-d | -e | -s serial_number] shell

একটি ইন্টারেক্টিভ শেল থেকে প্রস্থান করতে, Control+D টিপুন বা exit টাইপ করুন।

অ্যান্ড্রয়েড বেশিরভাগ সাধারণ ইউনিক্স কমান্ড-লাইন সরঞ্জাম সরবরাহ করে। উপলব্ধ সরঞ্জামগুলির একটি তালিকার জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

adb shell ls /system/bin

--help আর্গুমেন্টের মাধ্যমে বেশিরভাগ কমান্ডের জন্য সাহায্য পাওয়া যায়। অনেক শেল কমান্ড টয়বক্স দ্বারা সরবরাহ করা হয়। toybox --help এর মাধ্যমে সমস্ত toybox কমান্ডের জন্য প্রযোজ্য সাধারণ সাহায্য পাওয়া যায়।

অ্যান্ড্রয়েড প্ল্যাটফর্ম টুল 23 এবং উচ্চতরের সাথে, adb ssh(1) কমান্ডের মতো আর্গুমেন্ট পরিচালনা করে। এই পরিবর্তনটি কমান্ড ইনজেকশনের অনেক সমস্যার সমাধান করেছে এবং শেল মেটাক্যারেক্টার ধারণকারী কমান্ডগুলিকে নিরাপদে চালানো সম্ভব করে তোলে, যেমন adb install Let\'sGo.apk । এই পরিবর্তনের অর্থ হল শেল মেটাক্যারেক্টার ধারণ করে এমন যেকোনো কমান্ডের ব্যাখ্যাও পরিবর্তিত হয়েছে।

উদাহরণস্বরূপ, adb shell setprop key ' two words ' এখন একটি ত্রুটি, কারণ উদ্ধৃতিগুলি স্থানীয় শেল দ্বারা গ্রাস করা হয় এবং ডিভাইসটি adb shell setprop key two words দেখতে পায়। কমান্ডটি কাজ করার জন্য, দুইবার উদ্ধৃতি করুন, একবার স্থানীয় শেলের জন্য এবং একবার দূরবর্তী শেলের জন্য, যেমন আপনি ssh(1) দিয়ে করেন। উদাহরণস্বরূপ, adb shell setprop key "' two words '" কাজ করে কারণ স্থানীয় শেলটি উদ্ধৃতির বাইরের স্তরটি নেয় এবং ডিভাইসটি এখনও উদ্ধৃতির ভিতরের স্তরটি দেখতে পায়: setprop key 'two words' । পালানোও একটি বিকল্প, তবে দুবার উদ্ধৃত করা সাধারণত সহজ।

এছাড়াও Logcat কমান্ড-লাইন টুল দেখুন, যা সিস্টেম লগ নিরীক্ষণের জন্য দরকারী।

অ্যাক্টিভিটি ম্যানেজারকে কল করুন

একটি adb শেলের মধ্যে, আপনি বিভিন্ন সিস্টেম ক্রিয়া সম্পাদনের জন্য কার্যকলাপ পরিচালক ( am ) টুলের সাথে কমান্ড ইস্যু করতে পারেন, যেমন একটি কার্যকলাপ শুরু করা, একটি প্রক্রিয়া জোর করে বন্ধ করা, একটি উদ্দেশ্য সম্প্রচার করা, ডিভাইসের স্ক্রীন বৈশিষ্ট্যগুলি পরিবর্তন করা এবং আরও অনেক কিছু।

একটি শেল থাকাকালীন, am সিনট্যাক্স হল:

am command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি কার্যকলাপ পরিচালক কমান্ড ইস্যু করতে পারেন। যেমন:

adb shell am start -a android.intent.action.VIEW

সারণী 1. উপলব্ধ কার্যকলাপ পরিচালক কমান্ড

আদেশ বর্ণনা
start [ options ] intent intent দ্বারা নির্দিষ্ট একটি Activity শুরু করুন।

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • -D : ডিবাগিং সক্ষম করুন।
  • -W : লঞ্চ সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন।
  • --start-profiler file : প্রোফাইলার শুরু করুন এবং file ফলাফল পাঠান।
  • -P file : যেমন --start-profiler , কিন্তু অ্যাপটি নিষ্ক্রিয় হয়ে গেলে প্রোফাইলিং বন্ধ হয়ে যায়।
  • -R count : কার্যকলাপ লঞ্চ count বার পুনরাবৃত্তি করুন. প্রতিটি পুনরাবৃত্তির আগে, শীর্ষ কার্যকলাপ শেষ হবে।
  • -S : কার্যকলাপ শুরু করার আগে লক্ষ্য অ্যাপটিকে জোর করে বন্ধ করুন।
  • --opengl-trace : OpenGL ফাংশনগুলির ট্রেসিং সক্ষম করুন।
  • --user user_id | current : কোন ব্যবহারকারী হিসাবে চালাতে হবে তা নির্দিষ্ট করুন; যদি নির্দিষ্ট না করা হয়, তাহলে বর্তমান ব্যবহারকারী হিসাবে চালান।
startservice [ options ] intent intent দ্বারা নির্দিষ্ট Service শুরু করুন।

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • --user user_id | current : কোন ব্যবহারকারী হিসাবে চালাতে হবে তা নির্দিষ্ট করুন। যদি নির্দিষ্ট করা না থাকে, তাহলে বর্তমান ব্যবহারকারী হিসেবে চালান।
force-stop package package সাথে যুক্ত সবকিছু জোর করে বন্ধ করুন।
kill [ options ] package package সাথে যুক্ত সমস্ত প্রসেস মেরে ফেলুন। এই কমান্ডটি কেবলমাত্র সেই প্রক্রিয়াগুলিকে হত্যা করে যা হত্যা করা নিরাপদ এবং এটি ব্যবহারকারীর অভিজ্ঞতাকে প্রভাবিত করবে না।

বিকল্পগুলি হল:

  • --user user_id | all | current : কোন ব্যবহারকারীর প্রক্রিয়াগুলিকে হত্যা করতে হবে তা নির্দিষ্ট করুন। যদি নির্দিষ্ট করা না থাকে, তাহলে সমস্ত ব্যবহারকারীর প্রসেস মেরে ফেলুন।
kill-all সমস্ত ব্যাকগ্রাউন্ড প্রসেস মেরে ফেলুন।
broadcast [ options ] intent একটি সম্প্রচার অভিপ্রায় ইস্যু.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

বিকল্পগুলি হল:

  • [--user user_id | all | current] : কোন ব্যবহারকারীকে পাঠাতে হবে তা উল্লেখ করুন। যদি নির্দিষ্ট না থাকে, তাহলে সমস্ত ব্যবহারকারীদের কাছে পাঠান।
instrument [ options ] component একটি Instrumentation উদাহরণ দিয়ে পর্যবেক্ষণ শুরু করুন। সাধারণত লক্ষ্য component ফর্ম test_package / runner_class

বিকল্পগুলি হল:

  • -r : কাঁচা ফলাফল প্রিন্ট করুন (অন্যথায় report_key_streamresult ডিকোড করুন)। পারফরম্যান্স পরিমাপের জন্য কাঁচা আউটপুট তৈরি করতে [-e perf true] দিয়ে ব্যবহার করুন।
  • -e name value : আর্গুমেন্টের name value হিসাবে সেট করুন। টেস্ট রানারদের জন্য একটি সাধারণ ফর্ম হল -e testrunner_flag value [, value ...]
  • -p file : file প্রোফাইলিং ডেটা লিখুন।
  • -w : ফিরে আসার আগে ইন্সট্রুমেন্টেশন শেষ হওয়ার জন্য অপেক্ষা করুন। টেস্ট রানারদের জন্য প্রয়োজনীয়।
  • --no-window-animation : চলার সময় উইন্ডো অ্যানিমেশন বন্ধ করুন।
  • --user user_id | current : কোন ব্যবহারকারীর ইন্সট্রুমেন্টেশন চলে তা নির্দিষ্ট করুন। নির্দিষ্ট না থাকলে বর্তমান ব্যবহারকারীতে চালান।
profile start process file process প্রোফাইলার শুরু করুন, file ফলাফল লিখুন।
profile stop process process প্রোফাইলার বন্ধ করুন।
dumpheap [ options ] process file process গাদা ডাম্প করুন, file লিখুন।

বিকল্পগুলি হল:

  • --user [ user_id | current] : একটি প্রক্রিয়ার নাম সরবরাহ করার সময়, ডাম্প করার প্রক্রিয়াটির ব্যবহারকারী উল্লেখ করুন। উল্লেখ না থাকলে, বর্তমান ব্যবহারকারী ব্যবহার করা হয়।
  • -b [| png | jpg | webp] : গ্রাফিক্স মেমরি থেকে বিটম্যাপ ডাম্প করুন (API লেভেল 35 এবং তার উপরে)। ঐচ্ছিকভাবে ডাম্প ইন করার বিন্যাস নির্দিষ্ট করুন (ডিফল্টরূপে PNG)।
  • -n : পরিচালিত হিপের পরিবর্তে নেটিভ হিপ ডাম্প করুন।
set-debug-app [ options ] package ডিবাগ করার জন্য অ্যাপ package সেট করুন।

বিকল্পগুলি হল:

  • -w : অ্যাপ শুরু হলে ডিবাগারের জন্য অপেক্ষা করুন।
  • --persistent : এই মান বজায় রাখুন।
clear-debug-app set-debug-app দিয়ে ডিবাগ করার জন্য আগের সেটটি সাফ করুন।
monitor [ options ] ক্র্যাশ বা ANR-এর জন্য পর্যবেক্ষণ শুরু করুন।

বিকল্পগুলি হল:

  • --gdb : ক্র্যাশ/ANR এ প্রদত্ত পোর্টে gdbserv শুরু করুন।
screen-compat {on | off} package package পর্দা সামঞ্জস্যপূর্ণ মোড নিয়ন্ত্রণ করুন।
display-size [reset | width x height ] ডিভাইস প্রদর্শনের আকার ওভাররাইড করুন। এই কমান্ডটি একটি বড় স্ক্রীন সহ একটি ডিভাইস ব্যবহার করে একটি ছোট স্ক্রীন রেজোলিউশনের অনুকরণ করে বিভিন্ন স্ক্রীন সাইজ জুড়ে আপনার অ্যাপটি পরীক্ষা করার জন্য সহায়ক এবং এর বিপরীতে।

উদাহরণ:
am display-size 1280x800

display-density dpi ডিভাইস প্রদর্শনের ঘনত্ব ওভাররাইড করুন। এই কমান্ডটি কম ঘনত্বের স্ক্রীন ব্যবহার করে উচ্চ-ঘনত্বের স্ক্রীন পরিবেশের অনুকরণ করে বিভিন্ন স্ক্রীনের ঘনত্ব জুড়ে আপনার অ্যাপ পরীক্ষা করার জন্য সহায়ক।

উদাহরণ:
am display-density 480

to-uri intent একটি URI হিসাবে প্রদত্ত অভিপ্রায় স্পেসিফিকেশন মুদ্রণ করুন.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

to-intent-uri intent প্রদত্ত অভিপ্রায় স্পেসিফিকেশন একটি intent: URI.

উদ্দেশ্য আর্গুমেন্টের জন্য স্পেসিফিকেশন দেখুন।

উদ্দেশ্য আর্গুমেন্ট জন্য স্পেসিফিকেশন

অ্যাক্টিভিটি ম্যানেজার কমান্ডগুলির জন্য যা একটি intent যুক্তি গ্রহণ করে, আপনি নিম্নলিখিত বিকল্পগুলির সাথে অভিপ্রায় নির্দিষ্ট করতে পারেন:

প্যাকেজ ম্যানেজারকে কল করুন ( pm )

একটি adb শেলের মধ্যে, আপনি ডিভাইসে ইনস্টল করা অ্যাপ প্যাকেজগুলিতে অ্যাকশন এবং প্রশ্নগুলি সম্পাদন করতে প্যাকেজ ম্যানেজার ( pm ) টুলের সাহায্যে কমান্ড ইস্যু করতে পারেন।

একটি শেলে থাকাকালীন, pm সিনট্যাক্স হল:

pm command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি প্যাকেজ ম্যানেজার কমান্ড ইস্যু করতে পারেন। যেমন:

adb shell pm uninstall com.example.MyApp

সারণি 2. উপলব্ধ প্যাকেজ ম্যানেজার কমান্ড

আদেশ বর্ণনা
list packages [ options ] filter সমস্ত প্যাকেজ প্রিন্ট করুন, ঐচ্ছিকভাবে শুধুমাত্র যাদের প্যাকেজের নাম filter লেখা আছে।

বিকল্প:

  • -f : সংশ্লিষ্ট ফাইল দেখুন।
  • -d : শুধুমাত্র নিষ্ক্রিয় প্যাকেজ দেখাতে ফিল্টার করুন।
  • -e : শুধুমাত্র সক্ষম প্যাকেজগুলি দেখাতে ফিল্টার করুন।
  • -s : শুধুমাত্র সিস্টেম প্যাকেজ দেখাতে ফিল্টার করুন।
  • -3 : শুধুমাত্র তৃতীয় পক্ষের প্যাকেজ দেখাতে ফিল্টার করুন।
  • -i : প্যাকেজগুলির জন্য ইনস্টলার দেখুন।
  • -u : আনইনস্টল করা প্যাকেজ অন্তর্ভুক্ত করুন।
  • --user user_id : প্রশ্ন করার জন্য ব্যবহারকারীর স্থান।
list permission-groups সমস্ত পরিচিত অনুমতি গ্রুপ প্রিন্ট করুন.
list permissions [ options ] group সমস্ত পরিচিত অনুমতি প্রিন্ট করুন, ঐচ্ছিকভাবে শুধুমাত্র group থাকা।

বিকল্প:

  • -g : গ্রুপ দ্বারা সংগঠিত.
  • -f : সমস্ত তথ্য প্রিন্ট করুন।
  • -s : সংক্ষিপ্ত সারাংশ।
  • -d : শুধুমাত্র বিপজ্জনক অনুমতি তালিকা.
  • -u : শুধুমাত্র ব্যবহারকারীরা যে অনুমতিগুলি দেখতে পাবেন তা তালিকাভুক্ত করুন।
list instrumentation [ options ] সমস্ত পরীক্ষা প্যাকেজ তালিকা.

বিকল্প:

  • -f : পরীক্ষার প্যাকেজের জন্য APK ফাইলের তালিকা করুন।
  • target_package : শুধুমাত্র এই অ্যাপের জন্য পরীক্ষা প্যাকেজ তালিকা করুন।
list features সিস্টেমের সমস্ত বৈশিষ্ট্য মুদ্রণ করুন।
list libraries বর্তমান ডিভাইস দ্বারা সমর্থিত সমস্ত লাইব্রেরি প্রিন্ট করুন।
list users সিস্টেমে সমস্ত ব্যবহারকারী মুদ্রণ করুন।
path package প্রদত্ত package APK-এর পথ প্রিন্ট করুন।
install [ options ] path সিস্টেমে path দ্বারা নির্দিষ্ট একটি প্যাকেজ ইনস্টল করুন।

বিকল্প:

  • -r : একটি বিদ্যমান অ্যাপ পুনরায় ইনস্টল করুন, এর ডেটা রেখে।
  • -t : পরীক্ষার APK ইনস্টল করার অনুমতি দিন। আপনি যখন শুধুমাত্র আপনার অ্যাপটি চালান বা ডিবাগ করেন বা Android Studio Build > Build APK কমান্ড ব্যবহার করেন তখন Gradle একটি পরীক্ষামূলক APK তৈরি করে। যদি APK একটি ডেভেলপার প্রিভিউ SDK ব্যবহার করে তৈরি করা হয়, আপনি যদি একটি টেস্ট APK ইন্সটল করছেন তাহলে আপনাকে install কমান্ডের সাথে -t বিকল্পটি অন্তর্ভুক্ত করতে হবে।
  • -i installer_package_name : ইনস্টলার প্যাকেজের নাম উল্লেখ করুন।
  • --install-location location : নিম্নলিখিত মানগুলির একটি ব্যবহার করে ইনস্টল করার অবস্থান সেট করুন:
    • 0 : ডিফল্ট ইনস্টল অবস্থান ব্যবহার করুন.
    • 1 : অভ্যন্তরীণ ডিভাইস স্টোরেজ ইনস্টল করুন.
    • 2 : বাহ্যিক মিডিয়াতে ইনস্টল করুন।
  • -f : অভ্যন্তরীণ সিস্টেম মেমরিতে প্যাকেজ ইনস্টল করুন।
  • -d : সংস্করণ কোড ডাউনগ্রেড করার অনুমতি দিন।
  • -g : অ্যাপ ম্যানিফেস্টে তালিকাভুক্ত সমস্ত অনুমতি দিন।
  • --fastdeploy : পরিবর্তন করা APK-এর অংশগুলি আপডেট করে একটি ইনস্টল করা প্যাকেজ দ্রুত আপডেট করুন।
  • --incremental : ব্যাকগ্রাউন্ডে অবশিষ্ট ডেটা স্ট্রিম করার সময় অ্যাপটি চালু করার জন্য যথেষ্ট APK ইনস্টল করে। এই বৈশিষ্ট্যটি ব্যবহার করতে, আপনাকে অবশ্যই APK স্বাক্ষর করতে হবে, একটি APK স্বাক্ষর স্কিম v4 ফাইল তৈরি করতে হবে এবং এই ফাইলটিকে APK-এর মতো একই ডিরেক্টরিতে রাখতে হবে। এই বৈশিষ্ট্যটি শুধুমাত্র কিছু ডিভাইসে সমর্থিত। এই বিকল্পটি adb বৈশিষ্ট্যটি ব্যবহার করতে বাধ্য করে বা এটি সমর্থিত না হলে ব্যর্থ হয়, কেন এটি ব্যর্থ হয়েছে তার ভার্বস তথ্য সহ। APK-এ অ্যাক্সেস দেওয়ার আগে APK সম্পূর্ণরূপে ইনস্টল না হওয়া পর্যন্ত অপেক্ষা করতে --wait বিকল্পটি যোগ করুন।

    --no-incremental adb এই বৈশিষ্ট্যটি ব্যবহার করতে বাধা দেয়।

uninstall [ options ] package সিস্টেম থেকে একটি প্যাকেজ সরিয়ে দেয়।

বিকল্প:

  • -k : প্যাকেজ অপসারণের পরে ডেটা এবং ক্যাশে ডিরেক্টরি রাখুন।
  • --user user_id : সেই ব্যবহারকারীকে নির্দিষ্ট করে যার জন্য প্যাকেজটি সরানো হয়েছে।
  • --versionCode version_code : অ্যাপটিতে প্রদত্ত সংস্করণ কোড থাকলেই কেবল আনইনস্টল হয়।
clear package একটি প্যাকেজের সাথে যুক্ত সমস্ত ডেটা মুছুন।
enable package_or_component প্রদত্ত প্যাকেজ বা উপাদান সক্রিয় করুন ("প্যাকেজ/শ্রেণী" হিসাবে লেখা)।
disable package_or_component প্রদত্ত প্যাকেজ বা উপাদান অক্ষম করুন ("প্যাকেজ/শ্রেণী" হিসাবে লেখা)।
disable-user [ options ] package_or_component

বিকল্প:

  • --user user_id : অক্ষম করার জন্য ব্যবহারকারী।
grant package_name permission একটি অ্যাপের অনুমতি দিন। Android 6.0 (API লেভেল 23) এবং উচ্চতর চলমান ডিভাইসগুলিতে, অনুমতিটি অ্যাপ ম্যানিফেস্টে ঘোষিত যেকোনো অনুমতি হতে পারে। Android 5.1 (API লেভেল 22) এবং তার নিচে চলমান ডিভাইসগুলিতে অ্যাপ দ্বারা সংজ্ঞায়িত একটি ঐচ্ছিক অনুমতি থাকতে হবে।
revoke package_name permission একটি অ্যাপ্লিকেশন থেকে একটি অনুমতি প্রত্যাহার করুন. Android 6.0 (API লেভেল 23) এবং উচ্চতর চলমান ডিভাইসগুলিতে, অনুমতিটি অ্যাপ ম্যানিফেস্টে ঘোষিত যেকোনো অনুমতি হতে পারে। Android 5.1 (API লেভেল 22) এবং তার নিচে চলমান ডিভাইসগুলিতে অ্যাপ দ্বারা সংজ্ঞায়িত একটি ঐচ্ছিক অনুমতি থাকতে হবে।
set-install-location location ডিফল্ট ইনস্টল অবস্থান পরিবর্তন করুন. অবস্থান মান:
  • 0 : স্বয়ংক্রিয়: সিস্টেমকে সর্বোত্তম অবস্থান নির্ধারণ করতে দিন।
  • 1 : অভ্যন্তরীণ: অভ্যন্তরীণ ডিভাইস সঞ্চয়স্থানে ইনস্টল করুন।
  • 2 : বাহ্যিক: বাহ্যিক মিডিয়াতে ইনস্টল করুন।

দ্রষ্টব্য: এটি শুধুমাত্র ডিবাগ করার উদ্দেশ্যে করা হয়েছে। এটি ব্যবহার করলে অ্যাপগুলি ভেঙে যেতে পারে এবং অন্যান্য অবাঞ্ছিত আচরণ হতে পারে।

get-install-location বর্তমান ইনস্টলের অবস্থান ফেরত দেয়। রিটার্ন মান:
  • 0 [auto] : সিস্টেমকে সর্বোত্তম অবস্থান নির্ধারণ করতে দিন
  • 1 [internal] : অভ্যন্তরীণ ডিভাইস স্টোরেজে ইনস্টল করুন
  • 2 [external] : বাহ্যিক মিডিয়াতে ইনস্টল করুন
set-permission-enforced permission [true | false] প্রদত্ত অনুমতি প্রয়োগ করা উচিত কিনা তা উল্লেখ করুন।
trim-caches desired_free_space প্রদত্ত ফাঁকা জায়গায় পৌঁছানোর জন্য ক্যাশে ফাইল ট্রিম করুন।
create-user user_name প্রদত্ত user_name দিয়ে একটি নতুন ব্যবহারকারী তৈরি করুন, ব্যবহারকারীর নতুন ব্যবহারকারী শনাক্তকারী মুদ্রণ করুন।
remove-user user_id প্রদত্ত user_id সহ ব্যবহারকারীকে সরান, সেই ব্যবহারকারীর সাথে যুক্ত সমস্ত ডেটা মুছে দিন
get-max-users ডিভাইস দ্বারা সমর্থিত ব্যবহারকারীদের সর্বাধিক সংখ্যা প্রিন্ট করুন।
get-app-links [ options ] [ package ]

প্রদত্ত package জন্য ডোমেন যাচাইকরণ অবস্থা মুদ্রণ করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য। রাজ্য কোড নিম্নরূপ সংজ্ঞায়িত করা হয়:

  • none : এই ডোমেনের জন্য কিছুই রেকর্ড করা হয়নি
  • verified : ডোমেনটি সফলভাবে যাচাই করা হয়েছে
  • approved : বল-অনুমোদিত, সাধারণত শেল মাধ্যমে
  • denied : বলপ্রত্যাখ্যান, সাধারণত শেল মাধ্যমে
  • migrated : একটি উত্তরাধিকার প্রতিক্রিয়া থেকে যাচাইকরণ সংরক্ষিত
  • restored : ব্যবহারকারীর ডেটা পুনরুদ্ধার থেকে সংরক্ষিত যাচাইকরণ
  • legacy_failure : একটি উত্তরাধিকার যাচাইকারী দ্বারা প্রত্যাখ্যাত, অজানা কারণ
  • system_configured : ডিভাইস কনফিগারেশন দ্বারা স্বয়ংক্রিয়ভাবে অনুমোদিত
  • >= 1024 : কাস্টম ত্রুটি কোড, যা ডিভাইস যাচাইকারীর জন্য নির্দিষ্ট

বিকল্পগুলি হল:

  • --user user_id : ব্যবহারকারী নির্বাচন অন্তর্ভুক্ত করুন। সমস্ত ডোমেন অন্তর্ভুক্ত করুন, শুধুমাত্র স্বয়ংক্রিয় যাচাইকরণ নয়।
reset-app-links [ options ] [ package ]

প্রদত্ত প্যাকেজের জন্য ডোমেন যাচাইকরণ অবস্থা রিসেট করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য।

  • package : রিসেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ রিসেট করতে "সব"

বিকল্পগুলি হল:

  • --user user_id : ব্যবহারকারী নির্বাচন অন্তর্ভুক্ত করুন। সমস্ত ডোমেন অন্তর্ভুক্ত করুন, শুধুমাত্র স্বয়ংক্রিয় যাচাইকরণ নয়।
verify-app-links [ --re-verify ] [ package ]

প্রদত্ত package জন্য একটি যাচাইকরণের অনুরোধ সম্প্রচার করুন, অথবা কোনোটি নির্দিষ্ট না থাকলে সমস্ত প্যাকেজের জন্য। প্যাকেজটি পূর্বে কোনো প্রতিক্রিয়া রেকর্ড না করলেই কেবল পাঠায়।

  • --re-verify : প্যাকেজটি একটি প্রতিক্রিয়া রেকর্ড করলেও পাঠান
set-app-links [--package package ] state domains

একটি প্যাকেজের জন্য একটি ডোমেনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা স্বয়ংক্রিয় যাচাই হিসাবে ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --package package : সেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ সেট করার জন্য "সব"
  • state : ডোমেন সেট করার জন্য কোড। বৈধ মান হল:
    • STATE_NO_RESPONSE (0) : রিসেট করুন যেন কোনো প্রতিক্রিয়া রেকর্ড করা হয়নি।
    • STATE_SUCCESS (1) : ডোমেনকে ডোমেন যাচাইকরণ এজেন্ট দ্বারা সফলভাবে যাচাই করা হিসাবে বিবেচনা করুন। মনে রাখবেন যে ডোমেন যাচাইকরণ এজেন্ট এটিকে ওভাররাইড করতে পারে।
    • STATE_APPROVED (2) : ডোমেনকে সর্বদা অনুমোদিত হিসাবে বিবেচনা করুন, ডোমেন যাচাইকরণ এজেন্টকে এটি পরিবর্তন করা থেকে বাধা দেয়।
    • STATE_DENIED (3) : ডোমেনকে সর্বদা অস্বীকৃত হিসাবে বিবেচনা করুন, ডোমেন যাচাইকরণ এজেন্টকে এটি পরিবর্তন করতে বাধা দেয়।
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"।
set-app-links-user-selection --user user_id [--package package ] enabled domains

একটি প্যাকেজের জন্য হোস্ট ব্যবহারকারী নির্বাচনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করা প্যাকেজ
  • enabled : ডোমেন অনুমোদন করতে হবে কিনা
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"
set-app-links-user-selection --user user_id [--package package ] enabled domains

একটি প্যাকেজের জন্য হোস্ট ব্যবহারকারী নির্বাচনের অবস্থা ম্যানুয়ালি সেট করুন। এটি কাজ করার জন্য ডোমেনটিকে অবশ্যই প্যাকেজ দ্বারা ঘোষণা করতে হবে। এই কমান্ডটি প্রয়োগ করা যায়নি এমন ডোমেনের ব্যর্থতার রিপোর্ট করবে না।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করা প্যাকেজ
  • enabled : ডোমেন অনুমোদন করতে হবে কিনা
  • domains : পরিবর্তন করার জন্য ডোমেনের স্থান-বিচ্ছিন্ন তালিকা, অথবা প্রতিটি ডোমেন পরিবর্তন করার জন্য "সমস্ত"
set-app-links-allowed --user user_id [--package package ] allowed

একটি প্যাকেজের জন্য স্বয়ংক্রিয়ভাবে যাচাই করা লিঙ্ক-হ্যান্ডলিং সেটিংটি টগল করুন।

  • --user user_id : যে ব্যবহারকারীর জন্য নির্বাচন পরিবর্তন করতে হবে
  • --package package : সেট করার জন্য প্যাকেজ, অথবা সমস্ত প্যাকেজ সেট করার জন্য "সব"; প্যাকেজ রিসেট করা হবে যদি কোনো প্যাকেজ নির্দিষ্ট করা না থাকে
  • allowed : প্যাকেজটিকে স্বয়ংক্রিয় যাচাই করা লিঙ্কগুলি খুলতে অনুমতি দেওয়ার জন্য সত্য, নিষ্ক্রিয় করার জন্য মিথ্যা৷
get-app-link-owners --user user_id [--package package ] domains

প্রদত্ত ব্যবহারকারীর জন্য একটি নির্দিষ্ট ডোমেনের জন্য মালিকদের প্রিন্ট করুন কম- থেকে উচ্চ-অগ্রাধিকার ক্রমে।

  • --user user_id : যে ব্যবহারকারীর জন্য প্রশ্ন করতে হবে
  • --package package : ঐচ্ছিকভাবে প্যাকেজ দ্বারা ঘোষিত সমস্ত ওয়েব ডোমেনের জন্যও মুদ্রণ করুন, বা সমস্ত প্যাকেজ প্রিন্ট করতে "সমস্ত"
  • domains : স্পেস-বিভক্ত ডোমেনের তালিকা যার জন্য অনুসন্ধান করতে হবে

ডিভাইস পলিসি ম্যানেজারকে কল করুন ( dpm )

আপনার ডিভাইস ম্যানেজমেন্ট অ্যাপ্লিকেশানগুলি বিকাশ এবং পরীক্ষা করতে আপনাকে সাহায্য করতে, ডিভাইস নীতি পরিচালক ( dpm ) টুলে কমান্ড ইস্যু করুন৷ সক্রিয় অ্যাডমিন অ্যাপ নিয়ন্ত্রণ করতে বা ডিভাইসে নীতির স্থিতি ডেটা পরিবর্তন করতে টুলটি ব্যবহার করুন।

একটি শেলে থাকাকালীন, dpm সিনট্যাক্স হল:

dpm command

আপনি দূরবর্তী শেল প্রবেশ না করে সরাসরি adb থেকে একটি ডিভাইস নীতি পরিচালক কমান্ড ইস্যু করতে পারেন:

adb shell dpm command

সারণী 3. উপলব্ধ ডিভাইস পলিসি ম্যানেজার কমান্ড

আদেশ বর্ণনা
set-active-admin [ options ] component সক্রিয় প্রশাসক হিসাবে component সেট.

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
set-profile-owner [ options ] component একটি বিদ্যমান ব্যবহারকারীর জন্য সক্রিয় প্রশাসক হিসাবে component এবং প্রোফাইল মালিক হিসাবে এর প্যাকেজ সেট করুন।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
  • --name name : মানব-পাঠযোগ্য প্রতিষ্ঠানের নাম উল্লেখ করুন।
set-device-owner [ options ] component সক্রিয় প্রশাসক হিসাবে component এবং ডিভাইস মালিক হিসাবে এর প্যাকেজ সেট করুন।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
  • --name name : মানব-পাঠযোগ্য প্রতিষ্ঠানের নাম উল্লেখ করুন।
remove-active-admin [ options ] component একটি সক্রিয় অ্যাডমিন অক্ষম করুন। অ্যাপটিকে অবশ্যই ঘোষণা করতে হবে android:testOnly ম্যানিফেস্টে৷ এই কমান্ডটি ডিভাইস এবং প্রোফাইল মালিকদেরও সরিয়ে দেয়।

বিকল্পগুলি হল:

  • --user user_id : টার্গেট ব্যবহারকারী নির্দিষ্ট করুন। বর্তমান ব্যবহারকারী নির্বাচন করতে আপনি --user current পাস করতে পারেন।
clear-freeze-period-record সিস্টেম OTA আপডেটের জন্য পূর্বে সেট করা ফ্রিজ পিরিয়ডের ডিভাইসের রেকর্ড সাফ করুন। ফ্রিজ পিরিয়ড ম্যানেজ করে এমন অ্যাপ ডেভেলপ করার সময় ডিভাইসের সময় নির্ধারণের সীমাবদ্ধতা এড়াতে এটি কার্যকর। সিস্টেম আপডেটগুলি পরিচালনা করুন দেখুন।

Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

force-network-logs একটি DPC দ্বারা পুনরুদ্ধারের জন্য যেকোন বিদ্যমান নেটওয়ার্ক লগ প্রস্তুত করতে সিস্টেমটিকে বাধ্য করুন৷ সংযোগ বা DNS লগ উপলব্ধ থাকলে, DPC onNetworkLogsAvailable() কলব্যাক গ্রহণ করে। নেটওয়ার্ক কার্যকলাপ লগিং দেখুন.

এই কমান্ড হার-সীমিত. Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

force-security-logs ডিপিসি-তে বিদ্যমান নিরাপত্তা লগগুলি উপলব্ধ করতে সিস্টেমটিকে বাধ্য করুন৷ লগগুলি উপলব্ধ থাকলে, DPC onSecurityLogsAvailable() কলব্যাক গ্রহণ করে। লগ এন্টারপ্রাইজ ডিভাইস কার্যকলাপ দেখুন.

এই কমান্ড হার-সীমিত. Android 9.0 (API লেভেল 28) এবং উচ্চতর চলমান ডিভাইসগুলিতে সমর্থিত।

একটি স্ক্রিনশট নিন

screencap কমান্ডটি একটি ডিভাইস প্রদর্শনের স্ক্রিনশট নেওয়ার জন্য একটি শেল ইউটিলিটি।

একটি শেল থাকাকালীন, screencap সিনট্যাক্স হল:

screencap filename

কমান্ড লাইন থেকে screencap ব্যবহার করতে, নিম্নলিখিত লিখুন:

adb shell screencap /sdcard/screen.png

এখানে একটি উদাহরণ স্ক্রিনশট সেশন, স্ক্রিনশট ক্যাপচার করতে adb শেল ব্যবহার করে এবং ডিভাইস থেকে ফাইলটি ডাউনলোড করার জন্য pull কমান্ড:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

একটি ভিডিও রেকর্ড করুন

screenrecord কমান্ড হল একটি শেল ইউটিলিটি যা Android 4.4 (API লেভেল 19) এবং উচ্চতর চলমান ডিভাইসগুলির প্রদর্শন রেকর্ড করার জন্য। ইউটিলিটি একটি MPEG-4 ফাইলে স্ক্রীন কার্যকলাপ রেকর্ড করে। আপনি প্রচারমূলক বা প্রশিক্ষণ ভিডিও তৈরি করতে বা ডিবাগিং এবং পরীক্ষার জন্য এই ফাইলটি ব্যবহার করতে পারেন৷

একটি শেলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

screenrecord [options] filename

কমান্ড লাইন থেকে screenrecord ব্যবহার করতে, নিম্নলিখিত লিখুন:

adb shell screenrecord /sdcard/demo.mp4

Control+C টিপে স্ক্রীন রেকর্ডিং বন্ধ করুন। অন্যথায়, রেকর্ডিং স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় তিন মিনিটে বা --time-limit দ্বারা নির্ধারিত সময়সীমা।

আপনার ডিভাইসের স্ক্রীন রেকর্ড করা শুরু করতে, ভিডিও রেকর্ড করতে screenrecord কমান্ডটি চালান। তারপরে, হোস্ট কম্পিউটারে ডিভাইস থেকে ভিডিও ডাউনলোড করতে pull কমান্ডটি চালান। এখানে একটি উদাহরণ রেকর্ডিং সেশন:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

screenrecord ইউটিলিটি ডিভাইসের ডিসপ্লের আকৃতির অনুপাত বজায় রেখে আপনার অনুরোধ করা যেকোনো সমর্থিত রেজোলিউশন এবং বিট রেট রেকর্ড করতে পারে। ইউটিলিটি নেটিভ ডিসপ্লে রেজোলিউশনে রেকর্ড করে এবং ডিফল্টরূপে ওরিয়েন্টেশন, সর্বোচ্চ তিন মিনিটের দৈর্ঘ্য সহ।

screenrecord ইউটিলিটির সীমাবদ্ধতা:

  • ভিডিও ফাইলের সাথে অডিও রেকর্ড করা হয় না।
  • Wear OS চালিত ডিভাইসগুলির জন্য ভিডিও রেকর্ডিং উপলব্ধ নয়।
  • কিছু ডিভাইস তাদের নেটিভ ডিসপ্লে রেজোলিউশনে রেকর্ড করতে সক্ষম নাও হতে পারে। আপনি যদি স্ক্রীন রেকর্ডিংয়ে সমস্যার সম্মুখীন হন, তাহলে নিম্ন স্ক্রীন রেজোলিউশন ব্যবহার করার চেষ্টা করুন।
  • রেকর্ডিংয়ের সময় পর্দার ঘূর্ণন সমর্থিত নয়। রেকর্ডিংয়ের সময় যদি স্ক্রিনটি ঘোরে, তবে রেকর্ডিংয়ের কিছু স্ক্রীন কেটে যায়।

সারণী 4. screenrecord বিকল্প

অপশন বর্ণনা
--help কমান্ড সিনট্যাক্স এবং বিকল্পগুলি প্রদর্শন করুন
--size width x height ভিডিও আকার সেট করুন: 1280x720 । ডিফল্ট মান হল ডিভাইসের নেটিভ ডিসপ্লে রেজোলিউশন (যদি সমর্থিত হয়), না হলে 1280x720। সেরা ফলাফলের জন্য, আপনার ডিভাইসের অ্যাডভান্সড ভিডিও কোডিং (AVC) এনকোডার দ্বারা সমর্থিত আকার ব্যবহার করুন৷
--bit-rate rate ভিডিওর জন্য ভিডিও বিট রেট সেট করুন, প্রতি সেকেন্ডে মেগাবিট। ডিফল্ট মান হল 20Mbps। আপনি ভিডিওর গুণমান উন্নত করতে বিট রেট বাড়াতে পারেন, কিন্তু এটি করার ফলে বড় মুভি ফাইল হয়। নিম্নলিখিত উদাহরণটি রেকর্ডিং বিট রেট 6Mbps এ সেট করে:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time সেকেন্ডে সর্বোচ্চ রেকর্ডিং সময় সেট করুন। ডিফল্ট এবং সর্বোচ্চ মান হল 180 (3 মিনিট)।
--rotate আউটপুট 90 ডিগ্রি ঘোরান। এই বৈশিষ্ট্যটি পরীক্ষামূলক।
--verbose কমান্ড-লাইন স্ক্রিনে লগ তথ্য প্রদর্শন করুন। আপনি যদি এই বিকল্পটি সেট না করেন, ইউটিলিটি চলাকালীন কোনো তথ্য প্রদর্শন করে না।

অ্যাপের জন্য ART প্রোফাইল পড়ুন

অ্যান্ড্রয়েড 7.0 (এপিআই লেভেল 24) থেকে শুরু করে, অ্যান্ড্রয়েড রানটাইম (এআরটি) ইনস্টল করা অ্যাপের জন্য এক্সিকিউশন প্রোফাইল সংগ্রহ করে, যেগুলো অ্যাপ পারফরম্যান্স অপ্টিমাইজ করতে ব্যবহৃত হয়। অ্যাপ্লিকেশান স্টার্টআপের সময় কোন পদ্ধতিগুলি প্রায়শই কার্যকর করা হয় এবং কোন ক্লাসগুলি ব্যবহার করা হয় তা বোঝার জন্য সংগৃহীত প্রোফাইলগুলি পরীক্ষা করুন৷

দ্রষ্টব্য: এক্সিকিউশন প্রোফাইল ফাইলের নামটি পুনরুদ্ধার করা কেবল তখনই সম্ভব যদি আপনার ফাইল সিস্টেমে রুট অ্যাক্সেস থাকে, উদাহরণস্বরূপ, একটি এমুলেটরে।

প্রোফাইল তথ্যের একটি পাঠ্য ফর্ম তৈরি করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

adb shell cmd package dump-profiles package

উত্পাদিত ফাইল পুনরুদ্ধার করতে, ব্যবহার করুন:

adb pull /data/misc/profman/package.prof.txt

পরীক্ষার ডিভাইস রিসেট করুন

আপনি একাধিক পরীক্ষা ডিভাইস জুড়ে আপনার অ্যাপ পরীক্ষা করলে, পরীক্ষার মধ্যে আপনার ডিভাইস রিসেট করা উপকারী হতে পারে, উদাহরণস্বরূপ, ব্যবহারকারীর ডেটা সরাতে এবং পরীক্ষার পরিবেশ রিসেট করতে। আপনি testharness adb শেল কমান্ড ব্যবহার করে Android 10 (API লেভেল 29) বা উচ্চতর চলমান একটি টেস্ট ডিভাইসের ফ্যাক্টরি রিসেট করতে পারেন, যেমন দেখানো হয়েছে:

adb shell cmd testharness enable

testharness ব্যবহার করে ডিভাইসটি পুনরুদ্ধার করার সময়, ডিভাইসটি স্বয়ংক্রিয়ভাবে RSA কী ব্যাক আপ করে যা একটি স্থায়ী অবস্থানে বর্তমান ওয়ার্কস্টেশনের মাধ্যমে ডিবাগ করার অনুমতি দেয়। অর্থাৎ, ডিভাইসটি রিসেট করার পরে, ওয়ার্কস্টেশনটি ম্যানুয়ালি একটি নতুন কী নিবন্ধন না করেই ডিভাইসে ডিবাগ এবং adb কমান্ড ইস্যু করা চালিয়ে যেতে পারে।

উপরন্তু, আপনার অ্যাপের পরীক্ষা চালিয়ে যাওয়া সহজ এবং আরও নিরাপদ করতে সাহায্য করার জন্য, একটি ডিভাইস পুনরুদ্ধার করতে testharness ব্যবহার করে নিম্নলিখিত ডিভাইস সেটিংসও পরিবর্তন করে:

  • ডিভাইসটি নির্দিষ্ট সিস্টেম সেটিংস সেট আপ করে যাতে প্রাথমিক ডিভাইস সেটআপ উইজার্ডগুলি উপস্থিত না হয়৷ অর্থাৎ, ডিভাইসটি এমন একটি অবস্থায় প্রবেশ করে যেখান থেকে আপনি দ্রুত ইনস্টল, ডিবাগ এবং আপনার অ্যাপ পরীক্ষা করতে পারবেন।
  • সেটিংস:
    • লক স্ক্রিন অক্ষম করে।
    • জরুরী সতর্কতা অক্ষম করে।
    • অ্যাকাউন্টের জন্য স্বতঃ-সিঙ্ক অক্ষম করে।
    • স্বয়ংক্রিয় সিস্টেম আপডেট অক্ষম করে।
  • অন্যান্য:
    • পূর্ব-ইন্সটল করা নিরাপত্তা অ্যাপ অক্ষম করে।

আপনার অ্যাপটিকে testharness কমান্ডের ডিফল্ট সেটিংস সনাক্ত করতে এবং মানিয়ে নিতে হলে ActivityManager.isRunningInUserTestHarness() ব্যবহার করুন।

sqlite

sqlite3 SQLite ডাটাবেস পরীক্ষা করার জন্য sqlite কমান্ড-লাইন প্রোগ্রাম শুরু করে। এটি একটি টেবিলের বিষয়বস্তু প্রিন্ট করার জন্য .schema এবং বিদ্যমান টেবিলের জন্য SQL CREATE স্টেটমেন্ট প্রিন্ট করার জন্য .dump এর মতো কমান্ড অন্তর্ভুক্ত করে। আপনি কমান্ড লাইন থেকে SQLite কমান্ডগুলিও চালাতে পারেন, যেমন দেখানো হয়েছে:

$ adb -s emulator-5554 shell
$ sqlite3 /data/data/com.example.app/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions

দ্রষ্টব্য: শুধুমাত্র একটি SQLite ডাটাবেস অ্যাক্সেস করা সম্ভব যদি আপনার ফাইল সিস্টেমে রুট অ্যাক্সেস থাকে, উদাহরণস্বরূপ, একটি এমুলেটরে।

আরও তথ্যের জন্য, sqlite3 কমান্ড লাইন ডকুমেন্টেশন দেখুন।

adb USB ব্যাকএন্ড

অ্যাডবি সার্ভার দুটি ব্যাকএন্ডের মাধ্যমে ইউএসবি স্ট্যাকের সাথে ইন্টারঅ্যাক্ট করতে পারে। এটি হয় ওএস (উইন্ডোজ, লিনাক্স, বা ম্যাকওএস) এর নেটিভ ব্যাকএন্ড ব্যবহার করতে পারে অথবা এটি libusb ব্যাকএন্ড ব্যবহার করতে পারে। কিছু বৈশিষ্ট্য, যেমন attach , detach , এবং USB গতি সনাক্তকরণ, শুধুমাত্র libusb ব্যাকএন্ড ব্যবহার করার সময় উপলব্ধ।

আপনি ADB_LIBUSB পরিবেশ পরিবর্তনশীল ব্যবহার করে একটি ব্যাকএন্ড চয়ন করতে পারেন। এটি সেট না থাকলে, adb তার ডিফল্ট ব্যাকএন্ড ব্যবহার করে। ডিফল্ট আচরণ OS এর মধ্যে পরিবর্তিত হয়। ADB v34 দিয়ে শুরু করে, liubusb ব্যাকএন্ড ডিফল্টরূপে উইন্ডোজ ছাড়া সমস্ত OS-এ ব্যবহৃত হয়, যেখানে নেটিভ ব্যাকএন্ড ডিফল্টরূপে ব্যবহৃত হয়। যদি ADB_LIBUSB সেট করা থাকে, তাহলে এটি নির্ধারণ করে যে নেটিভ ব্যাকএন্ড বা libusb ব্যবহার করা হবে কিনা। adb পরিবেশ ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য adb ম্যানুয়াল পৃষ্ঠাটি দেখুন।

adb mDNS ব্যাকএন্ড

সার্ভার এবং ডিভাইসগুলিকে স্বয়ংক্রিয়ভাবে সংযুক্ত করতে ADB মাল্টিকাস্ট ডিএনএস প্রোটোকল ব্যবহার করতে পারে। ADB সার্ভার দুটি ব্যাকএন্ড, Bonjour (Apple এর mdnsResponder) এবং Openscreen সহ পাঠানো হয়।

হোস্ট মেশিনে চলার জন্য Bonjour ব্যাকএন্ডের একটি ডেমন প্রয়োজন। MacOS অ্যাপলের অন্তর্নির্মিত ডেমন সর্বদা চলমান থাকে, তবে উইন্ডোজ এবং লিনাক্সে, ব্যবহারকারীকে নিশ্চিত করতে হবে যে mdnsd ডেমন চালু আছে এবং চলছে। যদি adb mdns check কমান্ড একটি ত্রুটি প্রদান করে, তাহলে সম্ভবত ADB Bonjour ব্যাকএন্ড ব্যবহার করছে কিন্তু কোন Bonjour ডেমন চলছে না।

ওপেনস্ক্রিন ব্যাকএন্ডের মেশিনে চলার জন্য ডেমনের প্রয়োজন নেই। MacOS-এ ওপেনস্ক্রিন ব্যাকএন্ডের জন্য সমর্থন ADB v35 থেকে শুরু হয়। উইন্ডোজ এবং লিনাক্স ADB v34 হিসাবে সমর্থিত।

ডিফল্টরূপে ADB Bonjour ব্যাকএন্ড ব্যবহার করে। পরিবেশ পরিবর্তনশীল ADB_MDNS_OPENSCREEN ( 1 বা 0 এ সেট) ব্যবহার করে এই আচরণ পরিবর্তন করা যেতে পারে। আরও বিস্তারিত জানার জন্য ADB ম্যানুয়াল পৃষ্ঠা দেখুন।