Android डीबग ब्रिज (adb) एक वर्सटाइल कमांड-लाइन टूल है. इसकी मदद से, किसी डिवाइस से कम्यूनिकेट किया जा सकता है. adb कमांड की मदद से, डिवाइस पर कई कार्रवाइयां की जा सकती हैं. जैसे, ऐप्लिकेशन इंस्टॉल करना और उन्हें डीबग करना. adb, Unix शेल का ऐक्सेस देता है. इसका इस्तेमाल करके, डिवाइस पर कई तरह के निर्देश चलाए जा सकते हैं. यह क्लाइंट-सर्वर प्रोग्राम है. इसमें तीन कॉम्पोनेंट शामिल होते हैं:
- क्लाइंट, जो निर्देश भेजता है. क्लाइंट, आपकी डेवलपमेंट मशीन पर चलता है.
adbकमांड जारी करके, कमांड-लाइन टर्मिनल से क्लाइंट को शुरू किया जा सकता है. - एक डेमॉन (adbd), जो किसी डिवाइस पर कमांड चलाता है. यह डेमॉन, हर डिवाइस पर बैकग्राउंड प्रोसेस के तौर पर काम करता है.
- एक सर्वर, जो क्लाइंट और डेमॉन के बीच कम्यूनिकेशन को मैनेज करता है. सर्वर, आपकी डेवलपमेंट मशीन पर बैकग्राउंड प्रोसेस के तौर पर काम करता है.
adb, Android SDK Platform Tools पैकेज में शामिल है. SDK Manager का इस्तेमाल करके, इस पैकेज को डाउनलोड करें. यह इसे android_sdk/platform-tools/ पर इंस्टॉल करता है. अगर आपको स्टैंडअलोन Android SDK
प्लेटफ़ॉर्म टूल पैकेज चाहिए, तो इसे यहां से डाउनलोड करें.
adb पर इस्तेमाल करने के लिए किसी डिवाइस को कनेक्ट करने के बारे में जानकारी पाने के लिए, हार्डवेयर डिवाइस पर ऐप्लिकेशन चलाना लेख पढ़ें. इसमें, कनेक्शन असिस्टेंट का इस्तेमाल करके सामान्य समस्याओं को हल करने का तरीका भी बताया गया है.
Android सीएलआई
Android का सीएलआई डाउनलोड करनाकिसी डिवाइस से कम्यूनिकेट करने के लिए, Android CLI का इस्तेमाल करें
उदाहरण के लिए, जब आपको कमांड लाइन से किसी डिवाइस पर कोई ऐप्लिकेशन डिप्लॉय करना हो और उसके साथ इंटरैक्ट करना हो, तब
android run या screen capture कमांड का इस्तेमाल करें.android [install|run|screen capture|layout]adb कैसे काम करता है
adb क्लाइंट शुरू करने पर, क्लाइंट सबसे पहले यह देखता है कि adb सर्वर प्रोसेस पहले से चल रही है या नहीं. अगर ऐसा नहीं है, तो यह सर्वर प्रोसेस शुरू करता है.
जब सर्वर शुरू होता है, तो यह लोकल टीसीपी पोर्ट 5037 से जुड़ जाता है. साथ ही, adb क्लाइंट से भेजे गए निर्देशों को सुनता है.
ध्यान दें: सभी adb क्लाइंट, adb सर्वर से कम्यूनिकेट करने के लिए पोर्ट 5037 का इस्तेमाल करते हैं.
इसके बाद, सर्वर सभी चालू डिवाइसों से कनेक्शन सेट अप करता है.
यह 5555 से 5585 तक की रेंज में मौजूद विषम संख्या वाले पोर्ट को स्कैन करके, इम्यूलेटर का पता लगाता है. यह रेंज, पहले 16 इम्यूलेटर इस्तेमाल करते हैं. जब सर्वर को adb
डेमॉन (adbd) मिलता है, तो वह उस पोर्ट से कनेक्शन सेट अप करता है.
हर एम्युलेटर, क्रम से लगे दो पोर्ट का इस्तेमाल करता है. इनमें से एक पोर्ट, कंसोल कनेक्शन के लिए सम संख्या वाला होता है और दूसरा पोर्ट, adb कनेक्शन के लिए विषम संख्या वाला होता है. उदाहरण के लिए:
Emulator 1, console: 5554
Emulator 1, adb: 5555
Emulator 2, console: 5556
Emulator 2, adb: 5557
वगैरह.
दिखाए गए उदाहरण में, पोर्ट 5555 पर adb से कनेक्ट किया गया एम्युलेटर, उस एम्युलेटर के जैसा ही है जिसका कंसोल पोर्ट 5554 पर सिग्नल पाने के लिए कॉन्फ़िगर किया गया है.
सर्वर के सभी डिवाइसों से कनेक्ट हो जाने के बाद, उन डिवाइसों को ऐक्सेस करने के लिए, adb के निर्देशों का इस्तेमाल किया जा सकता है. सर्वर, डिवाइसों से कनेक्शन मैनेज करता है और कई adb क्लाइंट से मिलने वाले निर्देशों को हैंडल करता है. इसलिए, किसी भी क्लाइंट या स्क्रिप्ट से किसी भी डिवाइस को कंट्रोल किया जा सकता है.
अपने डिवाइस पर adb डीबग करने की सुविधा चालू करें
यूएसबी से कनेक्ट किए गए डिवाइस के साथ adb का इस्तेमाल करने के लिए, आपको डिवाइस की सिस्टम सेटिंग में जाकर, डेवलपर के लिए सेटिंग और टूल में यूएसबी डीबग करना चालू करना होगा. Android 4.2 (एपीआई लेवल 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 17 के साथ-साथ adb 37.0.0 में, adb Wi-Fi 2.0 की सुविधा जोड़ी गई है. इससे पिछले वर्शन में इस्तेमाल से जुड़ी कई समस्याओं को हल किया जा सकता है. ध्यान दें कि जब डिवाइस, वायरलेस डीबगिंग के भरोसेमंद नेटवर्क से कनेक्ट होगा, तब डिवाइस अपने-आप वर्कस्टेशन से कनेक्ट हो जाएगा.
वायरलेस डीबगिंग का इस्तेमाल शुरू करने से पहले, यह काम करें:
-
पक्का करें कि आपका वर्कस्टेशन और डिवाइस, एक ही वायरलेस नेटवर्क से कनेक्ट हों.
-
पक्का करें कि आपके फ़ोन पर Android 11 (एपीआई लेवल 30) या उसके बाद का वर्शन हो. साथ ही, टीवी और WearOS के लिए Android 13 (एपीआई लेवल 33) या उसके बाद का वर्शन हो. ज़्यादा जानकारी के लिए, अपने डिवाइस का Android वर्शन देखना और उसे अपडेट करना लेख पढ़ें.
-
अपने वर्कस्टेशन पर, SDK Platform Tools को नए वर्शन पर अपडेट करें.
वायरलेस डीबगिंग का इस्तेमाल करने के लिए, आपको अपने डिवाइस को वर्कस्टेशन से जोड़ना होगा. इसके लिए, क्यूआर कोड या जोड़ने के लिए कोड का इस्तेमाल करें. आपका वर्कस्टेशन और डिवाइस, एक ही वायरलेस नेटवर्क से कनेक्ट होना चाहिए. अपने डिवाइस से जोड़ने के लिए, यह तरीका अपनाएं:
ध्यान दें: आपको अपने डिवाइस को वर्कस्टेशन से सिर्फ़ एक बार जोड़ना होगा. डिवाइस, आपके वर्कस्टेशन से तब तक जुड़ा रहेगा, जब तक कि उसे मैन्युअल तरीके से हटाया नहीं जाता या डिवाइस पर adb डीबग करने की अनुमतियां रद्द नहीं की जातीं. जब डिवाइस और वर्कस्टेशन एक ही नेटवर्क पर होंगे, तब वे अपने-आप कनेक्ट हो जाएंगे.
-
अपने डिवाइस पर डेवलपर के लिए उपलब्ध सेटिंग और टूल चालू करें.
-
अपने डिवाइस पर, वायरलेस डिबगिंग पर टैप करें:
पहली इमेज. Google Pixel फ़ोन पर वायरलेस डीबगिंग का अनुरोध. -
अपने नेटवर्क पर वॉयरलेस डीबगिंग की अनुमति दें. ध्यान दें कि इस नेटवर्क पर हमेशा अनुमति दें चेकबॉक्स पर क्लिक करने से, नेटवर्क को वॉयरलेस डीबगिंग के लिए भरोसेमंद नेटवर्क के तौर पर सेट कर दिया जाता है. आपका डिवाइस, इस नेटवर्क से कनेक्ट होते ही, इस नेटवर्क पर वॉयरलेस डीबगिंग की अनुमति हमेशा देगा.
दूसरी इमेज. Google Pixel फ़ोन पर वायरलेस डीबगिंग की सेटिंग.ध्यान दें: Android Studio के उपयोगकर्ता, अपने डिवाइस को क्यूआर कोड से जोड़ सकते हैं. इसके लिए, डिवाइस को क्यूआर कोड से जोड़ें को चुनें और Android Studio में वाई-फ़ाई पर डिवाइसों को जोड़ें डायलॉग से मिला क्यूआर कोड स्कैन करें.
-
अपने डिवाइस पर, जोड़ने के लिए कोड का इस्तेमाल करके जोड़ें को चुनें. इसके बाद, डिवाइस पर दिख रहे आईपी पते, पोर्ट नंबर, और जोड़ने के लिए कोड को नोट करें.
-
अपने वर्कस्टेशन पर, टर्मिनल विंडो खोलें और
android_sdk/platform-toolsपर जाएं. -
अपने वर्कस्टेशन के टर्मिनल पर,
adb pair ipaddr:portचलाएं. ऊपर दिए गए आईपी पते और पोर्ट नंबर का इस्तेमाल करें. -
जब कहा जाए, तब यहां दिखाया गया पेयरिंग कोड डालें.
तीसरी इमेज. एक मैसेज, जिसमें बताया गया है कि आपका डिवाइस पेयर हो गया है. -
डिवाइस के जुड़ जाने के बाद, पुष्टि करें कि आपका डिवाइस कनेक्ट हो गया है. अब अपने डिवाइस को वायरलेस तरीके से इस्तेमाल किया जा सकता है. यह ठीक उसी तरह काम करता है जैसे यूएसबी कनेक्शन के साथ काम करता है.
अपने वर्कस्टेशन को अनपेयर करने के लिए, अपने डिवाइस पर वायरलेस डीबगिंग पर जाएं. जोड़े गए डिवाइस में जाकर, अपने वर्कस्टेशन के नाम पर टैप करें. इसके बाद, हटाएं को चुनें. इसके अलावा, अपने डिवाइस के सेटिंग पेज पर जाकर, adb डीबगिंग के लिए दी गई अनुमतियां रद्द करें पर क्लिक करें. इससे आपके वर्कस्टेशन और पहले से जोड़े गए सभी वर्कस्टेशन से डिवाइस का कनेक्शन हट जाएगा.
-
अगर आपको वायरलेस डीबगिंग को तुरंत चालू और बंद करना है, तो डेवलपर विकल्प > क्विक सेटिंग डेवलपर टाइलें में जाकर, क्विक सेटिंग डेवलपर टाइलें का इस्तेमाल करें. यहां आपको वायरलेस डीबगिंग का विकल्प मिलेगा.
चौथी इमेज. क्विक सेटिंग डेवलपर टाइलें सेटिंग की मदद से, वायरलेस डीबग करने की सुविधा को तुरंत चालू और बंद किया जा सकता है.
वायरलेस कनेक्शन से जुड़ी समस्याएं हल करना
अगर आपको अपने डिवाइस को वायरलेस तरीके से कनेक्ट करने में समस्याएं आ रही हैं, तो समस्या हल करने के लिए यह तरीका आज़माएं.
देखें कि आपका वर्कस्टेशन और डिवाइस, ज़रूरी शर्तें पूरी करता हो
देखें कि वर्कस्टेशन और डिवाइस, इस सेक्शन की शुरुआत में दी गई ज़रूरी शर्तों को पूरा करते हों.
देखें कि आपके वर्कस्टेशन पर adb सेटअप सही है या नहीं
अपने वर्कस्टेशन पर एडीबी का सेटअप सही तरीके से किया गया है या नहीं, इसकी पुष्टि करने के लिए, अपने वर्कस्टेशन पर टर्मिनल खोलें और adb server-status डालें. पुष्टि करें कि आउटपुट में यह जानकारी दिख रही हो:
-
version: "37.0.0"या इससे ज़्यादा हो: अगर ऐसा नहीं है, तो SDK Platform Tools का नया वर्शन डाउनलोड करें. -
mdns_enabled: true: अगर इसेfalseपर सेट किया जाता है, तो adb आपके नेटवर्क पर मौजूद डिवाइसों को अपने-आप नहीं खोज पाएगा. इस समस्या को हल करने के लिए, आपकोADB_MDNSएनवायरमेंट वैरिएबल को1पर सेट करना होगा. इसके बाद, adb सर्वर को फिर से शुरू करने के लिए,adb kill-serverऔर फिरadb start-serverचलाएं. -
mdns_backend: LIBADBMDNS: अगर ऐसा नहीं है, तो adb आपके नेटवर्क पर डिवाइसों का अपने-आप पता लगाने के लिए, पुरानी लाइब्रेरी का इस्तेमाल कर रहा है. इस समस्या को हल करने के लिए, आपकोADB_MDNS_OPENSCREENएनवायरमेंट वैरिएबल को0पर सेट करना होगा. इसके बाद, adb सर्वर को फिर से शुरू करने के लिए,adb kill-serverऔर फिरadb start-serverचलाएं.
देखें कि आपका नेटवर्क mDNS के साथ काम करता है या नहीं
adb, जोड़े गए डिवाइसों को अपने-आप ढूंढने और उनसे कनेक्ट करने के लिए, mDNS पर निर्भर करता है. यह देखने के लिए कि आपके नेटवर्क में mDNS काम करता है या नहीं, यह तरीका अपनाएं:
-
अपने डिवाइस पर, वायरलेस डीबगिंग चालू करें. इसके लिए, वाई-फ़ाई के ज़रिए किसी डिवाइस से कनेक्ट करना सेक्शन में दिया गया तरीका अपनाएं.
-
अपने वर्कस्टेशन पर, टर्मिनल खोलें और
adb mdns track-services --proto-textडालें. -
पुष्टि करें कि आउटपुट खाली न हो और उसमें आपके डिवाइस के आईपी पते और पोर्ट नंबर के साथ टीएलएस सेवा शामिल हो. अगर आउटपुट खाली है, तो इसका मतलब है कि आपका नेटवर्क mDNS के साथ काम नहीं करता. आउटपुट का उदाहरण:
tls { service { instance: "adb-35121FDJH000R8-xyMD0H" service: "_adb-tls-connect._tcp" ipv4: "192.168.84.23" ipv6: "fe80:0:0:0:fc7a:299d:8d38:6c1c" port: 37895 product_model: "Pixel 8" build_version_sdk_full: "37.0" given_name: "sherifeid Pixel" serial: "35121FDJH000R8" mdns_service_version: "2.0" hostname: "Android_CXUKYJY1.local" } }
देखें कि आपके डिवाइस में ADB Wi-Fi 2.0 की सुविधा काम करती है या नहीं
ध्यान दें: ADB Wi-Fi 2.0, Android 17 और इसके बाद के वर्शन पर काम करता है.
यह देखने के लिए कि आपके डिवाइस में ADB Wi-Fi 2.0 की सुविधा काम करती है या नहीं, यह तरीका अपनाएं:
-
अपने डिवाइस पर, वायरलेस डीबगिंग चालू करें. इसके लिए, वाई-फ़ाई के ज़रिए किसी डिवाइस से कनेक्ट करना सेक्शन में दिया गया तरीका अपनाएं.
-
अपने वर्कस्टेशन पर, टर्मिनल खोलें और
adb mdns track-services --proto-textडालें. -
पुष्टि करें कि आउटपुट में
mdns_service_version: "2.0"या इससे ज़्यादा है. अगर ऐसा नहीं है, तो इसका मतलब है कि आपके डिवाइस पर Android 17 या इसके बाद का वर्शन नहीं है. साथ ही, यह ADB Wi-Fi 2.0 के साथ काम नहीं करता. Android 17 या इसके बाद के वर्शन पर अपडेट करने के लिए, देखें कि आपके डिवाइस के लिए कोई सिस्टम अपडेट उपलब्ध है या नहीं. अपने डिवाइस का Android वर्शन देखना और उसे अपडेट करना.
किसी नई समस्या की शिकायत करना
अगर आपको अब भी अपने डिवाइस से वायरलेस तरीके से कनेक्ट करने में समस्याएं आ रही हैं, तो नई समस्या की शिकायत करें. कृपया अपनी शिकायत में यह जानकारी ज़रूर दें:
- आपके डिवाइस के लॉग: समस्या को दोहराएं और डिवाइस के लॉग अटैच करें
- आपके वर्कस्टेशन पर adb से मिले लॉग:
- एनवायरमेंट वैरिएबल सेट करें
ADB_TRACE=all. - adb सर्वर को रीस्टार्ट करें. इसके लिए,
adb kill-serverऔर फिरadb start-serverचलाएं. - समस्या को दोहराएं.
- लॉग फ़ाइलें ढूंढें:
adb server-statusचलाएं और आउटपुटlog_absolute_pathमें रेफ़र की गई लॉग फ़ाइल अटैच करें.
- एनवायरमेंट वैरिएबल सेट करें
पहली बार यूएसबी से कनेक्ट करने के बाद, किसी डिवाइस से वायरलेस तरीके से कनेक्ट करें. यह विकल्प सिर्फ़ Android 10 और इससे पहले के वर्शन पर उपलब्ध है
ध्यान दें: यह वर्कफ़्लो, Android 11 और इसके बाद के वर्शन पर भी लागू होता है. हालांकि, इसमें फ़िज़िकल यूएसबी के ज़रिए *शुरुआती* कनेक्शन भी शामिल होता है.
ध्यान दें: ये निर्देश, Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन पर काम करने वाले Wear डिवाइसों पर लागू नहीं होते. ज़्यादा जानकारी के लिए, Wear OS ऐप्लिकेशन को डीबग करने के बारे में गाइड देखें.
adb आम तौर पर, यूएसबी के ज़रिए डिवाइस से कम्यूनिकेट करता है. हालांकि, वाई-फ़ाई के ज़रिए भी adb का इस्तेमाल किया जा सकता है. Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन पर काम करने वाले डिवाइस को कनेक्ट करने के लिए, यूएसबी के ज़रिए यह शुरुआती तरीका अपनाएं:
-
अपने Android डिवाइस और
adbहोस्ट कंप्यूटर को एक ही वाई-फ़ाई नेटवर्क से कनेक्ट करें. - डिवाइस को यूएसबी केबल की मदद से, होस्ट कंप्यूटर से कनेक्ट करें.
-
टारगेट डिवाइस को पोर्ट 5555 पर टीसीपी/आईपी कनेक्शन सुनने के लिए सेट करें:
adb tcpip 5555
- यूएसबी केबल को टारगेट डिवाइस से डिसकनेक्ट करें.
- Android डिवाइस का आईपी पता ढूंढें. उदाहरण के लिए, Nexus डिवाइस पर आईपी पता देखने के लिए, सेटिंग > टैबलेट के बारे में जानकारी (या फ़ोन के बारे में जानकारी) > स्थिति > आईपी पता पर जाएं.
-
डिवाइस के आईपी पते से कनेक्ट करें:
adb connect device_ip_address:5555
-
पुष्टि करें कि आपका होस्ट कंप्यूटर, टारगेट डिवाइस से कनेक्ट हो:
$ adb devices List of devices attached device_ip_address:5555 device
ध्यान दें: सभी ऐक्सेस पॉइंट सही नहीं होते. आपको ऐसे ऐक्सेस पॉइंट का इस्तेमाल करना पड़ सकता है जिसका फ़ायरवॉल, adb के साथ काम करने के लिए सही तरीके से कॉन्फ़िगर किया गया हो.
आपका डिवाइस अब 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 कमांड और उसके आउटपुट को दिखाया गया है. तीन डिवाइसों पर YouTube चल रहा है. सूची की पहली दो लाइनें एम्युलेटर हैं. तीसरी लाइन, कंप्यूटर से जुड़ा हार्डवेयर डिवाइस है.
$ 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 कमांड देते समय, टारगेट डिवाइस के बारे में बताना होगा.
टारगेट तय करने के लिए, यह तरीका अपनाएं:
- टारगेट का सीरियल नंबर पाने के लिए,
devicesकमांड का इस्तेमाल करें. - सीरियल नंबर मिलने के बाद,
adbकमांड के साथ-sविकल्प का इस्तेमाल करके सीरियल नंबर डालें.- अगर आपको कई
adbकमांड जारी करनी हैं, तो$ANDROID_SERIALएनवायरमेंट वैरिएबल को सीरियल नंबर के तौर पर सेट किया जा सकता है. - अगर
-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 विकल्प का इस्तेमाल करें.
ऐप्स इंस्टॉल करना
adb कमांड का इस्तेमाल करके, किसी एम्युलेटर या कनेक्ट किए गए डिवाइस पर APK इंस्टॉल करने के लिए, install का इस्तेमाल किया जा सकता है:
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
शेल कमांड जारी करना
shell कमांड का इस्तेमाल, adb के ज़रिए डिवाइसों को कमांड देने या इंटरैक्टिव शेल शुरू करने के लिए किया जा सकता है. एक निर्देश देने के लिए, 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 प्लैटफ़ॉर्म टूल 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
पहली टेबल. गतिविधि मैनेजर के लिए उपलब्ध निर्देश
| निर्देश | ब्यौरा |
|---|---|
start [options] intent
|
intent के ज़रिए तय की गई Activity शुरू करें. इंटेंट आर्ग्युमेंट के लिए खास जानकारी देखें. इसके विकल्प हैं:
|
startservice [options] intent
|
intent में बताए गए Service को शुरू करें. इंटेंट आर्ग्युमेंट के लिए खास जानकारी देखें. इसके विकल्प हैं:
|
force-stop package
|
package से जुड़ी सभी प्रोसेस को ज़बरदस्ती बंद करें.
|
kill [options] package
|
package से जुड़ी सभी प्रोसेस बंद करें. इस कमांड से सिर्फ़ उन प्रोसेस को बंद किया जाता है जिन्हें बंद करना सुरक्षित है और जिनसे उपयोगकर्ता के अनुभव पर कोई असर नहीं पड़ेगा.
इसके विकल्प हैं:
|
kill-all
|
बैकग्राउंड में चल रही सभी प्रोसेस बंद करें. |
broadcast [options] intent
|
ब्रॉडकास्ट इंटेंट जारी करें. इंटेंट आर्ग्युमेंट के लिए खास जानकारी देखें. इसके विकल्प हैं:
|
instrument [options] component
|
Instrumentation इंस्टेंस की मदद से मॉनिटरिंग शुरू करें.
आम तौर पर, टारगेट component, फ़ॉर्म test_package/runner_class होता है. इसके विकल्प हैं:
|
profile start process file
|
process पर प्रोफ़ाइलर शुरू करें और नतीजों को file में लिखें.
|
profile stop process
|
process पर प्रोफ़ाइलर को बंद करें.
|
dumpheap [options] process file
|
process के हीप को डंप करो, file को लिखो. इसके विकल्प हैं:
|
dumpbitmaps [options] [-p process]
|
process से बिटमैप की जानकारी डंप करें
(एपीआई लेवल 36 और इसके बाद के वर्शन).
इसके विकल्प हैं:
process नहीं दिया गया है, तो सभी प्रोसेस से बिटमैप डंप किए जाएंगे.
|
set-debug-app [options] package
|
डीबग करने के लिए, ऐप्लिकेशन package सेट करें. इसके विकल्प हैं:
|
clear-debug-app
|
set-debug-app की मदद से डीबग करने के लिए, पैकेज का पिछला सेट हटाएं.
|
monitor [options]
|
क्रैश या एएनआर की निगरानी करना शुरू करें. इसके विकल्प हैं:
|
screen-compat {on | off} package
|
इस नीति से, package के स्क्रीन
संगतता मोड को कंट्रोल किया जाता है.
|
display-size [reset | widthxheight]
|
यह कुकी, डिवाइस के डिसप्ले साइज़ को बदल देती है.
यह कमांड, अलग-अलग स्क्रीन साइज़ पर अपने ऐप्लिकेशन की जांच करने में मदद करती है. इसके लिए, बड़ी स्क्रीन वाले डिवाइस पर छोटी स्क्रीन के रिज़ॉल्यूशन का इस्तेमाल किया जाता है. इसके उलट, छोटी स्क्रीन वाले डिवाइस पर बड़ी स्क्रीन के रिज़ॉल्यूशन का इस्तेमाल किया जाता है.
उदाहरण: |
display-density dpi
|
डिवाइस की डिसप्ले डेंसिटी को बदलें.
यह कमांड, अलग-अलग स्क्रीन डेंसिटी पर अपने ऐप्लिकेशन की जांच करने में मदद करती है. इसके लिए, कम डेंसिटी वाली स्क्रीन का इस्तेमाल करके, ज़्यादा डेंसिटी वाली स्क्रीन के एनवायरमेंट को मिमिक किया जाता है. इसके उलट भी किया जा सकता है.
उदाहरण: |
to-uri intent
|
दिए गए इंटेंट स्पेसिफ़िकेशन को यूआरआई के तौर पर प्रिंट करता है. |
to-intent-uri intent
|
दिए गए इंटेंट स्पेसिफ़िकेशन को intent: यूआरआई के तौर पर प्रिंट करो. |
memory-limiter subcommand [options]
|
Android 17 और इसके बाद के वर्शन पर काम करने वाले डिवाइसों पर मेमोरी की सीमाएं तय करना या उन्हें बंद करना. Android 16 और इससे पहले के वर्शन वाले डिवाइसों पर इसका कोई असर नहीं पड़ता. ये सब-कमांड उपलब्ध हैं:
|
इंटेंट आर्ग्युमेंट के लिए स्पेसिफ़िकेशन
गतिविधि मैनेजर की उन कमांड के लिए जिनमें intent आर्ग्युमेंट होता है, यहां दिए गए विकल्पों का इस्तेमाल करके इंटेंट तय किया जा सकता है:
पैकेज मैनेजर को कॉल करें (pm)
adb शेल में, पैकेज मैनेजर (pm) टूल की मदद से कमांड दी जा सकती हैं. इससे डिवाइस पर इंस्टॉल किए गए ऐप्लिकेशन पैकेज पर कार्रवाइयां की जा सकती हैं और क्वेरी की जा सकती हैं.
शेल में, pm का सिंटैक्स यह है:
pm command
रिमोट शेल में जाए बिना, सीधे adb से पैकेज मैनेजर कमांड भी जारी की जा सकती है. उदाहरण के लिए:
adb shell pm uninstall com.example.MyApp
टेबल 2. पैकेज मैनेजर के लिए उपलब्ध निर्देश
| निर्देश | ब्यौरा |
|---|---|
list packages [options] filter
|
सभी पैकेज प्रिंट करें. इसके अलावा, सिर्फ़ उन पैकेज को प्रिंट करने का विकल्प भी है जिनके पैकेज के नाम में filter में दिया गया टेक्स्ट शामिल है. विकल्प:
|
list permission-groups
|
अनुमति वाले सभी ग्रुप प्रिंट करें. |
list permissions [options] group
|
सभी अनुमतियों को प्रिंट करें. इसके अलावा, सिर्फ़ group में मौजूद अनुमतियों को भी प्रिंट किया जा सकता है. विकल्प:
|
list instrumentation [options]
|
सभी टेस्ट पैकेज की सूची बनाएं. विकल्प:
|
list features
|
सिस्टम की सभी सुविधाओं को प्रिंट करें. |
list libraries
|
मौजूदा डिवाइस पर काम करने वाली सभी लाइब्रेरी प्रिंट करें. |
list users
|
सिस्टम पर मौजूद सभी उपयोगकर्ताओं की जानकारी प्रिंट करें. |
path package
|
दिए गए package के APK का पाथ प्रिंट करता है.
|
install [options] path
|
सिस्टम में path के ज़रिए तय किया गया पैकेज इंस्टॉल करता है. विकल्प:
|
uninstall [options] package
|
यह कमांड, सिस्टम से पैकेज हटाती है. विकल्प:
|
clear package
|
किसी पैकेज से जुड़ा सारा डेटा मिटाएं. |
enable package_or_component
|
दिए गए पैकेज या कॉम्पोनेंट को चालू करें. इसे "package/class" के तौर पर लिखा जाता है. |
disable package_or_component
|
दिए गए पैकेज या कॉम्पोनेंट को बंद करें. इसे "package/class" के तौर पर लिखा जाता है. |
disable-user [options] package_or_component
|
विकल्प:
|
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
|
डिफ़ॉल्ट रूप से इंस्टॉल करने की जगह बदलें. जगह की वैल्यू:
ध्यान दें: इसका इस्तेमाल सिर्फ़ डीबग करने के लिए किया जाता है. इसका इस्तेमाल करने से, ऐप्लिकेशन काम करना बंद कर सकते हैं और अन्य समस्याएं हो सकती हैं. |
get-install-location
|
यह इंस्टॉल करने की मौजूदा जगह की जानकारी दिखाता है. रिटर्न वैल्यू:
|
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 के लिए, डोमेन की पुष्टि की स्थिति प्रिंट की जाती है. अगर कोई पैकेज नहीं दिया गया है, तो सभी पैकेज के लिए स्थिति प्रिंट की जाती है. राज्य के कोड इस तरह से तय किए जाते हैं:
इसके विकल्प हैं:
|
reset-app-links [options] [package]
|
दिए गए पैकेज के लिए, डोमेन की पुष्टि करने की स्थिति को रीसेट करें. अगर कोई पैकेज नहीं दिया गया है, तो सभी पैकेज के लिए ऐसा करें.
इसके विकल्प हैं:
|
verify-app-links [--re-verify] [package]
|
दिए गए package या सभी पैकेज के लिए पुष्टि करने का अनुरोध ब्रॉडकास्ट करें. अगर कोई पैकेज नहीं दिया गया है, तो सभी पैकेज के लिए अनुरोध ब्रॉडकास्ट करें. यह इवेंट सिर्फ़ तब भेजा जाता है, जब पैकेज ने पहले कभी कोई जवाब रिकॉर्ड न किया हो.
|
set-app-links [--package package] state domains
|
किसी पैकेज के लिए, डोमेन की स्थिति को मैन्युअल तरीके से सेट करें. इसके लिए, पैकेज को डोमेन का एलान autoVerify के तौर पर करना होगा. इस कमांड से, उन डोमेन के लिए गड़बड़ी की रिपोर्ट नहीं मिलेगी जिन पर यह नीति लागू नहीं की जा सकी.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
किसी पैकेज के लिए, होस्ट उपयोगकर्ता के चुने जाने की स्थिति को मैन्युअल तरीके से सेट करता है. इसके लिए, पैकेज को डोमेन के बारे में बताना होगा. इस कमांड से, उन डोमेन के लिए गड़बड़ी की रिपोर्ट नहीं मिलेगी जिन पर यह लागू नहीं हो सका.
|
set-app-links-allowed --user user_id [--package package] allowed
|
किसी पैकेज के लिए, लिंक हैंडलिंग की अपने-आप पुष्टि होने की सेटिंग को टॉगल करें.
|
get-app-link-owners --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 को ऐक्टिव एडमिन के तौर पर सेट करने के लिए किया जाता है.
इसके विकल्प हैं:
|
set-profile-owner [options] component
|
किसी मौजूदा उपयोगकर्ता के लिए, component को ऐक्टिव एडमिन और उसके पैकेज को प्रोफ़ाइल के मालिक के तौर पर सेट करें.
इसके विकल्प हैं:
|
set-device-owner [options] component
|
component को ऐक्टिव एडमिन और उसके पैकेज को डिवाइस के मालिक के तौर पर सेट करें.
इसके विकल्प हैं:
|
remove-active-admin [options] component
|
किसी सक्रिय एडमिन को बंद करना. ऐप्लिकेशन के मेनिफ़ेस्ट में android:testOnly का एलान करना ज़रूरी है. इस कमांड से, डिवाइस और प्रोफ़ाइल के मालिकों को भी हटा दिया जाता है.
इसके विकल्प हैं:
|
clear-freeze-period-record
|
डिवाइस के रिकॉर्ड से, सिस्टम के ओटीए अपडेट के लिए पहले से सेट किए गए फ़्रीज़ पीरियड की जानकारी मिटा दी जाती है. यह सुविधा, फ़्रीज़ पीरियड को मैनेज करने वाले ऐप्लिकेशन डेवलप करते समय, डिवाइस शेड्यूल करने से जुड़ी पाबंदियों से बचने के लिए काम की है. सिस्टम अपडेट मैनेज करना लेख पढ़ें.
यह सुविधा, Android 9.0 (एपीआई लेवल 28) और इसके बाद के वर्शन पर काम करने वाले डिवाइसों पर उपलब्ध है. |
force-network-logs
|
सिस्टम को यह निर्देश दें कि वह किसी डीपीसी के लिए, पहले से मौजूद सभी नेटवर्क लॉग को वापस पाने के लिए तैयार करे. अगर कनेक्शन या डीएनएस लॉग उपलब्ध हैं, तो DPC को onNetworkLogsAvailable() कॉलबैक मिलता है. नेटवर्क पर की जाने वाली गतिविधि को लॉग करना लेख पढ़ें.
इस कमांड के इस्तेमाल पर दर से जुड़ी पाबंदी है. यह सुविधा, Android 9.0 (एपीआई लेवल 28) और इसके बाद के वर्शन पर काम करने वाले डिवाइसों पर उपलब्ध है. |
force-security-logs
|
सिस्टम को यह निर्देश दें कि वह डीपीसी को सुरक्षा से जुड़े सभी मौजूदा लॉग उपलब्ध कराए. अगर लॉग उपलब्ध हैं, तो 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
इसके अलावा, अगर फ़ाइल का नाम नहीं दिया जाता है, तो screencap इमेज को स्टैंडर्ड आउटपुट में लिखता है. PNG फ़ॉर्मैट तय करने के लिए, -p विकल्प के साथ इस कमांड का इस्तेमाल किया जा सकता है. इससे डिवाइस के स्क्रीनशॉट को सीधे अपनी लोकल मशीन पर मौजूद किसी फ़ाइल में स्ट्रीम किया जा सकता है.
यहां एक ही कमांड में स्क्रीनशॉट कैप्चर करने और उसे स्थानीय तौर पर सेव करने का उदाहरण दिया गया है:
# use 'exec-out' instead of 'shell' to get raw data $ adb exec-out screencap -p > 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 पर काम करने वाले डिवाइसों के लिए, वीडियो रिकॉर्डिंग की सुविधा उपलब्ध नहीं है.
- ऐसा हो सकता है कि कुछ डिवाइसों पर, उनके डिसप्ले के ओरिजनल रिज़ॉल्यूशन में रिकॉर्डिंग न हो पाए. अगर आपको स्क्रीन रिकॉर्ड करने में समस्याएं आ रही हैं, तो स्क्रीन रिज़ॉल्यूशन कम करके देखें.
- रिकॉर्डिंग के दौरान स्क्रीन को घुमाने की सुविधा उपलब्ध नहीं है. अगर रिकॉर्डिंग के दौरान स्क्रीन घूमती है, तो रिकॉर्डिंग में स्क्रीन का कुछ हिस्सा नहीं दिखता.
चौथी टेबल. screenrecord विकल्प
| विकल्प | ब्यौरा |
|---|---|
--help
|
कमांड सिंटैक्स और विकल्प दिखाएं |
--size widthxheight
|
वीडियो का साइज़ सेट करें: 1280x720. डिफ़ॉल्ट वैल्यू, डिवाइस के डिसप्ले का नेटिव रिज़ॉल्यूशन होती है. अगर यह सुविधा काम नहीं करती है, तो डिफ़ॉल्ट वैल्यू 1280x720 होती है. बेहतर नतीजों के लिए, अपने डिवाइस के Advanced Video Coding (AVC) एन्कोडर के साथ काम करने वाले साइज़ का इस्तेमाल करें. |
--bit-rate rate |
वीडियो के लिए वीडियो बिट रेट सेट करें. यह वैल्यू मेगाबिट प्रति सेकंड में होती है. डिफ़ॉल्ट वैल्यू 20 एमबीपीएस होती है.
वीडियो क्वालिटी को बेहतर बनाने के लिए, बिट रेट बढ़ाया जा सकता है. हालांकि, ऐसा करने से फ़िल्म की फ़ाइलें बड़ी हो जाती हैं. यहां दिए गए उदाहरण में, रिकॉर्डिंग के बिट रेट को 6 एमबीपीएस पर सेट किया गया है:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
ज़्यादा से ज़्यादा रिकॉर्डिंग का समय सेकंड में सेट करें. डिफ़ॉल्ट और ज़्यादा से ज़्यादा वैल्यू 180 (तीन मिनट) होती है. |
--rotate |
आउटपुट को 90 डिग्री घुमाएं. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. |
--verbose |
कमांड-लाइन स्क्रीन पर लॉग की जानकारी दिखाएं. अगर आपने यह विकल्प सेट नहीं किया है, तो यूटिलिटी चालू होने पर कोई जानकारी नहीं दिखाएगी. |
ऐप्लिकेशन के लिए एआरटी प्रोफ़ाइलें पढ़ना
Android 7.0 (एपीआई लेवल 24) से, Android Runtime (एआरटी) इंस्टॉल किए गए ऐप्लिकेशन के लिए एक्ज़ीक्यूशन प्रोफ़ाइलें इकट्ठा करता है. इनका इस्तेमाल ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए किया जाता है. इकट्ठा की गई प्रोफ़ाइलों की जांच करें. इससे यह पता चलेगा कि कौनसे तरीके बार-बार इस्तेमाल किए जाते हैं और ऐप्लिकेशन के स्टार्टअप के दौरान किन क्लास का इस्तेमाल किया जाता है.
ध्यान दें: एक्ज़ीक्यूशन प्रोफ़ाइल के फ़ाइल नाम को सिर्फ़ तब वापस पाया जा सकता है, जब आपके पास फ़ाइल सिस्टम का रूट ऐक्सेस हो. उदाहरण के लिए, एम्युलेटर पर.
प्रोफ़ाइल की जानकारी को टेक्स्ट फ़ॉर्मैट में पाने के लिए, इस कमांड का इस्तेमाल करें:
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 USB बैकएंड
adb सर्वर, दो बैकएंड के ज़रिए यूएसबी स्टैक से इंटरैक्ट कर सकता है. यह ओएस (Windows, Linux या macOS) के नेटिव बैकएंड का इस्तेमाल कर सकता है. इसके अलावा, यह libusb बैकएंड का भी इस्तेमाल कर सकता है.
attach, detach, और यूएसबी की स्पीड का पता लगाने जैसी कुछ सुविधाएं, सिर्फ़ libusb बैकएंड का इस्तेमाल करने पर उपलब्ध होती हैं.
ADB_LIBUSB एनवायरमेंट वैरिएबल का इस्तेमाल करके, कोई बैकएंड चुना जा सकता है.
अगर इसे सेट नहीं किया जाता है, तो adb अपने डिफ़ॉल्ट बैकएंड का इस्तेमाल करता है. ओएस के हिसाब से, डिफ़ॉल्ट ऐक्शन और सेटिंग अलग-अलग होती हैं. ADB v34 से, Windows को छोड़कर सभी ओएस पर libusb बैकएंड का इस्तेमाल डिफ़ॉल्ट रूप से किया जाता है. Windows पर, नेटिव बैकएंड का इस्तेमाल डिफ़ॉल्ट रूप से किया जाता है. अगर ADB_LIBUSB सेट है, तो इससे यह तय होता है कि नेटिव बैकएंड या libusb का इस्तेमाल किया जाएगा. adb एनवायरमेंट वैरिएबल के बारे में ज़्यादा जानने के लिए, adb मैन्युअल पेज देखें.
adb mDNS बैकएंड
ADB, mDNS (मल्टीकास्ट डीएनएस) प्रोटोकॉल का इस्तेमाल करता है. इससे सर्वर और डिवाइस, वायरलेस डीबग करने के लिए अपने-आप कनेक्ट हो जाते हैं. ADB v37 के मुताबिक, ADB सर्वर में दो mDNS बैकएंड होते हैं: libadbmdns और openscreen.
डिफ़ॉल्ट और सुझाया गया बैकएंड libadbmdns है. इस सेटिंग को बदलने के लिए, एनवायरमेंट वैरिएबल ADB_MDNS_OPENSCREEN का इस्तेमाल किया जा सकता है. इसे 1 या 0 पर सेट करें. macOS पर Openscreen बैकएंड के लिए, ADB v35 से सहायता मिलती है. ADB v34 से, Windows और Linux पर यह सुविधा काम करती है.
adb बर्स्ट मोड (ADB 36.0.0 से शुरू होने वाला)
बर्स्ट मोड एक एक्सपेरिमेंटल सुविधा है. इसकी मदद से, ADB किसी डिवाइस को तब भी पैकेट भेजता रहता है, जब डिवाइस ने पिछले पैकेट का जवाब नहीं दिया होता. इससे बड़ी फ़ाइलों को ट्रांसफ़र करते समय, ADB की थ्रूपुट क्षमता काफ़ी बढ़ जाती है. साथ ही, डीबग करते समय लेटेन्सी भी कम हो जाती है.
बर्स्ट मोड, डिफ़ॉल्ट रूप से बंद होता है. इस सुविधा को चालू करने के लिए, इनमें से कोई एक तरीका अपनाएं:
- एनवायरमेंट वैरिएबल
ADB_BURST_MODEको1पर सेट करें. - Android Studio में, डिबगर की सेटिंग पर जाएं. इसके लिए, File (macOS पर Android Studio) > Settings > Build, Execution, Deployment > Debugger पर जाएं और ADB Server Burst Mode को Enabled पर सेट करें.