Android ADB टूल का उपयोग करके एप्लिकेशन कैसे शुरू करें?


जवाबों:


629
adb shell
am start -n com.package.name/com.package.name.ActivityName

या आप इसे सीधे उपयोग कर सकते हैं:

adb shell am start -n com.package.name/com.package.name.ActivityName

आप अपने इरादे-फ़िल्टर द्वारा फ़िल्टर की जाने वाली क्रियाएं भी निर्दिष्ट कर सकते हैं:

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 

23
बहुत-बहुत धन्यवाद, मैंने इसे ~ / .bash_profile में शेल फंक्शन बना दिया है ताकि यह और तेज़ हो function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }और इसका उपयोग होandroidrun com.example.test
अब्दुल्लाहदिया

3
adb shell amamकमांड को पास करने के लिए आपको अन्य विकल्पों की सूची देगा । आप डेवलपर.
android.com/tools/help/adb.html#am

1
@ शौर्य मुझे -a विकल्प कैसे मिल सकता है?
एरिसिपॉन्ग

21
क्या डिफ़ॉल्ट गतिविधि को चलाना संभव है, इसके बजाय मैं किस गतिविधि के लिए विशिष्ट होना चाहता हूं, इसे शुरू करना चाहिए?
एंड्रॉयड डेवलपर

1
मुझे एप्लिकेशन और गतिविधि ढूंढने में समस्या थी। मैंने इस पाइप लाइन adb logcat | grep --line-buffered ActivityManager | grep --line-bufferedका उपयोग उन सभी अनुप्रयोगों को सूचीबद्ध करने के लिए किया था जो प्रदर्शित किए गए थे।
आरएच

299

इस पैटर्न का पालन करके केवल बंदर टूल का उपयोग करके एप्लिकेशन निर्दिष्ट पैकेज नाम चलाना संभव है :

adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1

बंदर टूल का उपयोग करके ऐप चलाने के लिए कमांड का उपयोग किया जाता है जो एप्लिकेशन के लिए यादृच्छिक इनपुट उत्पन्न करता है। कमांड का अंतिम भाग पूर्णांक है जो ऐप के लिए उत्पन्न यादृच्छिक इनपुट की संख्या निर्दिष्ट करता है। इस स्थिति में संख्या 1 है, जिसका उपयोग वास्तव में ऐप लॉन्च करने के लिए किया जाता है (आइकन क्लिक)।


91
लॉन्चर डिफ़ॉल्ट है। आप सरल कर सकते हैंadb shell monkey -p your.app.package.name 1
Androiderson

3
क्या पैकेज के नाम के बजाय एपीके फ़ाइल नाम का उपयोग करना संभव है? मान लीजिए कि मेरे पास एक एपीके फ़ाइल है, और मैं इसे स्थापित और चलाने में सक्षम होना चाहता हूं, क्या यह संभव है?
एंड्रॉयड डेवलपर

1
अगर मुझे कोई त्रुटि मिलती है तो: चलाने के लिए कोई गतिविधि नहीं मिली। गर्भपात ?
इगोरगानापोलस्की 21

3
@IgorGanapolsky अगर कोई गतिविधि नहीं मिली, तो यह एक सेवा ऐप है और इसकी कोई गतिविधि नहीं है।
एम। 3

1
@IgorGanapolsky अगर यह एक सेवा का उपयोग adb shell am startservice com.some.package.name/.YourServiceSubClassNameयहाँ देखें: stackoverflow.com/a/18703083/211292
थॉमस 5

122

या, आप इसका उपयोग कर सकते हैं:

adb shell am start -n com.package.name/.ActivityName

75
क्या गतिविधि नाम निर्दिष्ट किए बिना इसे करना संभव है, ताकि डिफ़ॉल्ट मुख्य गतिविधि शुरू हो जाए?
एंड्रॉयड डेवलपर

5
@androiddeveloper देखें बंदर से नीचे आदेश depodefi : गतिविधि नाम निर्दिष्ट करने की कोई जरूरत!
1111161171159459134

