Android डीबग ब्रिज (adb) एक वर्सेटाइल कमांड-लाइन टूल है. इसकी मदद से, किसी डिवाइस से कम्यूनिकेट किया जा सकता है. adb कमांड की मदद से, डिवाइस पर कई कार्रवाइयां की जा सकती हैं. जैसे, ऐप्लिकेशन इंस्टॉल करना और उन्हें डीबग करना. adb, Unix शेल का ऐक्सेस देता है. इसका इस्तेमाल करके, किसी डिवाइस पर कई तरह के निर्देश चलाए जा सकते हैं. यह क्लाइंट-सर्वर प्रोग्राम है. इसमें तीन कॉम्पोनेंट शामिल होते हैं:
- क्लाइंट, जो निर्देश भेजता है. क्लाइंट, आपकी डेवलपमेंट मशीन पर चलता है.
adbकमांड जारी करके, कमांड-लाइन टर्मिनल से किसी क्लाइंट को शुरू किया जा सकता है. - एक डेमॉन (adbd), जो किसी डिवाइस पर निर्देश चलाता है. यह डेमॉन, हर डिवाइस पर बैकग्राउंड प्रोसेस के तौर पर काम करता है.
- एक सर्वर, जो क्लाइंट और डेमॉन के बीच कम्यूनिकेशन को मैनेज करता है. सर्वर, आपकी डेवलपमेंट मशीन पर बैकग्राउंड प्रोसेस के तौर पर काम करता है.
adb, Android SDK प्लैटफ़ॉर्म टूल पैकेज में शामिल है. 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 कनेक्शन के लिए होता है. कंसोल कनेक्शन के लिए सम संख्या वाला पोर्ट इस्तेमाल किया जाता है और adb कनेक्शन के लिए विषम संख्या वाला पोर्ट इस्तेमाल किया जाता है. उदाहरण के लिए:
Emulator 1, कंसोल: 5554
Emulator 1, adb: 5555
Emulator 2, कंसोल: 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 डीबग ब्रिज (एडीबी) का इस्तेमाल करके, अपने वर्कस्टेशन से ऐप्लिकेशन को वायरलेस तरीके से डिप्लॉय और डीबग किया जा सकता है. उदाहरण के लिए, डीबग किए जा सकने वाले ऐप्लिकेशन को कई रिमोट डिवाइसों पर डिप्लॉय किया जा सकता है. इसके लिए, आपको अपने डिवाइस को यूएसबी से कनेक्ट करने की ज़रूरत नहीं होती. इससे, यूएसबी कनेक्शन से जुड़ी सामान्य समस्याओं को हल करने की ज़रूरत नहीं पड़ती. जैसे, ड्राइवर इंस्टॉल करना.
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 फ़ोन पर वायरलेस डीबगिंग का अनुरोध. -
अपने नेटवर्क पर वॉयरलेस डीबगिंग की अनुमति दें. ध्यान दें कि इस नेटवर्क पर हमेशा अनुमति दें चेकबॉक्स पर क्लिक करने से, नेटवर्क को वॉयरलेस डीबगिंग के लिए भरोसेमंद नेटवर्क के तौर पर सेट कर दिया जाता है. आपका डिवाइस, इस नेटवर्क से कनेक्ट होते ही, इस नेटवर्क पर वॉयरलेस डीबगिंग की अनुमति हमेशा देगा.
-
अपने डिवाइस पर, जोड़ने के लिए कोड का इस्तेमाल करें को चुनें. इसके बाद, डिवाइस पर दिख रहे आईपी पते, पोर्ट नंबर, और जोड़ने के लिए कोड को नोट करें.
-
अपने वर्कस्टेशन पर, टर्मिनल विंडो खोलें और
android_sdk/platform-toolsपर जाएं. -
अपने वर्कस्टेशन के टर्मिनल पर,
adb pair ipaddr:portचलाएं. ऊपर दिए गए आईपी पते और पोर्ट नंबर का इस्तेमाल करें. -
जब आपसे जोड़ने के लिए कोड डालने के लिए कहा जाए, तब यहां दिखाया गया कोड डालें.
तीसरी इमेज. आपको एक मैसेज मिलेगा, जिसमें बताया जाएगा कि आपका डिवाइस जोड़ दिया गया है. -
डिवाइस को पेयर करने के बाद, पुष्टि करें कि आपका डिवाइस कनेक्ट है. अब अपने डिवाइस को वायरलेस तरीके से इस्तेमाल किया जा सकता है. यह ठीक उसी तरह काम करता है जैसे यूएसबी कनेक्शन के साथ काम करता है.
अपने वर्कस्टेशन को अनपेयर करने के लिए, अपने डिवाइस पर वायरलेस डीबगिंग पर जाएं. जोड़े गए डिवाइस में जाकर, अपने वर्कस्टेशन के नाम पर टैप करें. इसके बाद, हटाएं को चुनें. इसके अलावा, अपने डिवाइस के सेटिंग पेज पर जाकर, adb डीबगिंग के लिए दी गई अनुमतियां रद्द करें पर क्लिक करके, अपने वर्कस्टेशन और पहले से जोड़े गए सभी वर्कस्टेशन को अनपेयर किया जा सकता है.
-
अगर आपको वायरलेस डीबगिंग की सुविधा को तुरंत चालू और बंद करना है, तो डेवलपर के लिए सेटिंग और टूल > डेवलपर के लिए सेटिंग और टूल > क्विक सेटिंग डेवलपर टाइल में जाकर, क्विक सेटिंग डेवलपर टाइल का इस्तेमाल करें.
चौथी इमेज. क्विक सेटिंग डेवलपर टाइल सेटिंग की मदद से, वायरलेस डीबगिंग की सुविधा को तुरंत चालू और बंद किया जा सकता है.
ध्यान दें: Android Studio के उपयोगकर्ता, क्यूआर कोड की मदद से अपने डिवाइस को जोड़ सकते हैं. इसके लिए, क्यूआर कोड की मदद से डिवाइस जोड़ें को चुनें और Android Studio में वाई-फ़ाई नेटवर्क से डिवाइस जोड़ें डायलॉग से मिला क्यूआर कोड स्कैन करें.
वायरलेस कनेक्शन से जुड़ी समस्याएं हल करना
अगर आपको अपने डिवाइस को वायरलेस तरीके से कनेक्ट करने में समस्याएं आ रही हैं, तो समस्या हल करने के लिए यह तरीका आज़माएं.
देखें कि आपका वर्कस्टेशन और डिवाइस, ज़रूरी शर्तें पूरी करता हो
देखें कि वर्कस्टेशन और डिवाइस, इस सेक्शन की शुरुआत में दी गई ज़रूरी शर्तों को पूरा करते हों.
देखें कि आपके वर्कस्टेशन पर 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 से कनेक्ट हो गया है.
अगर आपके डिवाइस से 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कमांड जारी करनी हैं, तो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
शेल कमांड जारी करना
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 प्लैटफ़ॉर्म टूल 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: यूआरआई के तौर पर प्रिंट करता है. |
इंटेंट आर्ग्युमेंट के लिए जानकारी
गतिविधि मैनेजर की उन कमांड के लिए जिनमें intent आर्ग्युमेंट होता है, यहां दिए गए विकल्पों का इस्तेमाल करके इंटेंट तय किया जा सकता है:
पैकेज मैनेजर को कॉल करें (pm)
adb शेल में, पैकेज मैनेजर (pm) टूल का इस्तेमाल करके निर्देश दिए जा सकते हैं. इससे डिवाइस पर इंस्टॉल किए गए ऐप्लिकेशन पैकेज पर कार्रवाइयां की जा सकती हैं और क्वेरी की जा सकती हैं.
शेल में, pm का सिंटैक्स यह है:
pm command
रिमोट शेल में जाए बिना, सीधे adb से पैकेज मैनेजर कमांड भी जारी की जा सकती है
उदाहरण के लिए:
adb shell pm uninstall com.example.MyApp
दूसरी टेबल. पैकेज मैनेजर के लिए उपलब्ध कमांड
| निर्देश | ब्यौरा |
|---|---|
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 के लिए, डोमेन की पुष्टि की स्थिति प्रिंट करें. अगर कोई 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 के लिए उपलब्ध कराने के लिए मजबूर करता है. अगर लॉग उपलब्ध हैं, तो 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 |
कमांड-लाइन स्क्रीन पर लॉग की जानकारी दिखाएं. अगर आपने यह विकल्प सेट नहीं किया है, तो यूटिलिटी चालू होने पर कोई जानकारी नहीं दिखेगी. |
ऐप्लिकेशन के लिए 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 से, Windows को छोड़कर सभी ओएस पर liubusb बैकएंड का इस्तेमाल डिफ़ॉल्ट रूप से किया जाता है. 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 या इसके बाद का वर्शन होना ज़रूरी है. Windows और Linux पर ADB v34 या इसके बाद के वर्शन का इस्तेमाल किया जा सकता है.
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 पर सेट करें.