Android डीबग ब्रिज (adb)

Android डीबग ब्रिज (adb) एक ऐसा कमांड-लाइन टूल है जिसकी मदद से, किसी डिवाइस से कम्यूनिकेट किया जा सकता है. adb निर्देश की मदद से, डिवाइस पर कई तरह की कार्रवाइयां की जा सकती हैं. जैसे, ऐप्लिकेशन इंस्टॉल करना और डिबग करना. adb, Unix शेल का ऐक्सेस देता है. इसका इस्तेमाल करके, किसी डिवाइस पर कई तरह के कमांड चलाए जा सकते हैं. यह एक क्लाइंट-सर्वर प्रोग्राम है, जिसमें तीन कॉम्पोनेंट होते हैं:

  • क्लाइंट, जो निर्देश भेजता है. क्लाइंट आपकी डेवलपमेंट मशीन पर काम करता है. adb कमांड का इस्तेमाल करके, कमांड-लाइन टर्मिनल से क्लाइंट को शुरू किया जा सकता है.
  • डेमन (adbd), जो किसी डिवाइस पर निर्देश चलाता है. डेमन, हर डिवाइस पर बैकग्राउंड प्रोसेस के तौर पर चलता है.
  • एक सर्वर, जो क्लाइंट और डेमन के बीच कम्यूनिकेशन को मैनेज करता है. सर्वर, आपकी डेवलपमेंट मशीन पर बैकग्राउंड प्रोसेस के तौर पर चलता है.

adb, Android SDK Platform Tools पैकेज में शामिल है. इस पैकेज को SDK Manager की मदद से डाउनलोड करें. यह पैकेज, android_sdk/platform-tools/ पर इंस्टॉल हो जाएगा. अगर आपको Android SDK के Platform Tools का स्टैंडअलोन पैकेज चाहिए, तो उसे यहां डाउनलोड करें.

adb पर इस्तेमाल करने के लिए किसी डिवाइस को कनेक्ट करने के बारे में जानकारी पाने के लिए, हार्डवेयर डिवाइस पर ऐप्लिकेशन चलाना लेख पढ़ें. इसमें, सामान्य समस्याओं को हल करने के लिए, कनेक्शन असिस्टेंट का इस्तेमाल करने का तरीका भी बताया गया है.

adb कैसे काम करता है

adb क्लाइंट शुरू करने पर, क्लाइंट सबसे पहले यह जांच करता है कि कोई adb सर्वर प्रोसेस पहले से चल रही है या नहीं. अगर कोई डाउनलोड नहीं है, तो यह सर्वर प्रोसेस शुरू कर देता है. सर्वर शुरू होने पर, वह लोकल टीसीपी पोर्ट 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 क्लाइंट से मिले निर्देशों को हैंडल करता है. इसलिए, किसी भी क्लाइंट या स्क्रिप्ट से किसी भी डिवाइस को कंट्रोल किया जा सकता है.

अपने डिवाइस पर adb डीबग करने की सुविधा चालू करना

यूएसबी के ज़रिए कनेक्ट किए गए डिवाइस के साथ adb का इस्तेमाल करने के लिए, आपको डिवाइस की सिस्टम सेटिंग में जाकर, डेवलपर के लिए सेटिंग में यूएसबी डीबगिंग को चालू करना होगा. Android 4.2 (API लेवल 17) और इसके बाद के वर्शन पर, डेवलपर के लिए सेटिंग और टूल स्क्रीन डिफ़ॉल्ट रूप से छिपी होती है. इसे देखने के लिए, डेवलपर के लिए सेटिंग और टूल चालू करें.

अब अपने डिवाइस को यूएसबी से कनेक्ट किया जा सकता है. android_sdk/platform-tools/ डायरेक्ट्री से adb devices को चलाकर, यह पुष्टि की जा सकती है कि आपका डिवाइस कनेक्ट है या नहीं. अगर डिवाइस कनेक्ट है, तो आपको डिवाइस का नाम "डिवाइस" के तौर पर दिखेगा.

ध्यान दें: Android 4.2.2 (एपीआई लेवल 17) या उसके बाद के वर्शन वाले डिवाइस को कनेक्ट करने पर, सिस्टम एक डायलॉग बॉक्स दिखाता है. इसमें पूछा जाता है कि क्या आपको इस कंप्यूटर से डिबग करने की अनुमति देने वाली आरएसए कुंजी स्वीकार करनी है. सुरक्षा से जुड़ा यह तरीका, उपयोगकर्ता के डिवाइसों को सुरक्षित रखता है. इससे यह पक्का होता है कि डिवाइस को अनलॉक करने और डायलॉग बॉक्स में 'स्वीकार करें' पर क्लिक करने के बाद ही, यूएसबी डिबगिंग और adb के अन्य निर्देशों को लागू किया जा सकता है.

किसी डिवाइस को यूएसबी से कनेक्ट करने के बारे में ज़्यादा जानने के लिए, पढ़ें हार्डवेयर डिवाइस पर ऐप्लिकेशन चलाना.

वाई-फ़ाई की मदद से किसी डिवाइस से कनेक्ट करना

