Android
अदब का खोल
खोज…
परिचय
adb shell
एक लक्ष्य डिवाइस या एमुलेटर में एक लिनक्स adb shell
खोलता है। यह adb
माध्यम से Android डिवाइस को नियंत्रित करने का सबसे शक्तिशाली और बहुमुखी तरीका है।
इस विषय को एडीबी (एंड्रॉइड डिबग ब्रिज) से विभाजित किया गया था, उदाहरणों की सीमा तक पहुंचने के कारण, जिनमें से कई adb shell
कमांड शामिल थे।
वाक्य - विन्यास
- adb खोल [-E से बच] [-n] [-Tt] [-x] [कमांड]
पैरामीटर
पैरामीटर | विवरण |
---|---|
-इ | बच चरित्र, या "कोई नहीं" चुनें; डिफ़ॉल्ट '~' |
-n | स्टड से पढ़ा नहीं है |
-टी | PTY आवंटन को अक्षम करें |
आयकर | बल PTY आवंटन |
-एक्स | दूरस्थ निकास कोड और stdout / stderr जुदाई अक्षम करें |
ADB के माध्यम से Android डिवाइस पर पाठ, कुंजी दबाए गए और स्पर्श घटनाओं को भेजें
पाठ को फ़ोकस के साथ दृश्य में सम्मिलित करने के लिए निम्न कमांड निष्पादित करें (यदि यह पाठ इनपुट का समर्थन करता है)
एसडीके 23+ पर टेक्स्ट भेजें
adb shell "input keyboard text 'Paste text on Android Device'"
यदि पहले से ही adb
माध्यम से आपके डिवाइस से जुड़ा है:
input text 'Paste text on Android Device'
एसडीके 23 से पहले पाठ भेजें
adb shell "input keyboard text 'Paste%stext%son%sAndroid%sDevice'"
रिक्त स्थान इनपुट के रूप में स्वीकार नहीं किए जाते हैं, उन्हें% s से बदल दें।
घटनाओं को भेजें
हार्डवेयर पॉवर की को दबाने के लिए अनुकरण करने के लिए
adb shell input keyevent 26
या वैकल्पिक रूप से
adb shell input keyevent POWER
यहां तक कि अगर आपके पास एक हार्डवेयर कुंजी नहीं है, तो भी आप बराबर क्रिया करने के लिए keyevent
का उपयोग कर सकते हैं
adb shell input keyevent CAMERA
इनपुट के रूप में टच इवेंट भेजें
adb shell input tap Xpoint Ypoint
इनपुट के रूप में स्वाइप इवेंट भेजें
adb shell input swipe Xpoint1 Ypoint1 Xpoint2 Ypoint2 [DURATION*]
* DURATION वैकल्पिक, डिफ़ॉल्ट = 300ms है। स्रोत
डेवलपर विकल्प में पॉइंटर स्थान को सक्षम करके X और Y अंक प्राप्त करें।
एडीबी नमूना खोल स्क्रिप्ट
उबंटू में एक स्क्रिप्ट चलाने के लिए, script.sh बनाएँ फ़ाइल पर राइट क्लिक करें और पढ़ने / लिखने की अनुमति जोड़ें और प्रोग्राम के रूप में फ़ाइल निष्पादित करने की अनुमति दें ।
टर्मिनल एमुलेटर खोलें और कमांड चलाएँ ।/cript.sh
Script.sh
for (( c=1; c<=5; c++ ))
do
adb shell input tap X Y
echo "Clicked $c times"
sleep 5s
done
घटना संख्याओं की एक व्यापक सूची के लिए
- कई दिलचस्प घटनाओं की शॉर्टलिस्ट ADB शेल इनपुट इवेंट
- संदर्भ प्रलेखन https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_POWER
सूची पैकेज
सभी पैकेजों को प्रिंट करता है, वैकल्पिक रूप से केवल जिनके पैकेज का नाम <FILTER> में पाठ होता है।
adb shell pm list packages [options] <FILTER>
All <FILTER>
adb shell pm list packages
गुण:
-f
उनकी संबंधित फाइल देखने के लिए।
-i
संकुल के लिए इंस्टॉलर देखें।
-u
भी स्थापना रद्द संकुल शामिल करने के लिए।
-u
इसके अलावा अनइंस्टॉल किए गए पैकेज भी शामिल हैं।
विशेषताएँ जो फ़िल्टर करती हैं:
विकलांग पैकेज के लिए -d
।
-e
सक्षम संकुल के लिए।
-s
पैकेज के लिए।
-3
थर्ड पार्टी पैकेज के लिए।
--user <USER_ID>
क्वेरी के लिए विशिष्ट उपयोगकर्ता स्थान के लिए।
एपीआई 23+ अनुमतियों को देना और रद्द करना
एक वन-लाइनर जो कमजोर अनुमतियों को देने या रद्द करने में मदद करता है।
देने
adb shell pm grant <sample.package.id> android.permission.<PERMISSION_NAME>
पलट
adb shell pm revoke <sample.package.id> android.permission.<PERMISSION_NAME>
स्थापना (-g) पर एक बार में सभी रन-टाइम अनुमतियाँ देना
adb install -g /path/to/sample_package.apk
एप्लिकेशन डेटा प्रिंट करें
यह आदेश सभी प्रासंगिक एप्लिकेशन डेटा प्रिंट करता है:
- संस्करण कोड
- संस्करण का नाम
- अनुमतियाँ (Android API 23+)
- आदि..
adb shell dumpsys package <your.package.id>
प्रदर्शन रिकॉर्डिंग
Android 4.4 (API स्तर 19) और उससे अधिक चलने वाले उपकरणों के प्रदर्शन की रिकॉर्डिंग:
adb shell screenrecord [options] <filename>
adb shell screenrecord /sdcard/demo.mp4
(रिकॉर्डिंग रोकने के लिए Ctrl-C दबाएं)
फ़ाइल को डिवाइस से डाउनलोड करें:
adb pull /sdcard/demo.mp4
नोट: स्क्रीन रिकॉर्डिंग को Ctrl-C दबाकर बंद कर दें, अन्यथा रिकॉर्डिंग तीन मिनट या समय
--time-limit
द्वारा निर्धारित समय सीमा पर स्वचालित रूप से बंद हो जाती--time-limit
।
adb shell screenrecord --size <WIDTHxHEIGHT>
वीडियो का आकार सेट करता है: 1280x720। डिफ़ॉल्ट मान डिवाइस का मूल डिस्प्ले रिज़ॉल्यूशन (यदि समर्थित है), 1280x720 है यदि नहीं। सर्वोत्तम परिणामों के लिए, अपने डिवाइस के उन्नत वीडियो कोडिंग (AVC) एनकोडर द्वारा समर्थित आकार का उपयोग करें।
adb shell screenrecord --bit-rate <RATE>
वीडियो के लिए वीडियो बिट दर, प्रति सेकंड मेगाबिट्स में सेट करता है। डिफ़ॉल्ट मान 4Mbps है। आप वीडियो की गुणवत्ता में सुधार करने के लिए बिट दर में वृद्धि कर सकते हैं, लेकिन ऐसा करने से बड़ी फिल्म फ़ाइलों का परिणाम मिलता है। निम्न उदाहरण 5Mbps करने के लिए रिकॉर्डिंग बिट दर सेट करता है:
adb shell screenrecord --bit-rate 5000000 /sdcard/demo.mp4
adb shell screenrecord --time-limit <TIME>
सेकंड में अधिकतम रिकॉर्डिंग समय निर्धारित करता है। डिफ़ॉल्ट और अधिकतम मान 180 (3 मिनट) है।
adb shell screenrecord --rotate
90 डिग्री आउटपुट को घुमाता है। यह सुविधा प्रायोगिक है।
adb shell screenrecord --verbose
कमांड-लाइन स्क्रीन पर लॉग जानकारी प्रदर्शित करता है। यदि आप इस विकल्प को सेट नहीं करते हैं, तो उपयोगिता रन करते समय किसी भी जानकारी को प्रदर्शित नहीं करती है।
नोट: यह कुछ उपकरणों पर काम नहीं कर सकता है।
स्क्रीन रिकॉर्डिंग कमांड 4.4 के पूर्व संस्करणों के साथ संगत नहीं है
स्क्रीनरेकॉर्ड कमांड एंड्रॉइड 4.4 (एपीआई स्तर 19) और उच्चतर पर चलने वाले उपकरणों के प्रदर्शन को रिकॉर्ड करने के लिए एक शेल उपयोगिता है। उपयोगिता एक MPEG-4 फ़ाइल के लिए स्क्रीन गतिविधि रिकॉर्ड करती है।
Chmod कमांड का उपयोग करके फ़ाइल अनुमतियां बदलना
ध्यान दें, कि फाइल प्रमिशन बदलने के लिए, आपके डिवाइस को रूट करने की आवश्यकता है, su
बाइनरी फैक्टरी शिप डिवाइस के साथ नहीं आती है!
कन्वेंशन:
adb shell su -c "chmod <numeric-permisson> <file>"
उपयोगकर्ता, समूह और विश्व वर्गों से संख्यात्मक अनुमति।
उदाहरण के लिए, यदि आप फ़ाइल को पठनीय, लिखने योग्य और सभी के द्वारा निष्पादन योग्य बदलना चाहते हैं, तो यह आपकी आज्ञा होगी:
adb shell su -c "chmod 777 <file-path>"
या
adb shell su -c "chmod 000 <file-path>"
यदि आप इसे करने के लिए किसी भी अनुमति से इनकार करने का इरादा रखते हैं।
1 अंक- उपयोगकर्ता की अनुमति देता है, दूसरा अंक - समूह की अनुमति को निर्दिष्ट करता है, तीसरा अंक - दुनिया (अन्य) की अनुमति को निर्दिष्ट करता है।
पहुँच अनुमतियाँ:
--- : binary value: 000, octal value: 0 (none)
--x : binary value: 001, octal value: 1 (execute)
-w- : binary value: 010, octal value: 2 (write)
-wx : binary value: 011, octal value: 3 (write, execute)
r-- : binary value: 100, octal value: 4 (read)
r-x : binary value: 101, octal value: 5 (read, execute)
rw- : binary value: 110, octal value: 6 (read, write)
rwx : binary value: 111, octal value: 7 (read, write, execute)
सेट तिथि / समय अदब के माध्यम से
डिफ़ॉल्ट SET प्रारूप MMDDhhmm[[CC]YY][.ss]
, यह (2 अंक प्रत्येक)
उदाहरण के लिए, वर्तमान वर्ष को बदले बिना, 17 जुलाई को सुबह 10:10 बजे सेट करने के लिए, टाइप करें:
adb shell 'date 07171010.00'
टिप 1: तारीख परिवर्तन तुरंत परिलक्षित नहीं होगा, और नोटिक परिवर्तन केवल सिस्टम क्लॉक के अगले मिनट तक आगे बढ़ने के बाद होगा।
आप अपने कॉल पर TIME_SET
आशय प्रसारण को संलग्न करके अपडेट को बाध्य कर सकते हैं, जैसे:
adb shell 'date 07171010.00 ; am broadcast -a android.intent.action.TIME_SET'
टिप 2: अपने स्थानीय मशीन के साथ एंड्रॉइड की घड़ी को सिंक्रनाइज़ करने के लिए:
लिनक्स:
adb shell date `date +%m%d%H%M%G.%S`
विंडोज (पॉवरशेल):
$currentDate = Get-Date -Format "MMddHHmmyyyy.ss" # Android's preferred format
adb shell "date $currentDate"
दोनों युक्तियां एक साथ:
adb shell 'date `date +%m%d%H%M%G.%S` ; am broadcast -a android.intent.action.TIME_SET'
डिफ़ॉल्ट सेट प्रारूप 'YYYYMMDD.HHms' है
adb shell 'date -s 20160117.095930'
युक्ति: अपने स्थानीय (लिनक्स आधारित) मशीन के साथ एंड्रॉइड की घड़ी को सिंक्रनाइज़ करने के लिए:
adb shell date -s `date +%G%m%d.%H%M%S`
डेवलपर विकल्प खोलें
adb shell am start -n com.android.settings/.DevelopmentSettings
Developer Options
अनुभाग में आपके डिवाइस / एमुलेटर को नेविगेट करेगा।
"बूट कम्प्लीट" प्रसारण का निर्माण करना
यह उन ऐप्स के लिए प्रासंगिक है जो एक BootListener
लागू करते हैं। अपने ऐप को मारकर अपने ऐप को टेस्ट करें और फिर टेस्ट करें:
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n your.app/your.app.BootListener
(उचित मूल्यों के साथ your.package/your.app.BootListener
बदलें)।
बाह्य / द्वितीयक संग्रहण सामग्री देखें
सामग्री देखें:
adb shell ls \$EXTERNAL_STORAGE
adb shell ls \$SECONDARY_STORAGE
पथ देखें:
adb shell echo \$EXTERNAL_STORAGE
adb shell echo \$SECONDARY_STORAGE
एक Android डिवाइस के अंदर एक प्रक्रिया को मार डालो
कभी-कभी एंड्रॉइड का लॉगकैट आपके द्वारा नहीं, किसी भी प्रक्रिया से आने वाली त्रुटियों के साथ बैटरी खत्म करने या सिर्फ आपके कोड को डीबग करना कठिन बना देता है।
डिवाइस को पुनरारंभ किए बिना समस्या को ठीक करने का एक सुविधाजनक तरीका समस्या का कारण बनने वाली प्रक्रिया का पता लगाना और मारना है।
लोगकट से
03-10 11:41:40.010 1550-1627/? E/SomeProcess: ....
प्रक्रिया संख्या पर ध्यान दें: 1550
अब हम एक खोल खोल सकते हैं और प्रक्रिया को मार सकते हैं। ध्यान दें कि हम root
प्रक्रिया को नहीं मार सकते हैं।
adb shell
शेल के अंदर हम उपयोग करने की प्रक्रिया के बारे में अधिक जांच कर सकते हैं
ps -x | grep 1550
और इसे मार डालो अगर हम चाहते हैं:
kill -9 1550