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 वर्शन देखना और उसे अपडेट करना लेख पढ़ें.
-
अगर आईडीई का इस्तेमाल किया जा रहा है, तो पक्का करें कि आपके पास Android Studio का नया वर्शन इंस्टॉल हो. इसे डाउनलोड करने के लिए, यहां क्लिक करें.
-
अपने वर्कस्टेशन पर, SDK Platform Tools के नए वर्शन पर अपडेट करें.
वायरलेस डीबगिंग का इस्तेमाल करने के लिए, आपको क्यूआर कोड या डिवाइस जोड़ने वाले कोड का इस्तेमाल करके, अपने डिवाइस को वर्कस्टेशन से जोड़ना होगा. आपका वर्कस्टेशन और डिवाइस, दोनों एक ही वायरलेस नेटवर्क से कनेक्ट होने चाहिए. अपने डिवाइस से कनेक्ट करने के लिए, यह तरीका अपनाएं:
-
अपने डिवाइस पर डेवलपर के लिए सेटिंग और टूल चालू करें.
-
Android Studio खोलें और रन कॉन्फ़िगरेशन मेन्यू से, वाई-फ़ाई का इस्तेमाल करके डिवाइसों को जोड़ें चुनें.
पहली इमेज. कॉन्फ़िगरेशन मेन्यू चलाएं.वाई-फ़ाई से डिवाइसों को जोड़ें विंडो पॉप-अप होती है, जैसा कि दूसरी इमेज में दिखाया गया है.
दूसरी इमेज. क्यूआर कोड या डिवाइस जोड़ने वाले कोड का इस्तेमाल करके, डिवाइसों को जोड़ने के लिए पॉप-अप विंडो. -
अपने डिवाइस पर, वायरलेस डीबगिंग पर टैप करें और अपने डिवाइस को जोड़ें:
तीसरी इमेज. Google Pixel फ़ोन पर वायरलेस डीबगिंग सेटिंग का स्क्रीनशॉट.-
अपने डिवाइस को क्यूआर कोड से जोड़ने के लिए, क्यूआर कोड की मदद से डिवाइस जोड़ें को चुनें. इसके बाद, दूसरे चित्र में दिखाए गए वाई-फ़ाई से डिवाइस जोड़ें पॉप-अप से मिले क्यूआर कोड को स्कैन करें.
-
जोड़ने के कोड की मदद से अपने डिवाइस को जोड़ने के लिए, वाई-फ़ाई से डिवाइस जोड़ें पॉप-अप में जाकर, जोड़ने के कोड की मदद से डिवाइस जोड़ें को चुनें. अपने डिवाइस पर, जोड़ने के कोड का इस्तेमाल करके जोड़ें को चुनें और दिए गए छह अंकों के कोड को नोट करें. जब आपका डिवाइस, वाई-फ़ाई से डिवाइस जोड़ें विंडो में दिखने लगे, तो जोड़ें को चुनें और अपने डिवाइस पर दिखने वाला छह अंकों वाला कोड डालें.
चौथी इमेज. छह अंकों का कोड डालने का उदाहरण.
-
-
डिवाइस को जोड़ने के बाद, उस पर ऐप्लिकेशन डिप्लॉय किया जा सकता है.
किसी दूसरे डिवाइस को जोड़ने या अपने वर्कस्टेशन पर मौजूदा डिवाइस को अनलिंक करने के लिए, अपने डिवाइस पर वायरलेस डीबगिंग पर जाएं. जोड़े गए डिवाइसों में जाकर, अपने वर्कस्टेशन के नाम पर टैप करें. इसके बाद, हटाएं को चुनें.
-
अगर आपको वायरलेस डीबगिंग को तुरंत चालू और बंद करना है, तो डेवलपर के लिए क्विक सेटिंग टाइल में जाकर, वायरलेस डीबगिंग की सुविधा का इस्तेमाल करें. यह सुविधा, डेवलपर के लिए सेटिंग और टूल > डेवलपर के लिए क्विक सेटिंग टाइल में मिलेगी.
पांचवीं इमेज. क्विक सेटिंग की डेवलपर टाइल सेटिंग की मदद से, वायरलेस डीबगिंग को तुरंत चालू और बंद किया जा सकता है.
कमांड लाइन का इस्तेमाल करके वाई-फ़ाई कनेक्शन
इसके अलावा, Android Studio के बिना कमांड-लाइन का इस्तेमाल करके अपने डिवाइस से कनेक्ट करने के लिए, यह तरीका अपनाएं:
-
अपने डिवाइस पर, पहले बताए गए तरीके से डेवलपर के लिए सेटिंग और टूल चालू करें.
-
अपने डिवाइस पर, वायरलेस डीबगिंग की सुविधा चालू करें. इसके बारे में पहले बताया गया है.
-
अपने वर्कस्टेशन पर, टर्मिनल विंडो खोलें और
android_sdk/platform-tools
पर जाएं. -
जोड़ने के लिए दिया गया कोड इस्तेमाल करके, डिवाइस जोड़ें को चुनकर, अपना आईपी पता, पोर्ट नंबर, और जोड़ने के लिए दिया गया कोड ढूंढें. डिवाइस पर दिखने वाले आईपी पते, पोर्ट नंबर, और जोड़ने के कोड को नोट करें.
-
अपने वर्कस्टेशन के टर्मिनल पर,
adb pair ipaddr:port
चलाएं. ऊपर दिए गए आईपी पते और पोर्ट नंबर का इस्तेमाल करें. -
जब कहा जाए, तब जोड़ने का कोड डालें, जैसा कि यहां दिखाया गया है.
छठी इमेज. आपको एक मैसेज मिलेगा, जिसमें बताया जाएगा कि आपका डिवाइस, स्मार्टवॉच से जोड़ दिया गया है.
वायरलेस कनेक्शन से जुड़ी समस्याएं हल करना
अगर आपको अपने डिवाइस से तार के बिना कनेक्ट करने में समस्या आ रही है, तो समस्या हल करने के लिए यहां दिया गया तरीका आज़माएं.
देखें कि आपका वर्कस्टेशन और डिवाइस, ज़रूरी शर्तें पूरी करता है या नहीं
देखें कि वर्कस्टेशन और डिवाइस, इस सेक्शन की शुरुआत में बताई गई ज़रूरी शर्तें पूरी करते हों.
आम तौर पर होने वाली अन्य समस्याओं की जांच करना
यहां वायरलेस डीबगिंग (adb या Android Studio की मदद से) से जुड़ी मौजूदा समस्याओं और उन्हें ठीक करने के तरीके की सूची दी गई है:
-
वाई-फ़ाई कनेक्ट नहीं हो रहा है: सुरक्षित वाई-फ़ाई नेटवर्क, जैसे कि कॉर्पोरेट वाई-फ़ाई नेटवर्क, पी2पी कनेक्शन को ब्लॉक कर सकते हैं. साथ ही, आपको वाई-फ़ाई से कनेक्ट करने की अनुमति नहीं दे सकते. केबल या किसी दूसरे (नॉन-कॉर्प) वाई-फ़ाई नेटवर्क से कनेक्ट करके देखें. अगर किसी ऐसे नेटवर्क का इस्तेमाल किया जा सकता है जो किसी कंपनी का नहीं है, तो
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) या इससे पहले के वर्शन वाले डिवाइस को कनेक्ट करने के लिए,
यूएसबी के ज़रिए यह तरीका अपनाएं:
-
अपने 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
कमांड और उसका आउटपुट दिखाया गया है. तीन डिवाइस चालू हैं. सूची में पहली दो लाइनें, एमुलेटर हैं और तीसरी लाइन, कंप्यूटर से जुड़ा एक हार्डवेयर डिवाइस है.
$ 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 नाम दें. AVD के नामों की सूची पाने के लिए, emulator -list-avds
टाइप करें. emulator
कमांड,
android_sdk/tools
डायरेक्ट्री में मौजूद है.
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully *
उदाहरण 2: नीचे दिए गए कमांड क्रम में, adb devices
डिवाइसों की सूची दिखाता है, क्योंकि adb
सर्वर पहले शुरू किया गया था.
adb devices
आउटपुट में एम्युलेटर देखने के लिए, adb
सर्वर को बंद करें और फिर emulator
कमांड का इस्तेमाल करने के बाद और adb devices
कमांड का इस्तेमाल करने से पहले, इसे फिर से शुरू करें. इसके लिए, यह तरीका अपनाएं:
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device
एमुलेटर के कमांड-लाइन विकल्पों के बारे में ज़्यादा जानने के लिए, कमांड-लाइन के शुभारंभ के विकल्प देखें.
किसी डिवाइस को निर्देश भेजना
अगर एक से ज़्यादा डिवाइस चालू हैं, तो adb
कमांड देते समय आपको टारगेट डिवाइस के बारे में बताना होगा.
टारगेट तय करने के लिए, यह तरीका अपनाएं:
- टारगेट का सीरियल नंबर पाने के लिए,
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
विकल्प का इस्तेमाल करें.
ऐप्लिकेशन इंस्टॉल करना
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 को शुरू करें. इंटेंट के आर्ग्युमेंट के लिए खास जानकारी देखें. आपके पास ये विकल्प हैं:
|
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 में लिखें. आपके पास ये विकल्प हैं:
|
set-debug-app [options] package
|
ऐप्लिकेशन package को डीबग करने के लिए सेट करें. आपके पास ये विकल्प हैं:
|
clear-debug-app
|
set-debug-app का इस्तेमाल करके, डीबगिंग के लिए पहले से सेट किया गया पैकेज मिटाएं.
|
monitor [options]
|
क्रैश या ANR की निगरानी शुरू करें. आपके पास ये विकल्प हैं:
|
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
टेबल 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
|
किसी पैकेज के लिए, डोमेन की स्थिति को मैन्युअल तरीके से सेट करें. इसके काम करने के लिए, पैकेज में डोमेन को ऑटो-पुष्टि के तौर पर घोषित किया जाना चाहिए. इस निर्देश से, उन डोमेन के लिए गड़बड़ी की रिपोर्ट नहीं मिलेगी जिन्हें लागू नहीं किया जा सका.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
किसी पैकेज के लिए, होस्ट के तौर पर चुने गए उपयोगकर्ता की स्थिति को मैन्युअल तरीके से सेट करना. इसके काम करने के लिए, पैकेज में डोमेन की जानकारी दी जानी चाहिए. यह कमांड, उन डोमेन के लिए गड़बड़ी की जानकारी नहीं देगा जिन्हें लागू नहीं किया जा सका.
|
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
टेबल 3. 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
|
सिस्टम को किसी भी मौजूदा नेटवर्क लॉग को डीपीसी से वापस पाने के लिए तैयार करने के लिए मजबूर करना. अगर कनेक्शन या डीएनएस लॉग उपलब्ध हैं, तो डीपीसी को onNetworkLogsAvailable() कॉलबैक मिलता है. नेटवर्क पर की गई गतिविधियों को लॉग करना देखें.
इस निर्देश को सीमित बार इस्तेमाल किया जा सकता है. यह सुविधा, Android 9.0 (एपीआई लेवल 28) और उसके बाद के वर्शन वाले डिवाइसों पर काम करती है. |
force-security-logs
|
सिस्टम को किसी भी मौजूदा सुरक्षा लॉग को डीपीसी के लिए उपलब्ध कराने के लिए मजबूर करें. अगर लॉग उपलब्ध हैं, तो डीपीसी को 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 (3 मिनट) होती है. |
--rotate |
आउटपुट को 90 डिग्री घुमाएं. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. |
--verbose |
कमांड-लाइन स्क्रीन पर लॉग की जानकारी दिखाएं. अगर यह विकल्प सेट नहीं किया जाता है, तो उपयोगिता के चलने के दौरान कोई जानकारी नहीं दिखती. |
ऐप्लिकेशन के लिए ART प्रोफ़ाइलें पढ़ना
Android 7.0 (एपीआई लेवल 24) से, Android Runtime (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 मैन्युअल पेज देखें.
adb बर्स्ट मोड (ADB 36.0.0 से शुरू)
बर्स्ट मोड एक एक्सपेरिमेंटल सुविधा है. इसकी मदद से, ADB किसी डिवाइस पर एक पैकेट भेजने के बाद, अगला पैकेट भेजना जारी रखता है. इससे बड़ी फ़ाइलें ट्रांसफ़र करते समय, ADB की परफ़ॉर्मेंस बहुत बेहतर हो जाती है. साथ ही, डिबग करने के दौरान लगने वाला समय भी कम हो जाता है.
बर्स्ट मोड डिफ़ॉल्ट रूप से बंद होता है. इस सुविधा को चालू करने के लिए, इनमें से कोई एक काम करें:
- एनवायरमेंट वैरिएबल
ADB_DELAYED_ACK
को1
पर सेट करें. - Android Studio में, डीबगर की सेटिंग पर जाएं. इसके लिए, फ़ाइल (या macOS पर Android Studio) > सेटिंग > बिल्ड, एक्सीक्यूशन, डिप्लॉयमेंट > डीबगर पर जाएं और ADB सर्वर बर्स्ट मोड को चालू है पर सेट करें.