为什么不能 Android Wear connect target 用于通过蓝牙进行调试?

Why can't Android Wear connect target for debugging over Bluetooth?

每当我在我的可穿戴模拟器上通过蓝牙激活调试时,设备开始在控制台上每隔 10 毫秒吐出此错误:

08-07 12:15:53.472   1484-29405/com.google.android.apps.wearable.settings W/AdbTargetService﹕ error during createTcpConnection
    java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 7272): connect failed: ECONNREFUSED (Connection refused)
            at libcore.io.IoBridge.connect(IoBridge.java:124)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
            at java.net.Socket.startupSocket(Socket.java:590)
            at java.net.Socket.tryAllAddresses(Socket.java:128)
            at java.net.Socket.<init>(Socket.java:178)
            at java.net.Socket.<init>(Socket.java:150)
            at com.google.android.clockwork.settings.AdbTargetService$PipeControlThread.createTcpConnection(AdbTargetService.java:203)
            at com.google.android.clockwork.settings.AdbTargetService$PipeControlThread.access0(AdbTargetService.java:81)
            at com.google.android.clockwork.settings.AdbTargetService$PipeControlThread.run(AdbTargetService.java:153)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
            at libcore.io.Posix.connect(Native Method)
            at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
            at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
            at libcore.io.IoBridge.connect(IoBridge.java:122)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
            at java.net.Socket.startupSocket(Socket.java:590)
            at java.net.Socket.tryAllAddresses(Socket.java:128)
            at java.net.Socket.<init>(Socket.java:178)
            at java.net.Socket.<init>(Socket.java:150)
            at com.google.android.clockwork.settings.AdbTargetService$PipeControlThread.createTcpConnection(AdbTargetService.java:203)
            at com.google.android.clockwork.settings.AdbTargetService$PipeControlThread.access0(AdbTargetService.java:81)
            at com.google.android.clockwork.settings.AdbTargetService$PipeControlThread.run(AdbTargetService.java:153)
            at java.lang.Thread.run(Thread.java:818)
08-07 12:15:53.476    1229-1229/system_process D/ZenLog﹕ disable_effects: 0|com.google.android.apps.wearable.settings|11003|null|1000,listenerHints

在我的代码中,我将消息从可穿戴设备发送到手持设备。消息已正确发送,但调试器不会在手持模块上的 WearableListenerService class 内的任何断点处停止,似乎该代码未被执行。

补充信息:

也不会撤销权限或恢复出厂设置(如 post Android Wear device selection box says "offline localhost:4444 minSdk (API 20) > deviceSdk (API 1)" 中的建议 ) 正在工作。

碰巧我误会了一切。如果您使用的是模拟可穿戴设备,则无需:

  • 在可穿戴设备中激活 "Debugging over Bluetooth"。
  • 重定向端口 adb -s 192.168.56.102:5555 forward tcp:4444 localabstract:/adb-hubadb connect localhost:4444.
  • 甚至目标设备和主机设备都可以显示为 "disconnected"。

您只需要执行 adb -s handheldDeviceName forward tcp:5601 tcp:5601 这样手持设备就会与模拟器配对,然后您就可以开始调试而无需担心了。

问题在于,在 Android Studio 中,您一次只能调试一个模块,调试图标为:.

如果您想同时调试两个模块以便跟踪所有断点,您必须对一个模块使用调试按钮,然后将调试器附加到另一个设备

配对后,两个设备都将出现在显示其进程的列表中。

我在使用 moto 360 时遇到了这个问题并通过本教程解决了:

http://melix.github.io/blog/2014/10/android-moto360.html

So you were looking at a solution, and here it is. Basically, the problem is that the Android companion app doesn’t store its settings under its cache. They are stored in the Google Play Services space, so here is the procedure that worked for me, and I sincerely hope it will do for you. On your handheld:

  1. open the applications settings, search for the Android Wear application, then force stop it

  2. clear its data and cache

  3. now search for Google Play Services (depending on your language settings, it can appear with a different name, on m y device it is "Services Google Play".

  4. click on Manage space. You will see that there’s a section for connected devices. I tried to clear data here, but it didn’t help, so you have to click on delete all data.

  5. reboot your phone

  6. reboot your Moto 360

I am unsure that the two last steps are really necessary, but I did it because I wanted to make sure that force stopping and clearing data did not introduce some weird behavior after that. When you reopen the Android Wear companion app, it should now be as if it was the first time you opened it and ask you to associate it with your watch. Do it, and now, you should be able to follow the normal procedure described in the Android documentation and…

如果您使用的是 Mac,请在不必要地重置所有内容之前尝试此操作(注意 127.0.0.1 而不是 localhost):

adb forward tcp:4444 localabstract:/adb-hub

adb connect 127.0.0.1:4444

localhost 解析为 ::1 (IPv6) 和 127.0.0.1 (IPv4) 时,连接到 127.0.0.1 也可能有助于 Linux,不只是 Mac:

$ adb forward tcp:4444 localabstract:/adb-hub
$ adb connect localhost:4444
unable to connect to localhost:4444: Connection refused
$ adb connect 127.0.0.1:4444
connected to 127.0.0.1:4444
$ adb devices
List of devices attached
127.0.0.1:4444  device
...
$