ध्यान दें: यहां दिए गए निर्देश, Android 11 (एपीआई लेवल 30) पर काम करने वाले Wear डिवाइसों पर लागू नहीं होते. ज़्यादा जानकारी के लिए, Wear OS ऐप्लिकेशन को डीबग करने की गाइड देखें.

Android 11 (एपीआई लेवल 30) और उसके बाद के वर्शन में, Android डीबग ब्रिज (adb) का इस्तेमाल करके, अपने वर्कस्टेशन से वायरलेस तरीके से ऐप्लिकेशन को डिप्लॉय और डीबग किया जा सकता है. उदाहरण के लिए, डीबग करने लायक अपने ऐप्लिकेशन को कई रिमोट डिवाइसों पर डिप्लॉय किया जा सकता है. इसके लिए, आपको यूएसबी की मदद से, डिवाइस को कनेक्ट करने की ज़रूरत नहीं है. इससे, यूएसबी कनेक्शन से जुड़ी सामान्य समस्याओं, जैसे कि ड्राइवर इंस्टॉल करने से जुड़ी समस्याओं को हल करने की ज़रूरत नहीं पड़ती.

वॉयरलेस डीबगिंग का इस्तेमाल शुरू करने से पहले, ये काम करें:

  • पक्का करें कि आपका वर्कस्टेशन और डिवाइस, एक ही वायरलेस नेटवर्क से कनेक्ट हों.

  • पक्का करें कि आपके डिवाइस में, फ़ोन के लिए Android 11 (एपीआई लेवल 30) या इसके बाद का वर्शन या टीवी और Wear OS के लिए Android 13 (एपीआई लेवल 33) या इसके बाद का वर्शन हो. ज़्यादा जानकारी के लिए, अपना Android वर्शन देखना और उसे अपडेट करना देखें.

  • अगर IDE का इस्तेमाल किया जा रहा है, तो पक्का करें कि आपके डिवाइस पर Android Studio का सबसे नया वर्शन इंस्टॉल किया गया हो. इसे यहां से डाउनलोड किया जा सकता है.

  • अपने वर्कस्टेशन पर, SDK Platform Tools के नए वर्शन पर अपडेट करें.

वायरलेस डीबगिंग का इस्तेमाल करने के लिए, आपको क्यूआर कोड या डिवाइस जोड़ने वाले कोड का इस्तेमाल करके, अपने डिवाइस को वर्कस्टेशन से जोड़ना होगा. आपका वर्कस्टेशन और डिवाइस, दोनों एक ही वायरलेस नेटवर्क से कनेक्ट होने चाहिए. अपने डिवाइस से कनेक्ट करने के लिए, यह तरीका अपनाएं:

  1. अपने डिवाइस पर डेवलपर के लिए सेटिंग और टूल चालू करें.

  2. Android Studio खोलें और रन कॉन्फ़िगरेशन मेन्यू से, वाई-फ़ाई का इस्तेमाल करके डिवाइसों को जोड़ें को चुनें.

    रन कॉन्फ़िगरेशन ड्रॉपडाउन मेन्यू
    पहली इमेज. कॉन्फ़िगरेशन मेन्यू चलाएं.

    वाई-फ़ाई का इस्तेमाल करके, डिवाइसों को जोड़ें वाली विंडो पॉप-अप होती है, जैसा कि दूसरी इमेज में दिखाया गया है.

    वाई-फ़ाई से डिवाइसों को जोड़ने के लिए पॉप-अप विंडो का स्क्रीनशॉट
    दूसरी इमेज. क्यूआर कोड या डिवाइस जोड़ने वाले कोड का इस्तेमाल करके, डिवाइसों को जोड़ने के लिए पॉप-अप विंडो.
  3. अपने डिवाइस पर, वायरलेस डीबगिंग पर टैप करें और अपने डिवाइस को जोड़ें:

    Pixel फ़ोन का स्क्रीनशॉट, जिसमें वायरलेस तरीके से डीबग करने वाले सिस्टम की सेटिंग दिख रही है.
    तीसरी इमेज. Google Pixel फ़ोन पर वायरलेस डीबगिंग सेटिंग का स्क्रीनशॉट.
    1. अपने डिवाइस को क्यूआर कोड से जोड़ने के लिए, क्यूआर कोड की मदद से डिवाइस जोड़ें को चुनें. इसके बाद, दूसरे चित्र में दिखाए गए वाई-फ़ाई से डिवाइस जोड़ें पॉप-अप से मिले क्यूआर कोड को स्कैन करें.

    2. जोड़ने के कोड की मदद से अपने डिवाइस को जोड़ने के लिए, वाई-फ़ाई से डिवाइस जोड़ें पॉप-अप में जाकर, जोड़ने के कोड की मदद से डिवाइस जोड़ें को चुनें. अपने डिवाइस पर, दूसरे डिवाइस से जोड़ने के कोड का इस्तेमाल करके जोड़ें को चुनें और दिए गए छह अंकों वाले कोड को नोट कर लें. जब आपका डिवाइस, वाई-फ़ाई से डिवाइसों को जोड़ें विंडो में दिखने लगे, तो जोड़ें को चुनें और अपने डिवाइस पर दिखने वाला छह अंकों वाला कोड डालें.

      पिन कोड एंट्री के उदाहरण का स्क्रीनशॉट
      चौथी इमेज. छह अंकों का कोड डालने का उदाहरण.
  4. डिवाइस को जोड़ने के बाद, उस पर ऐप्लिकेशन डिप्लॉय किया जा सकता है.

    किसी दूसरे डिवाइस को जोड़ने या अपने वर्कस्टेशन पर मौजूदा डिवाइस को अनलिंक करने के लिए, अपने डिवाइस पर वायरलेस डीबगिंग पर जाएं. जोड़े गए डिवाइसों में जाकर, अपने वर्कस्टेशन के नाम पर टैप करें. इसके बाद, हटाएं को चुनें.

  5. अगर आपको वायरलेस डीबगिंग को तुरंत चालू और बंद करना है, तो डेवलपर के लिए क्विक सेटिंग टाइल में जाकर, वायरलेस डीबगिंग की सुविधा का इस्तेमाल करें. यह सुविधा, डेवलपर के लिए सेटिंग और टूल > डेवलपर के लिए क्विक सेटिंग टाइल में मिलेगी.

    Google Pixel फ़ोन की,
            क्विक सेटिंग डेवलपर टाइल का स्क्रीनशॉट.
    पांचवीं इमेज. क्विक सेटिंग डेवलपर टाइल सेटिंग की मदद से, वॉयरलेस डीबगिंग की सुविधा को तुरंत चालू और बंद किया जा सकता है.