8
यदि मुझे गतिविधिनाम का पता नहीं है तो क्या होगा ?
इगोरगानापोलस्की

2
रन ~ / android-sdk-linux / build-tools / 20.0.0 / aapt dump badging yourapp.apk, जो निम्नलिखित प्रविष्टि को सूचीबद्ध करेगा: प्रशंसनीय-गतिविधि: नाम = 'com.company.android.package.YourLaunchableActivity'
जॉनीटेक्स।

17
monkey -p com.package.name 1के माध्यम सेadb shell
डेनिस विटाली

60

linux / mac उपयोगकर्ता निम्न के साथ कुछ के साथ एक apk चलाने के लिए एक स्क्रिप्ट भी बना सकते हैं:

इन 3 पंक्तियों के साथ "adb-run.sh" नामक एक फ़ाइल बनाएँ:

pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act

फिर इसे निष्पादित करने के लिए "chmod + x adb-run.sh"।

अब आप बस:

adb-run.sh myapp.apk

यहां लाभ यह है कि आपको पैकेज का नाम या प्रशंसनीय गतिविधि नाम जानने की आवश्यकता नहीं है। इसी तरह, आप "adb-uninstall.sh myapp.apk" बना सकते हैं

नोट: इसके लिए आवश्यक है कि आप अपने मार्ग में उपयुक्त हैं। आप इसे SDK में नए बिल्ड टूल फ़ोल्डर के तहत पा सकते हैं।


खिड़कियों के लिए आप
साइबरविन

3
आपकी पोस्ट ने मुझे AWK बना दिया। मैंने आगे बढ़कर आपकी स्क्रिप्ट दोबारा बनाई। pastebin.com/X7X1SsFa
काइल

2
यह शानदार है। यह एक मानक एडीबी कमांड क्यों नहीं है हम कभी नहीं जान पाएंगे।
जॉन टायर्री

यदि आप पैठ को adb-run.sh स्क्रिप्ट में सेट करते हैं, तो आपको अपने रास्ते में aapt होने की आवश्यकता नहीं होगी यदि आप इस तरह से PATH सेट करते हैं: PATH = $ (dirname $ (जो android)) /। ./build-tools/20.0.0:$PATH
स्टीव

@dljava यह play.google.com/store/apps/details?id=com.amaze.filemanager पर काम क्यों नहीं करता है ?
WSS

21

इसके अलावा, मैं एक और बात का उल्लेख करना चाहता हूं।

जब आप किसी एप्लिकेशन को प्रारंभ करते हैं adb shell am, तो यह स्वचालित रूप से FLAG_ACTIVITY_NEW_TASK ध्वज जोड़ता है जो व्यवहार परिवर्तन करता है। कोड देखें ।

उदाहरण के लिए, यदि आप Play Store गतिविधि लॉन्च करते हैं, तो adb shell am' बैक ' बटन (हार्डवेयर बैक बटन) दबाने से आप अपना ऐप नहीं ले पाएंगे, इसके बजाय यह आपको पिछली प्ले स्टोर गतिविधि में ले जाएगा यदि कुछ था (यदि प्ले स्टोर कार्य नहीं था , तो यह आपको अपना ऐप ले जाएगा)। FLAG_ACTIVITY_NEW_TASK दस्तावेज़ कहते हैं:

यदि कोई कार्य पहले से चल रही गतिविधि के लिए चल रहा है, तो एक नई गतिविधि शुरू नहीं की जाएगी; इसके बजाय, वर्तमान कार्य को केवल उस स्क्रीन के सामने लाया जाएगा जिस अवस्था में यह अंतिम था

इसने मुझे कुछ घंटे बिताने के लिए पता लगाया कि क्या गलत हुआ।

इसलिए, ध्यान रखें कि adb shell am FLAG_ACTIVITY_NEW_TASK ध्वज जोड़ें


1
यह भी उल्लेखनीय है कि यह स्पष्ट करने का कोई तरीका नहीं है कि झंडा, जो कष्टप्रद है
केदार परांजपे

