Не удалось подключить отладчик в Android Studio - localhost: 8600 java.net.ConnectException

Я не могу прикрепить отладчик в Android Studio во время отладки на телефоне.

В настоящее время я использую Samsung S4, работающий под управлением Android 4.4.4 (но попробовал телефон S5, S6, S7 и Moto E на разных версиях Android). Это время, когда я пытаюсь запустить его с любой из следующих ошибок:

I/System.out: Отправка фрагмента WAIT
W/ActivityThread: приложение ожидает отладчика на порту 8100...

или

не удалось открыть порт отладчика localhost: 8600 java.net.ConnectException "соединение отказано"

и приложение говорит:

Ожидание отладчика
Приложение (процесс) ожидает отладчика для присоединения.
Сила Закрыть

Версия Android Studio:

Android Studio 2.2.2
Build # AI-145.3360264, построенный 18 октября 2016 года
JRE: 1.8.0_112-release-b05 x86_64
JVM: 64-разрядная виртуальная машина OpenJDK от JetBrains s.r.o

Версия для Mac:

10.11.6 (15G1004)

Я могу успешно подключиться и запустить приложение, я просто не могу подключить отладчик при запуске. Выполнить > Отладка приложения > выберите подключенный телефон > OK.

Я смог запустить приложение в отладке на других компьютерах (как Windows, так и Mac) с теми же телефонами.

Различные подходы, которые я пробовал из часов отладки и онлайн-поиска:

  • Недействить кеши/перезапустить студию Android

  • Проверьте, что что-либо еще работает на портах 8100, 8600, 8601 и т.д., ничего не возвращается, когда я запускаю следующее из bash:

    $ # while Android studio is trying to attach the debugger
    $ lsof -i :8100
    $ lsof -i :8600
    COMMAND  PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
    

    studio 6282 peter 125u IPv4 0x973c7e31bda641ab 0t0 TCP 192.168.1.16:64022- > ip-166-62-27-181.ip.secureserver.net:asterix (SYN_SENT)   $ lsof -i: 8601   $   $ # после того, как студия Android не сможет подключить отладчик   $ lsof -i: 8100   $ lsof -i: 8600   $ lsof -i: 8601   $

  • Run Tools > Android > Android Device Monitor - показывает мое устройство, но я не могу запустить Android Device Monitor, пока я пытаюсь отладить приложение, он говорит: "Монитор будет закрыт, чтобы включить интеграцию ADB. Продолжить?" Я не нашел ничего полезного здесь.

  • Поиск и уничтожение процессов adb

    ps aux | egrep '(adb|java)'
    ... then doing `kill <pid>` or `kill -9 <pid>` if necessary for the found ones
    
  • Перезапустить студию Android

  • Перезагрузите компьютер

  • Обновите Java JDK с веб-сайта Oracle, но я не уверен, почему Android Studio все еще говорит: "JVM: OpenJDK 64-Bit Server VM от JetBrains s.r.o"

  • Полностью удалить и переустановить студию Android - например, qaru.site/info/24894/... - странно, я думаю, что это сработало для одного запуска отладчика, а затем не снова...

  • Tried Run > Прикрепить отладчик к Android-процессу - это не помогло

  • Прогонилось:

    ~/Library/Android/sdk/platform-tools/adb kill-server &&
     ~/Library/Android/sdk/platform-tools/adb start-server
    
  • Протестировано снятие флажка Run > Edit Configurations > Run/Debug Configurations > Пропустить установку, если APK не изменился

  • Проверить системные настройки > Безопасность и конфиденциальность > Брандмауэр - отключено

  • Обновление 1: попытка отмены разрешений на телефоне, а также перезагрузка

  • Обновление 1: отключено все точки останова Android Studio

Есть ли какие-либо другие идеи о том, что может произойти неправильно или что-либо значимое в деталях, которые я добавил выше?

Ответы

Ответ 1

Совсем неловко, но похоже, что некоторое время назад я ввел ip-адрес в файл /etc/hosts, чтобы проверить что-то как localhost и никогда не удалял его. Я нашел комментарий к другому сообщению, чтобы проверить, что в вашем /etc/hosts указано следующее:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