कमांड लाइन का इस्तेमाल करके वाई-फ़ाई कनेक्शन

इसके अलावा, कमांड लाइन का इस्तेमाल करके Android Studio का इस्तेमाल किए बिना, अपने डिवाइस से कनेक्ट करने के लिए यह तरीका अपनाएं:

  1. अपने डिवाइस पर, पहले बताए गए तरीके से डेवलपर के लिए सेटिंग और टूल चालू करें.

  2. अपने डिवाइस पर, वायरलेस डीबगिंग की सुविधा चालू करें. इसके बारे में पहले बताया गया है.

  3. अपने वर्कस्टेशन पर, टर्मिनल विंडो खोलें और android_sdk/platform-tools पर जाएं.

  4. जोड़ने के लिए दिया गया कोड इस्तेमाल करके, डिवाइस जोड़ें को चुनकर, अपना आईपी पता, पोर्ट नंबर, और जोड़ने के लिए दिया गया कोड ढूंढें. डिवाइस पर दिखने वाले आईपी पते, पोर्ट नंबर, और जोड़ने के कोड को नोट करें.

  5. अपने वर्कस्टेशन के टर्मिनल पर, adb pair ipaddr:port चलाएं. ऊपर दिए गए आईपी पते और पोर्ट नंबर का इस्तेमाल करें.

  6. जब कहा जाए, तब जोड़ने का कोड डालें, जैसा कि यहां दिखाया गया है.

    कमांड लाइन पर डिवाइसों को जोड़ने का स्क्रीनशॉट.
    छठी इमेज. आपको एक मैसेज मिलेगा, जिसमें बताया जाएगा कि आपका डिवाइस जोड़ दिया गया है.

वायरलेस कनेक्शन से जुड़ी समस्याएं हल करना

अगर आपको डिवाइस को वायरलेस तरीके से कनेक्ट करने में समस्याएं आ रही हैं, तो उन्हें हल करने के लिए यह तरीका आज़माएं.

देखें कि आपका वर्कस्टेशन और डिवाइस, ज़रूरी शर्तें पूरी करता है या नहीं

देखें कि वर्कस्टेशन और डिवाइस, इस सेक्शन की शुरुआत में बताई गई ज़रूरी शर्तें पूरी करते हों.

आम तौर पर होने वाली अन्य समस्याओं की जांच करना

वायरलेस तरीके से डीबग करने (adb या Android Studio) की मौजूदा समस्याओं और उन्हें ठीक करने के तरीकों की सूची यहां दी गई है:

  • वाई-फ़ाई कनेक्ट नहीं हो रहा है: कॉर्पोरेट वाई-फ़ाई नेटवर्क जैसे सुरक्षित वाई-फ़ाई नेटवर्क, p2p कनेक्शन ब्लॉक कर सकते हैं और आपको वाई-फ़ाई पर कनेक्ट नहीं करने देंगे. केबल या किसी दूसरे (नॉन-कॉर्प) वाई-फ़ाई नेटवर्क से कनेक्ट करके देखें. अगर किसी ऐसे नेटवर्क का इस्तेमाल किया जा सकता है जो किसी कंपनी का नहीं है, तो adb connect ip:port over tcp/ip (शुरुआती यूएसबी कनेक्शन के बाद) का इस्तेमाल करके, वायरलेस कनेक्शन भी बनाया जा सकता है.

  • वाई-फ़ाई पर adb कभी-कभी अपने-आप बंद हो जाता है: ऐसा तब हो सकता है, जब डिवाइस वाई-फ़ाई नेटवर्क स्विच करता है या नेटवर्क से डिसकनेक्ट हो जाता है. इस समस्या को हल करने के लिए, नेटवर्क से फिर से कनेक्ट करें.

  • पेयर करने के बाद भी डिवाइस कनेक्ट नहीं हो रहा है: adb, जोड़े गए डिवाइसों को ढूंढने और उनसे अपने-आप कनेक्ट होने के लिए, mDNS पर निर्भर करता है. अगर आपके नेटवर्क या डिवाइस के कॉन्फ़िगरेशन में mDNS काम नहीं करता या उसे बंद कर दिया गया है, तो आपको adb connect ip:port का इस्तेमाल करके डिवाइस से मैन्युअल तरीके से कनेक्ट करना होगा.

