'Adb shell am start -D' से शुरू होने वाले एंड्रॉइड एप्लिकेशन को डीबग कैसे करें?

मुझे एक एंड्रॉइड एप्लिकेशन को डीबग करने की ज़रूरत है जो पहले से ही फोन पर स्थापित है। मैं डीबग मोड में एप्लिकेशन शुरू करने में सक्षम हूं लेकिन मैं जेडीडब्ल्यूपी का उपयोग कर प्रक्रिया में कनेक्ट नहीं कर सकता । मैंने दो अलग-अलग तरीकों का प्रयास किया है जो दोनों विफल हो जाते हैं। (निम्नलिखित खंड देखें)


कमांड लाइन प्रयास

1- आवेदन शुरू करें

[...]sdk\platform-tools>adb -d shell am start -D -n "package/package.SomeActivity"

एप्लिकेशन शुरू होता है और एक चेतावनी प्रदर्शित होता है "/! \ डीबगर के लिए प्रतीक्षा कर रहा है"।

2- एक जेडीडब्ल्यूपी पोर्ट खोलें

[...]sdk\platform-tools>adb forward tcp:8000 jdwp:7602

3- jdb का उपयोग कर कनेक्ट करने का प्रयास करें

[...]sdk\platform-tools>jdb -attach 127.0.0.1:8000
    java.io.IOException: shmemBase_attach failed:
        at com.sun.tools.jdi.SharedMemoryTransportService.attach0(Native Method)
        at com.sun.tools.jdi.SharedMemoryTransportService.attach(SharedMemoryTransportService.java:108)
        at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116)
        at com.sun.tools.jdi.SharedMemoryAttachingConnector.attach(SharedMemoryAttachingConnector.java:63)
        at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519)
        at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328)
        at com.sun.tools.example.debug.tty.Env.init(Env.java:63)
        at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1066)
Fatal error:
Unable to attach to target VM.

IntelliJ प्रयास

मैंने अपनी स्थानीय प्रोजेक्ट को डिफ़ॉल्ट गतिविधि शुरू करने और "एप्लिकेशन को तैनात" अनचेक करने के लिए कॉन्फ़िगर किया है।

मुझे एप्लिकेशन को एक ही चेतावनी के साथ शुरू किया गया है लेकिन दुर्भाग्यवश आईडीई रिमोट प्रक्रिया से कनेक्ट नहीं है।

Target device: 42f7cc14e2acbfab
Launching application: ********/********.SomeActivity.
DEVICE SHELL COMMAND: am start -D -n "********/********.SomeActivity"
Starting: Intent { cmp=********/********.SomeActivity }

Waiting for process: ********
0

2 उत्तर

तैनात एप्लिकेशन को डिबग करने योग्य के साथ कॉन्फ़िगर किया गया था। विशेषता झूठी पर सेट है। मोबाइल फोन पर दिया गया संकेत बस भ्रामक था।

0
जोड़ा
@WSS सबसे अधिक संभावना है कि आप डीबग पोर्ट तक पहुंचने में सक्षम नहीं हैं। एक नया प्रश्न खोलें। एंड्रॉइड के लिए टूलींग बहुत बदल गई है।
जोड़ा लेखक h3xStream, स्रोत
यदि मैं इस पोस्ट में कमांड का उपयोग करके ऐप चलाता हूं और जब मैं adb jdwp चलाता हूं तो यह कुछ भी नहीं देता है।
जोड़ा लेखक WSS, स्रोत
  1. Root the phone
  2. Open a root shell

    (computer)$ adb shell 
    (phone)$ su
    (phone)#
    
  3. Run am command

    # am start -D -n "package/package.SomeActivity"
    

इस तरह आप किसी ऐप को डीबग कर सकते हैं, इससे कोई फर्क नहीं पड़ता कि इसमें android: debuggable सेट है या नहीं।

0
जोड़ा
मुझे जल्द ही यह कोशिश करनी होगी। स्रोत कोड के बिना एप्लिकेशन डीबग करने के लिए यह बहुत उपयोगी हो सकता है।
जोड़ा लेखक h3xStream, स्रोत
क्या आप एडीबी के माध्यम से कमांड लाइन से डीबग कर सकते हैं?
जोड़ा लेखक Ciro Santilli 包子露宪 六四事件 法轮功, स्रोत
अगर मैं adb jdwp कमांड टाइप करता हूं, तो यह कुछ भी नहीं देता है, इसलिए मैं डीबगर कनेक्ट नहीं कर सकता
जोड़ा लेखक WSS, स्रोत