16

हम आवेदन के प्रकार को जानकर और उसे डेटा के साथ फीड करके भी शुरू कर सकते हैं:

adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW

यह आदेश नमूना .gp फ़ाइल चलाने के लिए उपलब्ध वीडियो प्लेयर प्रदर्शित करता है


15

चरण 1: सबसे पहले अपने डिवाइस में इंस्टॉल किए गए ऐप्स के सभी पैकेज नाम प्राप्त करें, जिनका उपयोग करके:

adb shell pm list packages

चरण 2: आपको सभी पैकेज नाम मिल जाएंगे, आप जिसे एडीबी का उपयोग करना शुरू करना चाहते हैं उसे कॉपी करें।

चरण 3: नीचे दिए गए कमांड में अपना वांछित पैकेज नाम जोड़ें।

adb shell monkey -p 'your package name' -v 500

उदाहरण के लिए:
adb shell monkey -p com.estrongs.android.pop -v 500 Es एक्सप्लोरर शुरू करने के लिए।


11
यह आपके एप्लिकेशन को लॉन्च करेगा और इसे 500 छद्म यादृच्छिक घटनाओं को भेजेगा। इसलिए '500' को बदलने के लिए '1' का उपयोग करना बेहतर है।
लिन

14

खोलें ~ / .bash_profile और फ़ाइल के अंत में ये बैश फ़ंक्शंस जोड़ें

function androidinstall(){
   adb install -r ./bin/$1.apk
}
function androidrun(){
   ant clean debug
   adb shell am start -n $1/$1.$2
}

फिर Android प्रोजेक्ट फ़ोल्डर खोलें

androidinstall app-debug && androidrun com.example.app MainActivity

2
क्या आप बता सकते हैं कि क्या app-debugकरता है?
JayQuerie.com

3
@TrevorSenior ऐप-डिबग एपीके फ़ाइल का शीर्षक है, आमतौर पर डिबग मोड में उत्पन्न APK फ़ाइल का शीर्षक "APPLICATION NAME-debug.apk" है
अब्दुल्लादिया

7

monkey --pct-syskeys 0 विकास बोर्डों के लिए

इस तर्क के बिना, ऐप कुंजियों / प्रदर्शन के बिना एक विकास बोर्ड पर नहीं खुलेगा:

adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1

और त्रुटि के साथ विफल रहता है:

SYS_KEYS has no physical keys but with factor 2.0%

HiKey960, Android O AOSP पर परीक्षण किया गया।

से सीखा: https://github.com/ARM-software/lisa/pull/408

यह भी पूछा गया: बंदर परीक्षण: यदि एंड्रॉइड सिस्टम में भौतिक कुंजी नहीं है, तो कमांड में शामिल किए जाने के लिए मापदंडों की क्या आवश्यकता है


2
adb shell am start -n '<appPackageName>/.<appActitivityName>

उदाहरण के लिए:

adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'

आप प्रत्येक ऐप पैकेज के संबंध में ऐप गतिविधियों की सूची जानने के लिए एपीके-इनफो एप्लिकेशन का उपयोग कर सकते हैं


0

एक एंड्रॉइड फोटो ऐप खोलने के लिए और विशिष्ट छवि फ़ाइल के साथ पैरामीटर के रूप में खोलने के लिए इसे आज़माएं।

adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png

यह नवीनतम एंड्रॉइड पर काम करेगा, कोई पॉप अप खोलने के लिए एक एप्लिकेशन का चयन करने के लिए नहीं आएगा क्योंकि आप विशिष्ट एप्लिकेशन दे रहे हैं जिसके साथ आप अपनी छवि खोलना चाहते हैं


मेरे पास एक खिलाड़ी ऐप है, जो url से वीडियो स्ट्रीम करने में सक्षम है, मैं इस url को एक पैरामीटर के रूप में कैसे पास कर सकता हूं और इस url से स्ट्रीम कैसे कर सकता हूं? यूट्यूब से एक यूआरएल मान लीजिए?
विष्णु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.