शुरुआती यूएसबी कनेक्शन के बाद, किसी डिवाइस से वायरलेस तरीके से कनेक्ट करना (यह विकल्प सिर्फ़ Android 10 और उससे पहले के वर्शन पर उपलब्ध है)

ध्यान दें: यह वर्कफ़्लो Android 11 और उसके बाद वाले वर्शन पर भी लागू होता है. चेतावनी की बात यह है कि इसमें फ़िज़िकल यूएसबी का इस्तेमाल करके *शुरुआती* कनेक्शन भी शामिल है.

ध्यान दें: यहां दिए गए निर्देश, Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन पर काम करने वाले Wear डिवाइसों पर लागू नहीं होते. ज़्यादा जानकारी के लिए, Wear OS ऐप्लिकेशन को डीबग करने के बारे में गाइड देखें.

आम तौर पर, adb डिवाइस के साथ यूएसबी के ज़रिए संपर्क करता है. हालांकि, adb का इस्तेमाल वाई-फ़ाई के ज़रिए भी किया जा सकता है. Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन वाले डिवाइस को कनेक्ट करने के लिए, यूएसबी के ज़रिए यह शुरुआती तरीका अपनाएं:

  1. अपने Android डिवाइस और adb होस्ट कंप्यूटर को एक ही वाई-फ़ाई नेटवर्क से कनेक्ट करें.
  2. ध्यान दें: ध्यान रखें कि सभी ऐक्सेस पॉइंट काम के नहीं होते. आपको किसी ऐसे ऐक्सेस पॉइंट का इस्तेमाल करना पड़ सकता है जिसका फ़ायरवॉल, adb के साथ काम करने के लिए ठीक से कॉन्फ़िगर किया गया हो.

  3. डिवाइस को यूएसबी केबल की मदद से, होस्ट कंप्यूटर से कनेक्ट करें.
  4. पोर्ट 5555 पर टीसीपी/आईपी कनेक्शन सुनने के लिए, टारगेट डिवाइस सेट करें:
    adb tcpip 5555
    
  5. टारगेट डिवाइस से यूएसबी केबल को डिसकनेक्ट करें.
  6. Android डिवाइस का आईपी पता ढूंढें. उदाहरण के लिए, Nexus डिवाइस पर आईपी पता ढूंढने के लिए, सेटिंग > टैबलेट के बारे में जानकारी (या फ़ोन के बारे में जानकारी) > स्टेटस > आईपी पता पर जाएं.
  7. डिवाइस के आईपी पते से कनेक्ट करें:
    adb connect device_ip_address:5555
    
  8. पक्का करें कि आपका होस्ट कंप्यूटर, टारगेट डिवाइस से कनेक्ट हो:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

आपका डिवाइस अब adb से कनेक्ट हो गया है.

अगर आपके डिवाइस से adb का कनेक्शन टूट जाता है, तो:

  • पक्का करें कि आपका होस्ट अब भी उसी वाई-फ़ाई नेटवर्क से कनेक्ट हो जिससे आपका Android डिवाइस कनेक्ट है.
  • adb connect चरण को फिर से पूरा करके, दोबारा कनेक्ट करें.
  • अगर इससे समस्या हल नहीं होती है, तो अपने adb होस्ट को रीसेट करें:
    adb kill-server
    

    इसके बाद, फिर से शुरुआत करें.

डिवाइसों के लिए क्वेरी करना

adb कमांड देने से पहले, यह जानना मददगार होता है कि कौनसे डिवाइस इंस्टेंस, adb सर्वर से कनेक्ट हैं. devices कमांड का इस्तेमाल करके, कनेक्ट किए गए डिवाइसों की सूची जनरेट करें:

  adb devices -l
  

जवाब में, adb इस स्थिति की जानकारी को हर एक डिवाइस के लिए प्रिंट करता है:

  • सीरियल नंबर: adb डिवाइस को उसके पोर्ट नंबर से अलग तरीके से पहचानने के लिए एक स्ट्रिंग बनाता है. सीरियल नंबर का एक उदाहरण यहां दिया गया है: emulator-5554
  • स्थिति: डिवाइस के कनेक्शन की स्थिति इनमें से कोई एक हो सकती है:
    • offline: डिवाइस, adb से कनेक्ट नहीं है या काम नहीं कर रहा है.
    • device: डिवाइस, adb सर्वर से कनेक्ट है. ध्यान दें कि इस स्थिति का मतलब यह नहीं है कि Android सिस्टम पूरी तरह से चालू है और काम कर रहा है. ऐसा इसलिए होता है, क्योंकि सिस्टम के चालू होने के दौरान, डिवाइस 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 सर्वर नहीं चल रहा है.
  • emulator कमांड का इस्तेमाल -port या -ports विकल्प के साथ करें. साथ ही, 5554 से 5584 के बीच के किसी विषम नंबर वाले पोर्ट की वैल्यू का इस्तेमाल करें.
  • आपने जो विषम नंबर वाला पोर्ट चुना है वह व्यस्त नहीं है. इसलिए, पोर्ट कनेक्शन को तय किए गए पोर्ट नंबर पर किया जा सकता है. अगर वह पोर्ट व्यस्त है, तो एमुलेटर किसी ऐसे पोर्ट पर स्विच हो जाता है जो 2 में बताई गई ज़रूरी शर्तों को पूरा करता है.
  • एमुलेटर शुरू करने के बाद, adb सर्वर शुरू किया जाता है.

