adb

2012-10-02 13 views
50

से पैकेज का लॉन्च करने योग्य गतिविधि नाम प्राप्त करें adb का उपयोग करने से पैकेज के लिए लॉन्च करने योग्य गतिविधि प्राप्त करने का कोई तरीका है? एक unroot फोन के लिए (यानी /data/app निर्देशिका से एपीके खींचने के बिना और appt के साथ निरीक्षण करें)।adb

मैंने डंपिस की कोशिश की, लेकिन इसमें डिफ़ॉल्ट लॉन्च करने योग्य गतिविधि पर जानकारी शामिल नहीं है।

धन्यवाद

उत्तर

74

आप /data/app से APK फ़ाइलों को खींचने के लिए रूट की जरूरत नहीं है। बेशक, आप उस निर्देशिका की सामग्री को सूचीबद्ध करने की अनुमति नहीं है, लेकिन आप के साथ किए गए APK में फ़ाइल स्थानों पा सकते हैं:

adb shell pm list packages -f 

तो आप उपयोग कर सकते adb pull:

adb pull <APK path from previous command> 

को aapt और उसके बाद अपनी इच्छित जानकारी प्राप्त करें:

aapt dump badging <pulledfile.apk> 
+11

और aapt उपयोग StackOverflow पर यहां पाया जा सकता: http://stackoverflow.com/a/7502519/26510 –

+0

यह वह जगह है महान, प्रत्यक्ष और हत्यारा, पहली टिप्पणी – Oxi

+3

1, क्या रूप kabuko कहा 2, adb pull/डेटा/ऐप्स/ ~/<कहाँ कभी आप इसे होना चाहते थे> 3, aapt डंप बैजिंग Thats यह सहित – Oxi

0

ऐप्स पैकेज नाम और लॉन्चर गतिविधि को खोजने का एक और तरीका यहां है।

चरण 1: कमांड प्रॉम्प्ट में "adb logcat" प्रारंभ करें।

चरण 2: एप्लिकेशन खोलें enter image description here

+1

यह केवल तभी काम करता है जब ऐप डिवाइस पर कम से कम एक बार शुरू हो चुका है। – sschuberth

+0

यह सबसे आसान समाधान पाया गया, यह सुनिश्चित नहीं है कि डाउनवॉट्स क्यों। – Marcelo

8
#!/bin/bash 
#file getActivity.sh 
package_name=$1 
#launch app by package name 
adb shell monkey -p ${package_name} -c android.intent.category.LAUNCHER 1; 
sleep 1; 
#get Activity name 
adb shell logcat -d | grep 'START u0' | tail -n 1 | sed 's/.*cmp=\(.*\)} .*/\1/g' 

नमूना (या तो एमुलेटर या वास्तविक डिवाइस में):

getActivity.sh com.tencent.mm 
com.tencent.mm/.ui.LauncherUI 
33
$ adb shell pm dump PACKAGE_NAME | grep -A 1 MAIN 
+0

यह एन 6 7.0 पर काम किया - धन्यवाद। – Kristopher

+1

'$ adb shell pm डंप PACKAGE_NAME | grep -A 1 'फ़िल्टर' | हेड -1 एन | cut -d '' -f 12' शायद एक चालाक तरीका है लेकिन मैं नहीं * NIX गुरु है। – Kristopher

+1

'pm डंप 'कई अनावश्यक सेवाओं को डंप करता है। और 'pm' स्वयं जावा जावा है इसलिए इसे शुरू करने में कुछ समय लगता है। आउटपुट का प्रासंगिक हिस्सा 'PackageManager.Dump()' वैसे भी आता है - इसलिए 'adb shell dumpsys पैकेज PACKAGE_NAME' उसी परिणाम के उत्पादन के लिए अधिक कुशल होगा। लेकिन एंड्रॉइड 7.0+ के लिए भी बेहतर तरीका है http://stackoverflow.com/a/41325792/1778421 –

7

मैं इसे सूचीबद्ध नहीं मिला तो अद्यतन करने सूचि।

आप apk स्थापित किया है और इस समाधान के लिए अपने फोन पर सामने चल रहा है की जरूरत है:

विंडोज अध्यक्ष एवं प्रबंध निदेशक लाइन:

adb shell dumpsys window windows | findstr <any unique string from your pkg Name>

लिनक्स टर्मिनल:

adb shell dumpsys window windows | grep -i <any unique string from your Pkg Name>

कैलक्यूलेटर पैकेज के लिए उत्पादन होगा:

Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}: 

    mOwnerUid=10036 mShowToOwnerOnly=true package=com.android.calculator2 appop=NONE 

    mToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

    mRootToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

    mAppToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

    WindowStateAnimator{3e160d22 com.android.calculator2/com.android.calculator2.Calculator}: 

     mSurface=Surface(name=com.android.calculator2/com.android.calculator2.Calculator) 

    mCurrentFocus=Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator} 

    mFocusedApp=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

मुख्य हिस्सा है, पहली पंक्ति:

com.android.calculator2

:

Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:

उत्पादन का पहला भाग पैकेज का नाम है

आउटपुट का दूसरा भाग (जो 012 के बाद है) दो बातें, हमारे मामले में हो सकता है इसकी:

com.android.calculator2.Calculator

  1. <PKg name>.<activity name> = <com.android.calculator2>.<Calculator>

    तो .Calculator हमारे गतिविधि

  2. है दूसरा हिस्सा पूरी तरह से अलग है पैकेज नाम से और ऐसा लगता है कि पीकेजी नाम नहीं था जो कि था आउट आउटपुट में ई /, फिर पूरे दूसरे भाग को मुख्य गतिविधि के रूप में उपयोग किया जा सकता है।

+0

की सामग्री धन्यवाद यह मेरे लिए काम करता है – UserSharma

-1

तुम भी logcat लॉग जहां सिर्फ ऐप्लिकेशन का नाम आप सभी जानकारी की तलाश देने के लिए डी डी एम एस का उपयोग कर सकते हैं, लेकिन आप का चयन करने के बजाय जानकारी वर्बोज़ या अन्य विकल्प हैं। नीचे दी गई छवि की जांच करें।

enter image description here

0

1) Appium ग्राहक की शुरुआत करें। एक बार आपने ऐपियम क्लाइंट शुरू करने के बाद उल्लिखित विंडो प्रदर्शित की जाएगी। 2) कॉन्फ़िगरेशन सेटिंग्स खोलने के लिए ऊपर चिह्नित एंड्रॉइड आइकन पर क्लिक करें।

3) एप्लिकेशन पथ चेक बॉक्स की जांच करें।

4) अपनी एपीके फ़ाइल का पता लगाने के लिए चुनें बटन पर क्लिक करें, इस मामले में मैंने इसे अमेज़ॅन एपीके दिया है। enter image description here enter image description here

6

एंड्रॉइड 7 के बाद से।0 आप adb shell cmd package resolve-activity आदेश का उपयोग कर सकते हैं इस तरह की एक इंस्टॉल किया गया ऐप्स की डिफ़ॉल्ट गतिविधि प्राप्त करने के लिए:

adb shell "cmd package resolve-activity --brief com.google.android.calculator | tail -n 1" 
com.google.android.calculator/com.android.calculator2.Calculator 
संबंधित मुद्दे