Защо Android Wear не може да се свързва с цел за отстраняване на грешки през Bluetooth?

Всеки път, когато активирам отстраняване на грешки през 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.access$400(AdbTargetService.java:81)
            at com.google.android.clockwork.settings.AdbTargetService$PipeControlThread$2.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.access$400(AdbTargetService.java:81)
            at com.google.android.clockwork.settings.AdbTargetService$PipeControlThread$2.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 на преносимия модул и изглежда, че този код не се изпълнява.

Допълнителна информация:

  • Устройство: Genymotion Samsung Galaxy S4, API 19, 4.4.4.
  • Устройство за носене: ADV Emulator Square, API 21
  • Същият идентификатор на приложението
  • Същият номер на версията
  • Носим проект, добавен като зависимост в ръчен проект като wearApp project(':wear')
  • Няма <uses-permission> тагове
  • Android Wear, инсталирано чрез apk, пускане на емулатор: com.google.android.wearable.app-1.1.1.2016316-702016316-minAPI18
  • Отстраняване на грешки през bluetooth, активирано на преносимо устройство и сдвоени устройства
  • Хост: ConnectedTarget: прекъснат. Не се свързва, когато изпълня adb -s 192.168.56.102:5555 forward tcp:4444 localabstract:/adb-hub adb connect localhost:4444, но трето безполезно устройство изглежда е създадено във вечен офлайн статус и не може да се използва за стартиране на нищо на него:

adb devices Свързани устройства

Нито Отмяна на разрешения или възстановяване на фабричните настройки (както е предложено в публикацията Полето за избор на устройство с Android Wear казва, че офлайн localhost:4444 minSdk (API 20) › deviceSdk (API 1) ) работят.


person Juan José Melero Gómez    schedule 07.08.2015    source източник


Отговори (4)


Случва се да не съм разбрал всичко. Ако използвате емулирано носимо устройство, НЯМА нужда да:

  • Активирайте „Отстраняване на грешки през Bluetooth“ в носимото устройство.
  • Пренасочване на портове с adb -s 192.168.56.102:5555 forward tcp:4444 localabstract:/adb-hub и adb connect localhost:4444.
  • И дори както целевите, така и хост устройствата могат да изглеждат като „прекъснати“.

Всичко, от което се нуждаете, е да изпълните adb -s handheldDeviceName forward tcp:5601 tcp:5601, така че ръчното устройство да се сдвои с емулатора и след това можете да започнете отстраняване на грешки без допълнителни притеснения.

Проблемът беше, че в Android Studio можете да дебъгвате само един модул наведнъж с иконата за отстраняване на грешки: < img src="https://i.stack.imgur.com/7fddR.png" alt="Икона за отстраняване на грешки">.

Ако искате да дебъгвате и двата модула едновременно, за да можете да проследите всички точки на прекъсване, трябва да използвате бутона за дебъгване с единия модул и след това да прикачите дебъгер към другото устройство Прикачване към иконата на процеса на отстраняване на грешки в Android< /a>.

И двете устройства ще бъдат налични в списъка, показващ техните процеси, след като бъдат сдвоени.

person Juan José Melero Gómez    schedule 10.08.2015

Имах този проблем с moto 360 и го реших с този урок:

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

Значи търсихте решение и ето го. По принцип проблемът е, че придружаващото приложение за Android не съхранява настройките си в своя кеш. Те се съхраняват в пространството на Google Play Services, така че ето процедурата, която работи за мен и искрено се надявам, че ще свърши работа и за вас. На вашето устройство:

  1. отворете настройките на приложенията, потърсете приложението Android Wear, след което го спрете принудително

  2. изчистете данните и кеша

  3. сега потърсете Google Play Services (в зависимост от вашите езикови настройки може да се появи с различно име, на моето устройство това е „Услуги Google Play“.

  4. щракнете върху Управление на пространството. Ще видите, че има раздел за свързани устройства. Опитах се да изчистя данните тук, но не помогна, така че трябва да кликнете върху изтриване на всички данни.

  5. рестартирайте телефона си

  6. рестартирайте вашия Moto 360

Не съм сигурен, че последните две стъпки са наистина необходими, но го направих, защото исках да се уверя, че принудителното спиране и изчистване на данни няма да доведе до някакво странно поведение след това. Когато отворите отново придружаващото приложение Android Wear, сега трябва да изглежда така, сякаш го отваряте за първи път и да ви помоли да го свържете с часовника си. Направете го и сега трябва да можете да следвате нормалната процедура, описана в документацията на Android и...

person Matheus Campos    schedule 18.08.2015
comment
Съжалявам, забравих да отбележа въпроса като решен. @user3326264, прочетох тази страница около десет пъти, но накрая проблемът беше, че почти никой не споменава, че трябва да използвате localhost:4444 и всички тези неща САМО ако използвате истински Android Watch, и никой не обяснява как за отстраняване на грешки както в мобилни, така и в модули за носене едновременно. - person Juan José Melero Gómez; 19.08.2015

Ако сте на Mac, опитайте това, преди да нулирате всичко ненужно (обърнете внимание на 127.0.0.1 вместо localhost):

adb forward tcp:4444 localabstract:/adb-hub

adb connect 127.0.0.1:4444
person Shiny Bit    schedule 20.03.2016

Когато 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
...
$
person haubi    schedule 17.08.2016