इस समस्या से बचने का एक तरीका यह है कि एमुलेटर को अपने पोर्ट चुनने दें और एक बार में 16 से ज़्यादा एमुलेटर न चलाएं. एक और तरीका यह है कि emulator कमांड का इस्तेमाल करने से पहले, adb सर्वर को हमेशा शुरू करें. इस बारे में यहां दिए गए उदाहरणों में बताया गया है.

पहला उदाहरण: यहां दिए गए कमांड क्रम में, adb devices कमांड से adb सर्वर शुरू होता है, लेकिन डिवाइसों की सूची नहीं दिखती.

adb सर्वर को बंद करें और यहां दिए गए निर्देशों को दिखाए गए क्रम में डालें. 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 *

दूसरा उदाहरण: इस कमांड क्रम में, 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 का इस्तेमाल करें. यह तब काम आता है, जब आपने Play Console से अपने ऐप्लिकेशन के लिए किसी डिवाइस के सभी APK डाउनलोड किए हों और आपको उन्हें किसी एमुलेटर या फ़िज़िकल डिवाइस पर इंस्टॉल करना हो.

ऐसी APK फ़ाइल बनाने के तरीके के बारे में ज़्यादा जानने के लिए जिसे किसी एमुलेटर/डिवाइस इंस्टेंस पर इंस्टॉल किया जा सकता है, अपना ऐप्लिकेशन बनाएं और चलाएं लेख पढ़ें.

ध्यान दें: अगर Android Studio का इस्तेमाल किया जा रहा है, तो आपको ऐप्लिकेशन को एमुलेटर या डिवाइस पर इंस्टॉल करने के लिए, adb का इस्तेमाल करने की ज़रूरत नहीं है. इसके बजाय, Android Studio आपके लिए ऐप्लिकेशन को पैकेज करने और इंस्टॉल करने की प्रोसेस को मैनेज करता है.

पोर्ट फ़ॉरवर्डिंग सेट अप करें

forward कमांड का इस्तेमाल करके, अपनी पसंद के मुताबिक पोर्ट फ़ॉरवर्डिंग सेट अप करें. इससे, किसी होस्ट पोर्ट पर किए गए अनुरोध, डिवाइस के किसी दूसरे पोर्ट पर फ़ॉरवर्ड हो जाते हैं. नीचे दिए गए उदाहरण में, होस्ट पोर्ट 6100 को डिवाइस पोर्ट 7100 पर फ़ॉरवर्ड करने की सुविधा सेट अप की गई है:

adb forward tcp:6100 tcp:7100

यहां दिए गए उदाहरण में, होस्ट पोर्ट 6100 को local: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 सर्वर को बंद करने के लिए, 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 टाइप करें.

Android, Unix के ज़्यादातर सामान्य कमांड-लाइन टूल उपलब्ध कराता है. उपलब्ध टूल की सूची देखने के लिए, इस कमांड का इस्तेमाल करें:

adb shell ls /system/bin

--help आर्ग्युमेंट की मदद से, ज़्यादातर निर्देशों के लिए सहायता उपलब्ध है. कई शेल निर्देश, toybox से मिलते हैं. toybox --help पर जाकर, 'खिलौने के बॉक्स' के सभी निर्देशों के लिए सामान्य सहायता पाई जा सकती है.

Android Platform Tools 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]: ग्राफ़िक मेमोरी से बिटमैप को डंप करें (एपीआई लेवल 35 और उसके बाद के वर्शन). ज़रूरी नहीं कि आप डंप करने के लिए फ़ॉर्मैट तय करें. डिफ़ॉल्ट रूप से, PNG फ़ॉर्मैट का इस्तेमाल किया जाता है.
  • -n: मैनेज किए गए हीप के बजाय, नेटिव हीप को डंप करें.
set-debug-app [options] package package ऐप्लिकेशन को डीबग करने के लिए सेट करें.

आपके पास ये विकल्प हैं:

  • -w: ऐप्लिकेशन शुरू होने पर, डीबगर के शुरू होने का इंतज़ार करें.
  • --persistent: इस वैल्यू को बनाए रखें.
clear-debug-app set-debug-app का इस्तेमाल करके, डीबग करने के लिए पैकेज का पिछला सेट मिटाएं.
monitor [options] क्रैश या ANR की निगरानी शुरू करें.

आपके पास ये विकल्प हैं:

  • --gdb: क्रैश/एएनआर पर, दिए गए पोर्ट पर gdbserv शुरू करें.
