Android डीबग ब्रिज (adb
) एक ऐसा कमांड-लाइन टूल है जिसकी मदद से, किसी डिवाइस से कम्यूनिकेट किया जा सकता है. adb
निर्देश की मदद से, डिवाइस पर कई तरह की कार्रवाइयां की जा सकती हैं. जैसे, ऐप्लिकेशन इंस्टॉल करना और डिबग करना. adb
, Unix शेल का ऐक्सेस देता है. इसका इस्तेमाल करके, किसी डिवाइस पर कई तरह के कमांड चलाए जा सकते हैं. यह एक क्लाइंट-सर्वर प्रोग्राम है, जिसमें तीन कॉम्पोनेंट होते हैं:
- क्लाइंट, जो निर्देश भेजता है. क्लाइंट आपकी डेवलपमेंट मशीन पर काम करता है.
adb
कमांड का इस्तेमाल करके, कमांड-लाइन टर्मिनल से क्लाइंट को शुरू किया जा सकता है. - डेमन (adbd), जो किसी डिवाइस पर निर्देश चलाता है. डेमन, हर डिवाइस पर बैकग्राउंड प्रोसेस के तौर पर चलता है.
- एक सर्वर, जो क्लाइंट और डेमन के बीच कम्यूनिकेशन को मैनेज करता है. सर्वर, आपकी डेवलपमेंट मशीन पर बैकग्राउंड प्रोसेस के तौर पर चलता है.
adb
, Android SDK Platform Tools पैकेज में शामिल है. इस पैकेज को SDK Manager की मदद से डाउनलोड करें. यह पैकेज, android_sdk/platform-tools/
पर इंस्टॉल हो जाएगा. अगर आपको Android SDK के Platform Tools का स्टैंडअलोन पैकेज चाहिए, तो उसे यहां डाउनलोड करें.
adb
पर इस्तेमाल करने के लिए किसी डिवाइस को कनेक्ट करने के बारे में जानकारी पाने के लिए, हार्डवेयर डिवाइस पर ऐप्लिकेशन चलाना लेख पढ़ें. इसमें, सामान्य समस्याओं को हल करने के लिए, कनेक्शन असिस्टेंट का इस्तेमाल करने का तरीका भी बताया गया है.
adb कैसे काम करता है
adb
क्लाइंट शुरू करने पर, क्लाइंट सबसे पहले यह जांच करता है कि कोई adb
सर्वर प्रोसेस पहले से चल रही है या नहीं. अगर कोई डाउनलोड नहीं है, तो यह सर्वर प्रोसेस शुरू कर देता है.
सर्वर शुरू होने पर, वह लोकल टीसीपी पोर्ट 5037 से बाइंड हो जाता है और adb
क्लाइंट से भेजे गए निर्देशों को सुनता है.
ध्यान दें: adb
सर्वर से बातचीत करने के लिए, सभी adb
क्लाइंट पोर्ट 5037 का इस्तेमाल करते हैं.
इसके बाद, सर्वर उन सभी डिवाइसों के लिए कनेक्शन सेट अप करता है जो चालू हैं.
यह 5555 से 5585 की रेंज में मौजूद विषम नंबर वाले पोर्ट को स्कैन करके, एमुलेटर ढूंढता है. यह रेंज, पहले 16 एमुलेटर के लिए इस्तेमाल की जाती है. जब सर्वर को कोई adb
डेमन (adbd) मिलता है, तो वह उस पोर्ट से कनेक्शन सेट अप करता है.
हर एमुलेटर, क्रम से लगाए गए पोर्ट के एक जोड़े का इस्तेमाल करता है — कंसोल कनेक्शन के लिए, सम संख्या वाला पोर्ट और adb
कनेक्शन के लिए, विषम संख्या वाला पोर्ट. उदाहरण के लिए:
एम्युलेटर 1, कंसोल: 5554
एम्युलेटर 1, adb
: 5555
एम्युलेटर 2, कंसोल: 5556
एम्युलेटर 2, adb
: 5557
वगैरह.
जैसा कि दिखाया गया है, पोर्ट 5555 पर adb
से कनेक्ट किया गया एम्युलेटर, उस एम्युलेटर जैसा ही है जिसका कंसोल पोर्ट 5554 पर सुनता है.
सर्वर के सभी डिवाइसों के कनेक्शन सेट अप हो जाने के बाद, उन डिवाइसों को ऐक्सेस करने के लिए adb
निर्देशों का इस्तेमाल किया जा सकता है. सर्वर, डिवाइसों के कनेक्शन मैनेज करता है और कई adb
क्लाइंट से मिले निर्देशों को हैंडल करता है. इसलिए, किसी भी क्लाइंट या स्क्रिप्ट से किसी भी डिवाइस को कंट्रोल किया जा सकता है.
अपने डिवाइस पर adb डीबग करने की सुविधा चालू करना
यूएसबी के ज़रिए कनेक्ट किए गए डिवाइस के साथ adb का इस्तेमाल करने के लिए, आपको डिवाइस की सिस्टम सेटिंग में जाकर, डेवलपर के लिए सेटिंग में यूएसबी डीबगिंग को चालू करना होगा. Android 4.2 (API लेवल 17) और इसके बाद के वर्शन पर, डेवलपर के लिए सेटिंग और टूल स्क्रीन डिफ़ॉल्ट रूप से छिपी होती है. इसे देखने के लिए, डेवलपर के लिए सेटिंग और टूल चालू करें.
अब अपने डिवाइस को यूएसबी से कनेक्ट किया जा सकता है. android_sdk/platform-tools/
डायरेक्ट्री से adb devices
को चलाकर, यह पुष्टि की जा सकती है कि आपका डिवाइस कनेक्ट है या नहीं. अगर डिवाइस कनेक्ट है, तो आपको डिवाइस का नाम "डिवाइस" के तौर पर दिखेगा.
ध्यान दें: Android 4.2.2 (एपीआई लेवल 17) या उसके बाद के वर्शन वाले डिवाइस को कनेक्ट करने पर, सिस्टम एक डायलॉग बॉक्स दिखाता है. इसमें पूछा जाता है कि क्या आपको इस कंप्यूटर से डिबग करने की अनुमति देने वाली आरएसए कुंजी स्वीकार करनी है. सुरक्षा से जुड़ा यह तरीका, उपयोगकर्ता के डिवाइसों को सुरक्षित रखता है. इससे यह पक्का होता है कि डिवाइस को अनलॉक करने और डायलॉग बॉक्स में 'स्वीकार करें' पर क्लिक करने के बाद ही, यूएसबी डिबगिंग और adb के अन्य निर्देशों को लागू किया जा सकता है.
किसी डिवाइस को यूएसबी से कनेक्ट करने के बारे में ज़्यादा जानने के लिए, पढ़ें हार्डवेयर डिवाइस पर ऐप्लिकेशन चलाना.
वाई-फ़ाई की मदद से किसी डिवाइस से कनेक्ट करना
ध्यान दें: यहां दिए गए निर्देश, Android 11 (एपीआई लेवल 30) पर काम करने वाले Wear डिवाइसों पर लागू नहीं होते. ज़्यादा जानकारी के लिए, Wear OS ऐप्लिकेशन को डीबग करने की गाइड देखें.
Android 11 (एपीआई लेवल 30) और उसके बाद के वर्शन में, Android डीबग ब्रिज (adb) का इस्तेमाल करके, अपने वर्कस्टेशन से वायरलेस तरीके से ऐप्लिकेशन को डिप्लॉय और डीबग किया जा सकता है. उदाहरण के लिए, डीबग करने लायक अपने ऐप्लिकेशन को कई रिमोट डिवाइसों पर डिप्लॉय किया जा सकता है. इसके लिए, आपको यूएसबी की मदद से, डिवाइस को कनेक्ट करने की ज़रूरत नहीं है. इससे, यूएसबी कनेक्शन से जुड़ी सामान्य समस्याओं, जैसे कि ड्राइवर इंस्टॉल करने से जुड़ी समस्याओं को हल करने की ज़रूरत नहीं पड़ती.
वॉयरलेस डीबगिंग का इस्तेमाल शुरू करने से पहले, ये काम करें:
-
पक्का करें कि आपका वर्कस्टेशन और डिवाइस, एक ही वायरलेस नेटवर्क से कनेक्ट हों.
-
पक्का करें कि आपके डिवाइस में, फ़ोन के लिए Android 11 (एपीआई लेवल 30) या इसके बाद का वर्शन या टीवी और Wear OS के लिए Android 13 (एपीआई लेवल 33) या इसके बाद का वर्शन हो. ज़्यादा जानकारी के लिए, अपना Android वर्शन देखना और उसे अपडेट करना देखें.
-
अगर IDE का इस्तेमाल किया जा रहा है, तो पक्का करें कि आपके डिवाइस पर Android Studio का सबसे नया वर्शन इंस्टॉल किया गया हो. इसे यहां से डाउनलोड किया जा सकता है.
-
अपने वर्कस्टेशन पर, SDK Platform Tools के नए वर्शन पर अपडेट करें.
वायरलेस डीबगिंग का इस्तेमाल करने के लिए, आपको क्यूआर कोड या डिवाइस जोड़ने वाले कोड का इस्तेमाल करके, अपने डिवाइस को वर्कस्टेशन से जोड़ना होगा. आपका वर्कस्टेशन और डिवाइस, दोनों एक ही वायरलेस नेटवर्क से कनेक्ट होने चाहिए. अपने डिवाइस से कनेक्ट करने के लिए, यह तरीका अपनाएं:
-
अपने डिवाइस पर डेवलपर के लिए सेटिंग और टूल चालू करें.
-
Android Studio खोलें और रन कॉन्फ़िगरेशन मेन्यू से, वाई-फ़ाई का इस्तेमाल करके डिवाइसों को जोड़ें को चुनें.
वाई-फ़ाई का इस्तेमाल करके, डिवाइसों को जोड़ें वाली विंडो पॉप-अप होती है, जैसा कि दूसरी इमेज में दिखाया गया है.
-
अपने डिवाइस पर, वायरलेस डीबगिंग पर टैप करें और अपने डिवाइस को जोड़ें:
-
अपने डिवाइस को क्यूआर कोड से जोड़ने के लिए, क्यूआर कोड की मदद से डिवाइस जोड़ें को चुनें. इसके बाद, दूसरे चित्र में दिखाए गए वाई-फ़ाई से डिवाइस जोड़ें पॉप-अप से मिले क्यूआर कोड को स्कैन करें.
-
जोड़ने के कोड की मदद से अपने डिवाइस को जोड़ने के लिए, वाई-फ़ाई से डिवाइस जोड़ें पॉप-अप में जाकर, जोड़ने के कोड की मदद से डिवाइस जोड़ें को चुनें. अपने डिवाइस पर, दूसरे डिवाइस से जोड़ने के कोड का इस्तेमाल करके जोड़ें को चुनें और दिए गए छह अंकों वाले कोड को नोट कर लें. जब आपका डिवाइस, वाई-फ़ाई से डिवाइसों को जोड़ें विंडो में दिखने लगे, तो जोड़ें को चुनें और अपने डिवाइस पर दिखने वाला छह अंकों वाला कोड डालें.
-
-
डिवाइस को जोड़ने के बाद, उस पर ऐप्लिकेशन डिप्लॉय किया जा सकता है.
किसी दूसरे डिवाइस को जोड़ने या अपने वर्कस्टेशन पर मौजूदा डिवाइस को अनलिंक करने के लिए, अपने डिवाइस पर वायरलेस डीबगिंग पर जाएं. जोड़े गए डिवाइसों में जाकर, अपने वर्कस्टेशन के नाम पर टैप करें. इसके बाद, हटाएं को चुनें.
-
अगर आपको वायरलेस डीबगिंग को तुरंत चालू और बंद करना है, तो डेवलपर के लिए क्विक सेटिंग टाइल में जाकर, वायरलेस डीबगिंग की सुविधा का इस्तेमाल करें. यह सुविधा, डेवलपर के लिए सेटिंग और टूल > डेवलपर के लिए क्विक सेटिंग टाइल में मिलेगी.
कमांड लाइन का इस्तेमाल करके वाई-फ़ाई कनेक्शन
इसके अलावा, कमांड लाइन का इस्तेमाल करके Android Studio का इस्तेमाल किए बिना, अपने डिवाइस से कनेक्ट करने के लिए यह तरीका अपनाएं:
-
अपने डिवाइस पर, पहले बताए गए तरीके से डेवलपर के लिए सेटिंग और टूल चालू करें.
-
अपने डिवाइस पर, वायरलेस डीबगिंग की सुविधा चालू करें. इसके बारे में पहले बताया गया है.
-
अपने वर्कस्टेशन पर, टर्मिनल विंडो खोलें और
android_sdk/platform-tools
पर जाएं. -
जोड़ने के लिए दिया गया कोड इस्तेमाल करके, डिवाइस जोड़ें को चुनकर, अपना आईपी पता, पोर्ट नंबर, और जोड़ने के लिए दिया गया कोड ढूंढें. डिवाइस पर दिखने वाले आईपी पते, पोर्ट नंबर, और जोड़ने के कोड को नोट करें.
-
अपने वर्कस्टेशन के टर्मिनल पर,
adb pair ipaddr:port
चलाएं. ऊपर दिए गए आईपी पते और पोर्ट नंबर का इस्तेमाल करें. -
जब कहा जाए, तब जोड़ने का कोड डालें, जैसा कि यहां दिखाया गया है.
वायरलेस कनेक्शन से जुड़ी समस्याएं हल करना
अगर आपको डिवाइस को वायरलेस तरीके से कनेक्ट करने में समस्याएं आ रही हैं, तो उन्हें हल करने के लिए यह तरीका आज़माएं.
देखें कि आपका वर्कस्टेशन और डिवाइस, ज़रूरी शर्तें पूरी करता है या नहीं
देखें कि वर्कस्टेशन और डिवाइस, इस सेक्शन की शुरुआत में बताई गई ज़रूरी शर्तें पूरी करते हों.
आम तौर पर होने वाली अन्य समस्याओं की जांच करना
वायरलेस तरीके से डीबग करने (adb या Android Studio) की मौजूदा समस्याओं और उन्हें ठीक करने के तरीकों की सूची यहां दी गई है:
-
वाई-फ़ाई कनेक्ट नहीं हो रहा है: कॉर्पोरेट वाई-फ़ाई नेटवर्क जैसे सुरक्षित वाई-फ़ाई नेटवर्क, p2p कनेक्शन ब्लॉक कर सकते हैं और आपको वाई-फ़ाई पर कनेक्ट नहीं करने देंगे. केबल या किसी दूसरे (नॉन-कॉर्प) वाई-फ़ाई नेटवर्क से कनेक्ट करके देखें. अगर किसी ऐसे नेटवर्क का इस्तेमाल किया जा सकता है जो किसी कंपनी का नहीं है, तो
adb connect ip:port
over tcp/ip (शुरुआती यूएसबी कनेक्शन के बाद) का इस्तेमाल करके, वायरलेस कनेक्शन भी बनाया जा सकता है. -
वाई-फ़ाई पर
adb
कभी-कभी अपने-आप बंद हो जाता है: ऐसा तब हो सकता है, जब डिवाइस वाई-फ़ाई नेटवर्क स्विच करता है या नेटवर्क से डिसकनेक्ट हो जाता है. इस समस्या को हल करने के लिए, नेटवर्क से फिर से कनेक्ट करें. -
पेयर करने के बाद भी डिवाइस कनेक्ट नहीं हो रहा है:
adb
, जोड़े गए डिवाइसों को ढूंढने और उनसे अपने-आप कनेक्ट होने के लिए, mDNS पर निर्भर करता है. अगर आपके नेटवर्क या डिवाइस के कॉन्फ़िगरेशन में mDNS काम नहीं करता या उसे बंद कर दिया गया है, तो आपकोadb connect ip:port
का इस्तेमाल करके डिवाइस से मैन्युअल तरीके से कनेक्ट करना होगा.
शुरुआती यूएसबी कनेक्शन के बाद, किसी डिवाइस से वायरलेस तरीके से कनेक्ट करना (यह विकल्प सिर्फ़ Android 10 और उससे पहले के वर्शन पर उपलब्ध है)
ध्यान दें: यह वर्कफ़्लो Android 11 और उसके बाद वाले वर्शन पर भी लागू होता है. चेतावनी की बात यह है कि इसमें फ़िज़िकल यूएसबी का इस्तेमाल करके *शुरुआती* कनेक्शन भी शामिल है.
ध्यान दें: यहां दिए गए निर्देश, Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन पर काम करने वाले Wear डिवाइसों पर लागू नहीं होते. ज़्यादा जानकारी के लिए, Wear OS ऐप्लिकेशन को डीबग करने के बारे में गाइड देखें.
आम तौर पर, adb
डिवाइस के साथ यूएसबी के ज़रिए संपर्क करता है. हालांकि, adb
का इस्तेमाल वाई-फ़ाई के ज़रिए भी किया जा सकता है. Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन वाले डिवाइस को कनेक्ट करने के लिए,
यूएसबी के ज़रिए यह शुरुआती तरीका अपनाएं:
-
अपने 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 नाम दें. एवीडी के नामों की सूची पाने के लिए, 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
विकल्प का इस्तेमाल करें.
ऐप्लिकेशन इंस्टॉल करना
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
निर्देश | ब्यौरा |
---|---|
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
निर्देश | ब्यौरा |
---|---|
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
|
दिए गए पैकेज या कॉम्पोनेंट को चालू करें ("पैकेज/क्लास" के तौर पर लिखा जाता है). |
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
निर्देश | ब्यौरा |
---|---|
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
|
सिस्टम को कोई भी मौजूदा सुरक्षा लॉग, DPC को उपलब्ध कराने के लिए कहें. अगर लॉग
उपलब्ध हैं, तो DPC को onSecurityLogsAvailable()
कॉलबैक मिलता है. एंटरप्राइज़ डिवाइस की गतिविधि लॉग करें देखें.
इस निर्देश को सीमित बार इस्तेमाल किया जा सकता है. यह सुविधा, Android 9.0 (एपीआई लेवल 28) और इसके बाद के वर्शन वाले डिवाइसों पर काम करती है. |
स्क्रीनशॉट लें
screencap
कमांड, डिवाइस के डिसप्ले का स्क्रीनशॉट लेने के लिए एक शेल यूटिलिटी है.
शेल में होने पर, screencap
सिंटैक्स यह होता है:
screencap filename
कमांड लाइन से screencap
का इस्तेमाल करने के लिए, यह डालें:
adb shell screencap /sdcard/screen.png
यहां स्क्रीनशॉट सेशन का एक उदाहरण दिया गया है. इसमें स्क्रीनशॉट लेने के लिए adb
शेल का इस्तेमाल किया गया है
और डिवाइस से फ़ाइल डाउनलोड करने के लिए pull
कमांड का इस्तेमाल किया गया है:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
वीडियो रिकॉर्ड करें
screenrecord
निर्देश, Android 4.4 (एपीआई लेवल 19) और उसके बाद के वर्शन पर चलने वाले डिवाइस के डिसप्ले की रिकॉर्डिंग
के लिए एक शेल यूटिलिटी है. यह सुविधा, स्क्रीन पर की गई गतिविधि को MPEG-4
फ़ाइल में रिकॉर्ड करती है. इस फ़ाइल का इस्तेमाल, प्रमोशनल या ट्रेनिंग वीडियो बनाने या डीबग करने और टेस्ट करने के लिए किया जा सकता है.
किसी शेल में, इस सिंटैक्स का इस्तेमाल करें:
screenrecord [options] filename
कमांड लाइन से screenrecord
का इस्तेमाल करने के लिए, यह जानकारी डालें:
adb shell screenrecord /sdcard/demo.mp4
Control+C दबाकर स्क्रीन रिकॉर्डिंग बंद करें. ऐसा न करने पर, रिकॉर्डिंग
तीन मिनट पर या --time-limit
के ज़रिए तय की गई समयसीमा अपने-आप बंद हो जाएगी.
अपने डिवाइस की स्क्रीन रिकॉर्ड करने के लिए, screenrecord
वीडियो रिकॉर्ड करें कमांड का इस्तेमाल करें. इसके बाद, डिवाइस से होस्ट कंप्यूटर पर वीडियो डाउनलोड करने के लिए, pull
कमांड चलाएं. यहां रिकॉर्डिंग सेशन का उदाहरण दिया गया है:
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
screenrecord
टूल, डिवाइस के डिसप्ले के आसपेक्ट रेशियो को बनाए रखते हुए, आपके अनुरोध के मुताबिक किसी भी रिज़ॉल्यूशन और बिटरेट में रिकॉर्ड कर सकता है. यह सुविधा डिफ़ॉल्ट रूप से, डिवाइस के नेटिव डिसप्ले रिज़ॉल्यूशन और ओरिएंटेशन में रिकॉर्ड करती है. साथ ही, रिकॉर्डिंग की अवधि ज़्यादा से ज़्यादा तीन मिनट की हो सकती है.
screenrecord
यूटिलिटी की सीमाएं:
- वीडियो फ़ाइल के साथ ऑडियो रिकॉर्ड नहीं किया जाता.
- Wear OS पर चलने वाले डिवाइसों के लिए, वीडियो रिकॉर्ड करने की सुविधा उपलब्ध नहीं है.
- ऐसा हो सकता है कि कुछ डिवाइस अपने नेटिव डिसप्ले रिज़ॉल्यूशन में रिकॉर्ड न कर पाएं. अगर आपको स्क्रीन रिकॉर्डिंग करने में समस्याएं आती हैं, तो कम रिज़ॉल्यूशन का इस्तेमाल करके देखें.
- रिकॉर्डिंग के दौरान, स्क्रीन को घुमाया नहीं जा सकता. अगर रिकॉर्डिंग के दौरान स्क्रीन घूमती है, तो रिकॉर्डिंग के दौरान स्क्रीन का कुछ हिस्सा कट जाता है.
विकल्प | ब्यौरा |
---|---|
--help
|
कमांड सिंटैक्स और विकल्प दिखाएं |
--size widthxheight
|
वीडियो का साइज़ सेट करें: 1280x720 . डिफ़ॉल्ट वैल्यू, डिवाइस का नेटिव डिसप्ले रिज़ॉल्यूशन होता है. अगर डिवाइस पर यह काम नहीं करता है, तो डिफ़ॉल्ट वैल्यू 1280x720 होती है. बेहतर नतीजों के लिए, अपने डिवाइस के बेहतर वीडियो कोडिंग (एवीसी) एन्कोडर के साथ काम करने वाले साइज़ का इस्तेमाल करें. |
--bit-rate rate |
वीडियो के लिए, मेगाबिट प्रति सेकंड में वीडियो बिटरेट सेट करें. इसकी डिफ़ॉल्ट वैल्यू 20 एमबीपीएस है.
वीडियो क्वालिटी को बेहतर बनाने के लिए, बिटरेट को बढ़ाया जा सकता है. हालांकि, ऐसा करने पर मूवी फ़ाइलों का साइज़ भी बड़ा हो जाता है. इस उदाहरण में, रिकॉर्डिंग की बिटरेट को 6 एमबीपीएस पर सेट किया गया है:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
रिकॉर्डिंग का ज़्यादा से ज़्यादा समय सेकंड में सेट करें. डिफ़ॉल्ट और ज़्यादा से ज़्यादा वैल्यू 180 (तीन मिनट) होती है. |
--rotate |
आउटपुट को 90 डिग्री घुमाएं. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. |
--verbose |
कमांड-लाइन स्क्रीन पर लॉग की जानकारी दिखाएं. अगर यह विकल्प सेट नहीं किया जाता है, तो यह सुविधा चलने के दौरान कोई जानकारी नहीं दिखाती. |
ऐप्लिकेशन के लिए ART प्रोफ़ाइलें पढ़ना
Android 7.0 (एपीआई लेवल 24) की शुरुआत से, Android रनटाइम (ART) इंस्टॉल किए गए ऐप्लिकेशन के लिए काम करने की प्रोफ़ाइल इकट्ठा करता है. इनका इस्तेमाल ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए किया जाता है. इकट्ठा की गई प्रोफ़ाइलों की जांच करके, यह जानें कि कौनसे तरीके अक्सर इस्तेमाल किए जाते हैं और ऐप्लिकेशन के स्टार्टअप के दौरान किन क्लास का इस्तेमाल किया जाता है.
ध्यान दें: सिर्फ़ तब ही प्रोफ़ाइल के रन होने का नाम वापस पाया जा सकता है, जब आपके पास फ़ाइल सिस्टम का रूट ऐक्सेस हो. उदाहरण के लिए, किसी एमुलेटर पर.
प्रोफ़ाइल की जानकारी को टेक्स्ट फ़ॉर्मैट में देखने के लिए, यह कमांड इस्तेमाल करें:
adb shell cmd package dump-profiles package
बनाई गई फ़ाइल वापस पाने के लिए, इनका इस्तेमाल करें:
adb pull /data/misc/profman/package.prof.txt
टेस्ट डिवाइसों को रीसेट करना
अगर आपने अपने ऐप्लिकेशन को कई टेस्ट डिवाइसों पर टेस्ट किया है, तो टेस्ट के बीच में डिवाइस को रीसेट करना मददगार हो सकता है. उदाहरण के लिए, उपयोगकर्ता का डेटा हटाने और टेस्ट एनवायरमेंट को रीसेट करने के लिए. Android 10 (एपीआई लेवल 29) या इसके बाद के वर्शन पर काम करने वाले टेस्ट डिवाइस को फ़ैक्ट्री रीसेट किया जा सकता है. इसके लिए, testharness
adb
शेल कमांड का इस्तेमाल करें, जैसा कि यहां दिखाया गया है:
adb shell cmd testharness enable
testharness
का इस्तेमाल करके डिवाइस को वापस लाने पर, डिवाइस अपने-आप आरएसए
पासकोड का बैक अप ले लेता है. इससे, मौजूदा वर्कस्टेशन के ज़रिए किसी स्थायी जगह पर डीबग करने की सुविधा मिलती है. इसका मतलब है कि डिवाइस को रीसेट किए जाने के बाद, वर्कस्टेशन मैन्युअल तरीके से नई कुंजी रजिस्टर किए बिना ही डीबग करना जारी रख सकता है और डिवाइस को adb
निर्देश दे सकता है.
इसके अलावा, किसी डिवाइस को पहले जैसा करने के लिए testharness
का इस्तेमाल करने पर, डिवाइस की ये सेटिंग भी बदल जाती हैं. इससे, आपके ऐप्लिकेशन की टेस्टिंग को आसान और ज़्यादा सुरक्षित बनाने में मदद मिलती है:
- डिवाइस कुछ सिस्टम सेटिंग सेट करता है ताकि शुरुआती डिवाइस सेटअप विज़र्ड न दिखें. इसका मतलब है कि डिवाइस ऐसी स्थिति में आ जाता है जिससे आपके ऐप्लिकेशन को तुरंत इंस्टॉल, डीबग, और टेस्ट किया जा सकता है.
- सेटिंग:
- लॉक स्क्रीन की सुविधा बंद हो जाती है.
- आपातकालीन चेतावनियां बंद कर देता है.
- खातों के लिए, अपने-आप सिंक होने की सुविधा बंद कर देता है.
- सिस्टम के अपने-आप अपडेट होने की सुविधा बंद कर देता है.
- अन्य:
- पहले से इंस्टॉल किए गए सुरक्षा ऐप्लिकेशन बंद कर देता है.
अगर आपके ऐप्लिकेशन को testharness
कमांड की डिफ़ॉल्ट सेटिंग का पता लगाना है और उनसे अडजस्ट करना है, तो
ActivityManager.isRunningInUserTestHarness()
का इस्तेमाल करें.
sqlite
sqlite3
, SQLite डेटाबेस की जांच करने के लिए sqlite
कमांड-लाइन प्रोग्राम को शुरू करता है.
इसमें टेबल के कॉन्टेंट को प्रिंट करने के लिए .dump
और किसी मौजूदा टेबल के SQL CREATE
स्टेटमेंट को प्रिंट करने के लिए .schema
जैसे निर्देश शामिल हैं.
कमांड लाइन से, SQLite कमांड भी लागू किए जा सकते हैं, जैसा कि नीचे दिखाया गया है:
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
ध्यान दें: SQLite डेटाबेस को सिर्फ़ तब ऐक्सेस किया जा सकता है, जब आपके पास फ़ाइल सिस्टम का रूट ऐक्सेस हो. उदाहरण के लिए, किसी एमुलेटर पर.
ज़्यादा जानकारी के लिए, sqlite3
कमांड-लाइन दस्तावेज़ देखें.
adb यूएसबी बैकएंड
adb सर्वर दो बैकएंड के ज़रिए, यूएसबी स्टैक के साथ इंटरैक्ट कर सकता है. यह या तो ओएस (Windows, Linux या macOS) के नेटिव बैकएंड का इस्तेमाल कर सकता है या फिर libusb
बैकएंड का इस्तेमाल कर सकता है.
attach
, detach
, और यूएसबी स्पीड का पता लगाने जैसी कुछ सुविधाएं, सिर्फ़ libusb
बैकएंड का इस्तेमाल करने पर उपलब्ध हैं.
ADB_LIBUSB
एनवायरमेंट वैरिएबल का इस्तेमाल करके, कोई बैकएंड चुना जा सकता है.
अगर यह सेट नहीं है, तो adb अपने डिफ़ॉल्ट बैकएंड का इस्तेमाल करता है. डिफ़ॉल्ट तौर पर, अलग-अलग ओएस में अलग-अलग तरीके से काम करता है. ADB v34 से, liubusb
बैकएंड का इस्तेमाल डिफ़ॉल्ट रूप से सभी ओएस पर किया जाता है. हालांकि, Windows पर नेटिव बैकएंड का इस्तेमाल डिफ़ॉल्ट रूप से किया जाता है. अगर ADB_LIBUSB
सेट है, तो यह तय करता है कि नेटिव बैकएंड या libusb
में से किसका इस्तेमाल किया जाए. adb के एनवायरमेंट वैरिएबल के बारे में ज़्यादा जानने के लिए, adb मैन्युअल पेज देखें.
adb mDNS बैकएंड
ADB, सर्वर और डिवाइसों को अपने-आप कनेक्ट करने के लिए, मल्टीकास्ट डीएनएस प्रोटोकॉल का इस्तेमाल कर सकता है. ADB सर्वर दो बैकएंड के साथ आता है: Bonjour (Apple का mdnsResponder) और Openscreen.
Bonjour बैकएंड के लिए, होस्ट मशीन पर डेमन चलना ज़रूरी है.
macOS पर, Apple का डिफ़ॉल्ट डेमन हमेशा चलता रहता है. हालांकि, Windows और Linux पर उपयोगकर्ता को यह पक्का करना होगा कि mdnsd
डेमन चालू हो.
अगर adb mdns check
कमांड से गड़बड़ी का मैसेज मिलता है, तो हो सकता है कि ADB, Bonjour बैकएंड का इस्तेमाल कर रहा हो, लेकिन कोई Bonjour डेमन न चल रहा हो.
Openscreen बैकएंड के लिए, मशीन पर डेमन चलने की ज़रूरत नहीं होती. macOS पर Openscreen बैकएंड के साथ काम करने की शुरुआत ADB v35 से होती है. ADB के वर्शन 34 से, Windows और Linux पर यह सुविधा काम करती है.
डिफ़ॉल्ट रूप से, ADB, Bonjour बैकएंड का इस्तेमाल करता है. एनवायरमेंट वैरिएबल ADB_MDNS_OPENSCREEN
(1
या 0
पर सेट करें) का इस्तेमाल करके, इस व्यवहार को बदला जा सकता है. ज़्यादा जानकारी के लिए, ADB मैन्युअल पेज देखें.