Как отладить Android APK на эмуляторе Genymotion из командной строки Linux?

Я использую эмулятор Android Genymotion (VirtualBox). Когда я пытаюсь подключить JDB к работающему Android-приложению из командной строки, я получаю java.io.IOException: handshake failed - connection prematurally closed удовольствие, а именно:

$ adb jdwp
...
1720
1744
^C
$ adb forward tcp:1234 jdwp:1744
$ adb forward --list
192.168.56.105:5555 tcp:1234 jdwp:1744

$ ss -t -a | grep 1234
LISTEN 0      128        127.0.0.1:1234           0.0.0.0:*           

$ ifconfig
...
vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.1  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::800:27ff:fe00:0  prefixlen 64  scopeid 0x20<link>
        ether 0a:00:27:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 243  bytes 48382 (47.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ jdb -attach localhost:1234
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
java.io.IOException: handshake failed - connection prematurally closed
        at jdk.jdi/com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:142)
        at jdk.jdi/com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:255)
        at jdk.jdi/com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:119)
        at jdk.jdi/com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:83)
        at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519)
        at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328)
        at jdk.jdi/com.sun.tools.example.debug.tty.Env.init(Env.java:63)
        at jdk.jdi/com.sun.tools.example.debug.tty.TTY.main(TTY.java:1095)

Fatal error:
Unable to attach to target VM.

Однако, используя Android Studio IDE/GUI, я могу подключить отладчик одним нажатием кнопки. Не могу отладить с помощью Android Studio, дающей мою ситуацию.


person Andrew    schedule 28.05.2020    source источник


Ответы (1)


Похоже, что эта проблема вызвана самой Android Studio... Кроме того, убивая сервер adb с работающей Android Studio, сервер adb автоматически перезагружается. Решение здесь состоит в том, чтобы не запускать Android Studio, выполняя сеанс JDB из командной строки.

person Andrew    schedule 30.05.2020