screen-compat {on | off} package package के स्क्रीन कंपैटबिलिटी मोड को कंट्रोल करें.
display-size [reset | widthxheight] डिवाइस के डिसप्ले साइज़ को बदलना. यह कमांड, अलग-अलग स्क्रीन साइज़ पर अपने ऐप्लिकेशन की जांच करने में मददगार होता है. इसके लिए, बड़ी स्क्रीन वाले डिवाइस का इस्तेमाल करके, छोटी स्क्रीन के रिज़ॉल्यूशन की नकल की जाती है. इसके अलावा, छोटी स्क्रीन वाले डिवाइस का इस्तेमाल करके, बड़ी स्क्रीन के रिज़ॉल्यूशन की नकल की जाती है.

उदाहरण:
am display-size 1280x800

display-density dpi डिवाइस की डिसप्ले डेंसिटी को बदलना. इस निर्देश की मदद से, अलग-अलग स्क्रीन डेंसिटी पर ऐप्लिकेशन की जांच की जा सकती है. इसके लिए, कम डेंसिटी वाली स्क्रीन का इस्तेमाल करके हाई डेंसिटी वाली स्क्रीन की नकल की जा सकती है.

उदाहरण:
am display-density 480

to-uri intent दी गई इंटेंट स्पेसिफ़िकेशन को यूआरआई के तौर पर प्रिंट करें.

इंटेंट के आर्ग्युमेंट के लिए खास जानकारी देखें.

to-intent-uri intent दिए गए इंटेंट स्पेसिफ़िकेशन को intent: यूआरआई के तौर पर प्रिंट करें.

इंटेंट के आर्ग्युमेंट के लिए खास जानकारी देखें.

इंटेंट आर्ग्युमेंट के लिए खास जानकारी

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: यह नीति टेस्ट APKs इंस्टॉल करने की अनुमति देती है. Gradle, टेस्ट APK तब जनरेट करता है, जब आपने सिर्फ़ अपने ऐप्लिकेशन को चलाया या डीबग किया हो या Android Studio के बिल्ड > 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 को इस सुविधा का इस्तेमाल करने के लिए मजबूर करता है. अगर इसके साथ यह सुविधा काम नहीं करती है, तो गड़बड़ी होने की वजह नहीं बताई जाएगी. --wait विकल्प जोड़ें, ताकि APK का ऐक्सेस देने से पहले, APK के पूरी तरह इंस्टॉल होने का इंतज़ार किया जा सके.

    --no-incremental, adb को इस सुविधा का इस्तेमाल करने से रोकता है.

uninstall [options] package सिस्टम से पैकेज हटाता है.

विकल्प:

  • -k: पैकेज हटाने के बाद भी डेटा और कैश मेमोरी डायरेक्ट्री को सेव रखें.
  • --user user_id: उस उपयोगकर्ता के बारे में बताता है जिसके लिए पैकेज हटाया गया है.
  • --versionCode version_code: सिर्फ़ तब अनइंस्टॉल करता है, जब ऐप्लिकेशन में दिया गया वर्शन कोड हो.
clear package किसी पैकेज से जुड़ा सारा डेटा मिटाएं.
enable package_or_component दिए गए पैकेज या कॉम्पोनेंट को चालू करें ("पैकेज/क्लास" के तौर पर लिखा जाता है).
disable package_or_component दिए गए पैकेज या कॉम्पोनेंट को बंद करें. इसे "package/class" के तौर पर लिखा जाता है.
disable-user [options] package_or_component

विकल्प:

  • --user user_id: बंद किया जाने वाला उपयोगकर्ता.