После комментирования этой ложной строки отладчик теперь работает. Учитывая, что у меня есть дюжина других IP-адресов в этом файле (поэтому я могу более легко тестировать удаленные хосты с дружественным именем), я, должно быть, не заметил этого в нижней части. Я думаю, что более надежный подход к проверке, является ли это проблемой или нет, - это ping localhost и убедитесь, что он разрешает ip-адрес 127.0.0.1, например,

$ ping localhost
PING localhost (127.0.0.1): 56 data bytes

Отличные комментарии и предложения от других людей здесь тоже, спасибо!

Ответ 2

Я только что испытал ту же проблему. Кажется, как если бы у Android Studio Version 2.2 были проблемы с неприемлемым отладчиком, как вы можете видеть, например, здесь и здесь.

В моем случае следующее помогло:

  • Удалите профиль запуска для своего приложения, выбрав "Run → Edit Configurations..." и удалив профиль. Не забудьте нажать кнопку "ОК" после удаления профиля.:)
  • Создайте новый профиль запуска с нуля, снова перейдя в Run → Edit Configurations..., нажав кнопку +, выбрав профиль запуска Android App и выбрав свой стартовый модуль. Другие значения по умолчанию для профиля были в порядке.

Надеюсь, это вам тоже поможет.

Ответ 3

Проект очистки 1.try Build- > clean project

2.do file- > Invalidate/cache restart если выше не помогает вам.

3.Попробуйте изменить кабель для передачи данных, который вы используете для подключения телефона.

если ничего выше не помогает, установите плагин ADW для Android wifi и попробуйте выполнить отладку через Wi-Fi.

Ответ 4

У меня также была такая же ошибка, и эта вещь работала для меня

1. Open Android Studio -> Terminal
2. Change directory to $Android SDK Path$\platform-tools
3. Write command adb get-state and hit enter.

Затем вы получите этот вывод

* daemon not running. starting it now on port 5037 *
* daemon started successfully *

Ответ 5

Поддержка подлинной сборки отладки. Разработчикам больше не нужно добавлять атрибут android: debuggable в тег в манифесте - инструменты сборки автоматически добавляют атрибут. В Eclipse/ADT все инкрементные сборки считаются сборками отладки, поэтому инструменты вставляют android: debuggable = "true" . При экспорте подписанной сборки выпуска инструменты не добавляют атрибут. В Ant команда отладки ant автоматически вставляет атрибут android: debuggable = "true" , а ant release - нет. Если андроид: debuggable = "true" установлен вручную, то ant релиз фактически сделает сборку отладки, а не сборку выпуска.

В моем случае я борюсь с этой проблемой за 5 часов и обнаружил, что

minifyEnabled true является основным виновником, поэтому изменить minifyEnabled false работать для меня

Мое приложение build.gradle выглядит как

 buildTypes {
        debug {
            signingConfig signingConfigs.debug
            minifyEnabled false
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }

Ответ 6

У меня есть противоположная проблема с Android Studio 3.3, пытаясь отладить телефон, подключенный по Wi-Fi.

После выбора устройства в Android Studio я получаю следующее сообщение:

Ошибка при запуске приложения: невозможно открыть порт отладчика (localhost: 8600): java.net.ConnectException "Соединение отказано: соединение"

В моей сети также включен IPV-6.

Проблема в том, что "localhost" по умолчанию разрешает :: 1 на моей машине, но ADB старательно привязывается к 127.0.0.1. Я случайно узнал об этом, потому что провел целый день, пытаясь подключить ADB к эмуляторам, работающим на удаленной машине (к сожалению, не начиная с Android 4.4.

Чтобы решить эту проблему, добавьте следующую строку в \windows\system32\drivers\etc\hosts:

127.0.0.1 localhost

Ответ 7

Я использую реальное устройство. Простое удаление приложения на устройстве и запуск из Android Studio решило эту проблему.

Кажется, у Android Studio были проблемы с перезаписью файла, который уже был на телефоне.

Ответ 8

Попробуйте использовать следующие команды на terminal-

  1. adb kill-server

  2. adb start-server

Это работает хорошо.

Ответ 9

Сначала попробовал все вышеперечисленные способы, не помогло. У меня два компьютера с одинаковыми настройками. Но у одного работало у другого ошибка. Это дало мне представление о том, что это может быть "аппаратная" проблема. Я переключил USB на другой слот с USB3.0 и использовал короткий кабель, и WOW он начал работать. Я предлагаю там некоторую задержку в USB2.0 (опрос), поэтому процесс начинается не синхронно.