grant package_name permission किसी ऐप्लिकेशन को अनुमति दें. Android 6.0 (एपीआई लेवल 23) और इसके बाद के वर्शन पर चलने वाले डिवाइसों पर, ऐप्लिकेशन मेनिफ़ेस्ट में बताई गई कोई भी अनुमति दी जा सकती है. Android 5.1 (एपीआई लेवल 22) और उससे पहले के वर्शन पर चल रहे डिवाइसों पर, यह ऐप्लिकेशन की ओर से तय की गई वैकल्पिक अनुमति होनी चाहिए.
revoke package_name permission किसी ऐप्लिकेशन से अनुमति वापस लेना. Android 6.0 (एपीआई लेवल 23) और इसके बाद के वर्शन वाले डिवाइसों पर, ऐप्लिकेशन मेनिफ़ेस्ट में दी गई किसी भी अनुमति के बारे में बताया जा सकता है. Android 5.1 (एपीआई लेवल 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

तीसरी टेबल. Device Policy Manager के लिए उपलब्ध निर्देश

निर्देश ब्यौरा
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 सिस्टम के ओटीए अपडेट के लिए, डिवाइस पर पहले से सेट किए गए फ़्रीज़ पीरियड का रिकॉर्ड मिटाएं. यह सुविधा, डिवाइस के शेड्यूल करने से जुड़ी पाबंदियों से बचने के लिए, फ़्रीज़ अवधियों को मैनेज करने वाले ऐप्लिकेशन बनाते समय काम की होती है. सिस्टम अपडेट मैनेज करें देखें.

यह सुविधा, Android 9.0 (एपीआई लेवल 28) और इसके बाद के वर्शन वाले डिवाइसों पर काम करती है.

force-network-logs सिस्टम को किसी मौजूदा नेटवर्क लॉग को डीपीसी से वापस पाने के लिए तैयार करने के लिए मजबूर करना. अगर कनेक्शन या डीएनएस लॉग उपलब्ध हैं, तो डीपीसी को onNetworkLogsAvailable() कॉलबैक मिलता है. नेटवर्क पर की गई गतिविधियों को लॉग करना देखें.

इस निर्देश को सीमित बार इस्तेमाल किया जा सकता है. यह सुविधा, Android 9.0 (एपीआई लेवल 28) और इसके बाद के वर्शन वाले डिवाइसों पर काम करती है.

force-security-logs सिस्टम को कोई भी मौजूदा सुरक्षा लॉग, DPC को उपलब्ध कराने के लिए कहें. अगर लॉग उपलब्ध हैं, तो DPC को onSecurityLogsAvailable() कॉलबैक मिलता है. एंटरप्राइज़ डिवाइस की गतिविधि लॉग करें देखें.

इस निर्देश को सीमित बार इस्तेमाल किया जा सकता है. यह सुविधा, Android 9.0 (एपीआई लेवल 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 (एपीआई लेवल 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 widthxheight वीडियो का साइज़ सेट करें: 1280x720. डिफ़ॉल्ट वैल्यू, डिवाइस का नेटिव डिसप्ले रिज़ॉल्यूशन होता है. अगर डिवाइस पर यह काम नहीं करता है, तो डिफ़ॉल्ट वैल्यू 1280x720 होती है. बेहतर नतीजों के लिए, अपने डिवाइस के बेहतर वीडियो कोडिंग (एवीसी) एन्कोडर के साथ काम करने वाले साइज़ का इस्तेमाल करें.
--bit-rate rate वीडियो के लिए, मेगाबिट प्रति सेकंड में वीडियो बिटरेट सेट करें. इसकी डिफ़ॉल्ट वैल्यू 20 एमबीपीएस है. वीडियो क्वालिटी को बेहतर बनाने के लिए, बिटरेट को बढ़ाया जा सकता है. हालांकि, ऐसा करने पर मूवी फ़ाइलों का साइज़ भी बड़ा हो जाता है. इस उदाहरण में, रिकॉर्डिंग की बिटरेट को 6 एमबीपीएस पर सेट किया गया है:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time रिकॉर्डिंग का ज़्यादा से ज़्यादा समय सेकंड में सेट करें. डिफ़ॉल्ट और ज़्यादा से ज़्यादा वैल्यू 180 (तीन मिनट) होती है.
--rotate आउटपुट को 90 डिग्री घुमाएं. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है.
--verbose कमांड-लाइन स्क्रीन पर लॉग की जानकारी दिखाएं. अगर यह विकल्प सेट नहीं किया जाता है, तो यह सुविधा चलने के दौरान कोई जानकारी नहीं दिखाती.

ऐप्लिकेशन के लिए ART प्रोफ़ाइलें पढ़ना

Android 7.0 (एपीआई लेवल 24) की शुरुआत से, Android रनटाइम (ART) इंस्टॉल किए गए ऐप्लिकेशन के लिए काम करने की प्रोफ़ाइल इकट्ठा करता है. इनका इस्तेमाल ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए किया जाता है. इकट्ठा की गई प्रोफ़ाइलों की जांच करके, यह जानें कि कौनसे तरीके अक्सर इस्तेमाल किए जाते हैं और ऐप्लिकेशन के स्टार्टअप के दौरान किन क्लास का इस्तेमाल किया जाता है.

ध्यान दें: सिर्फ़ तब ही प्रोफ़ाइल के रन होने का नाम वापस पाया जा सकता है, जब आपके पास फ़ाइल सिस्टम का रूट ऐक्सेस हो. उदाहरण के लिए, किसी एमुलेटर पर.

प्रोफ़ाइल की जानकारी को टेक्स्ट फ़ॉर्मैट में देखने के लिए, यह कमांड इस्तेमाल करें:

adb shell cmd package dump-profiles package

बनाई गई फ़ाइल वापस पाने के लिए, इनका इस्तेमाल करें:

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

टेस्ट डिवाइसों को रीसेट करना

अगर आपने अपने ऐप्लिकेशन को कई टेस्ट डिवाइसों पर टेस्ट किया है, तो टेस्ट के बीच में डिवाइस को रीसेट करना मददगार हो सकता है. उदाहरण के लिए, उपयोगकर्ता का डेटा हटाने और टेस्ट एनवायरमेंट को रीसेट करने के लिए. Android 10 (एपीआई लेवल 29) या इसके बाद के वर्शन पर काम करने वाले टेस्ट डिवाइस को फ़ैक्ट्री रीसेट किया जा सकता है. इसके लिए, testharness adb शेल कमांड का इस्तेमाल करें, जैसा कि यहां दिखाया गया है:

adb shell cmd testharness enable

testharness का इस्तेमाल करके डिवाइस को वापस लाने पर, डिवाइस अपने-आप आरएसए पासकोड का बैक अप ले लेता है. इससे, मौजूदा वर्कस्टेशन के ज़रिए किसी स्थायी जगह पर डीबग करने की सुविधा मिलती है. इसका मतलब है कि डिवाइस को रीसेट किए जाने के बाद, वर्कस्टेशन मैन्युअल तरीके से नई कुंजी रजिस्टर किए बिना ही डीबग करना जारी रख सकता है और डिवाइस को adb निर्देश दे सकता है.

इसके अलावा, किसी डिवाइस को पहले जैसा करने के लिए testharness का इस्तेमाल करने पर, डिवाइस की ये सेटिंग भी बदल जाती हैं. इससे, आपके ऐप्लिकेशन की टेस्टिंग को आसान और ज़्यादा सुरक्षित बनाने में मदद मिलती है:

  • डिवाइस कुछ सिस्टम सेटिंग सेट करता है ताकि शुरुआती डिवाइस सेटअप विज़र्ड न दिखें. इसका मतलब है कि डिवाइस ऐसी स्थिति में आ जाता है जिससे आपके ऐप्लिकेशन को तुरंत इंस्टॉल, डीबग, और टेस्ट किया जा सकता है.
  • सेटिंग:
    • लॉक स्क्रीन की सुविधा बंद हो जाती है.
    • आपातकालीन चेतावनियां बंद कर देता है.
    • खातों के लिए, अपने-आप सिंक होने की सुविधा बंद कर देता है.
    • सिस्टम के अपने-आप अपडेट होने की सुविधा बंद कर देता है.
  • अन्य:
    • पहले से इंस्टॉल किए गए सुरक्षा ऐप्लिकेशन बंद कर देता है.

अगर आपके ऐप्लिकेशन को testharness कमांड की डिफ़ॉल्ट सेटिंग का पता लगाना है और उनसे अडजस्ट करना है, तो ActivityManager.isRunningInUserTestHarness() का इस्तेमाल करें.

sqlite

sqlite3, SQLite डेटाबेस की जांच करने के लिए sqlite कमांड-लाइन प्रोग्राम को शुरू करता है. इसमें टेबल के कॉन्टेंट को प्रिंट करने के लिए .dump और किसी मौजूदा टेबल के SQL CREATE स्टेटमेंट को प्रिंट करने के लिए .schema जैसे निर्देश शामिल हैं. कमांड लाइन से, 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 यूएसबी बैकएंड

adb सर्वर दो बैकएंड के ज़रिए, यूएसबी स्टैक के साथ इंटरैक्ट कर सकता है. यह या तो ओएस (Windows, Linux या macOS) के नेटिव बैकएंड का इस्तेमाल कर सकता है या फिर libusb बैकएंड का इस्तेमाल कर सकता है. attach, detach, और यूएसबी स्पीड का पता लगाने जैसी कुछ सुविधाएं, सिर्फ़ libusb बैकएंड का इस्तेमाल करने पर उपलब्ध हैं.

ADB_LIBUSB एनवायरमेंट वैरिएबल का इस्तेमाल करके, कोई बैकएंड चुना जा सकता है. अगर यह सेट नहीं है, तो adb अपने डिफ़ॉल्ट बैकएंड का इस्तेमाल करता है. डिफ़ॉल्ट तौर पर, अलग-अलग ओएस में अलग-अलग तरीके से काम करता है. ADB v34 से, liubusb बैकएंड का इस्तेमाल डिफ़ॉल्ट रूप से सभी ओएस पर किया जाता है. हालांकि, Windows पर नेटिव बैकएंड का इस्तेमाल डिफ़ॉल्ट रूप से किया जाता है. अगर ADB_LIBUSB सेट है, तो यह तय करता है कि नेटिव बैकएंड या libusb में से किसका इस्तेमाल किया जाए. adb के एनवायरमेंट वैरिएबल के बारे में ज़्यादा जानने के लिए, adb मैन्युअल पेज देखें.

adb mDNS बैकएंड

ADB, सर्वर और डिवाइसों को अपने-आप कनेक्ट करने के लिए, मल्टीकास्ट डीएनएस प्रोटोकॉल का इस्तेमाल कर सकता है. ADB सर्वर दो बैकएंड के साथ आता है: Bonjour (Apple का mdnsResponder) और Openscreen.

Bonjour बैकएंड के लिए, होस्ट मशीन पर डेमन चलना ज़रूरी है. macOS पर, Apple का डिफ़ॉल्ट डेमन हमेशा चलता रहता है. हालांकि, Windows और Linux पर उपयोगकर्ता को यह पक्का करना होगा कि mdnsd डेमन चालू हो. अगर adb mdns check कमांड से गड़बड़ी का मैसेज मिलता है, तो हो सकता है कि ADB, Bonjour बैकएंड का इस्तेमाल कर रहा हो, लेकिन कोई Bonjour डेमन न चल रहा हो.

Openscreen बैकएंड के लिए, मशीन पर डेमन चलने की ज़रूरत नहीं होती. macOS पर Openscreen बैकएंड के साथ काम करने की शुरुआत ADB v35 से होती है. ADB के वर्शन 34 से, Windows और Linux पर यह सुविधा काम करती है.

डिफ़ॉल्ट रूप से, ADB, Bonjour बैकएंड का इस्तेमाल करता है. एनवायरमेंट वैरिएबल ADB_MDNS_OPENSCREEN (1 या 0 पर सेट करें) का इस्तेमाल करके, इस व्यवहार को बदला जा सकता है. ज़्यादा जानकारी के लिए, ADB मैन्युअल पेज देखें.