无法在 Android Studio 中附加调试器 - localhost:8600 java.net.ConnectException

Posted

技术标签:

【中文标题】无法在 Android Studio 中附加调试器 - localhost:8600 java.net.ConnectException【英文标题】:Unable to attach debugger in Android Studio - localhost:8600 java.net.ConnectException 【发布时间】:2017-04-10 22:08:46 【问题描述】:

在手机上运行调试时,我无法在 android Studio 中附加调试器。

我目前使用的是运行 Android 4.4.4 的三星 S4(但在各种 Android 版本上尝试过 S5、S6、S7 和 Moto E 手机)。当我尝试运行它并出现以下任一错误时,它会超时:

I/System.out:发送 WAIT 块 W/ActivityThread:应用程序正在端口 8100 上等待调试器...

或者

无法打开调试器端口 localhost:8600 java.net.ConnectException "connection denied"

应用程序说:

等待调试器 应用程序(进程)正在等待调试器附加。 强制关闭

Android Studio 版本:

Android Studio 2.2.2 构建 #AI-145.3360264,构建于 2016 年 10 月 18 日 JRE:1.8.0_112-release-b05 x86_64 JVM:JetBrains s.r.o 的 OpenJDK 64 位服务器虚拟机

Mac 版本:

10.11.6 (15G1004)

我可以成功连接并运行应用程序,但是当我执行“运行”>“调试应用程序”>选择已连接的手机>“确定”时,我无法连接调试器。

我已经能够在使用相同手机的其他计算机(Windows 和 Mac)上以调试方式运行该应用程序。

经过数小时的调试和在线搜索,我尝试了各种方法:

    使缓存无效/重新启动 Android Studio

    检查端口 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
    

    工作室 6282 彼得 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 studio 附加调试器失败后 $ lsof -i :8100 $ lsof -i :8600 $ lsof -i :8601 $

    运行工具 > Android > Android 设备监视器 - 它显示我的设备,但我在尝试调试应用程序时无法运行 Android 设备监视器,它说:“监视器将关闭以启用 ADB一体化。继续?”我在这里没有找到任何有用的东西。

    搜索并杀死 adb 进程

    ps aux | egrep '(adb|java)'
    ... then doing `kill <pid>` or `kill -9 <pid>` if necessary for the found ones
    

    重启安卓工作室

    重启我的电脑

    从 Oracle 网站更新 Java JDK — 但是,我不知道为什么 Android Studio 仍然显示“JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o”

    完全卸载并重新安装 android studio - 例如,https://***.com/a/18458893/376489 - 奇怪的是,我认为这适用于调试器的一次运行,然后再次运行......

    试运行 > 将调试器附加到 Android 进程 - 这没有帮助

    试运行:

    ~/Library/Android/sdk/platform-tools/adb kill-server &&
     ~/Library/Android/sdk/platform-tools/adb start-server
    

    尝试取消选中运行 > 编辑配置 > 运行/调试配置 > 如果 APK 未更改则跳过安装

    检查系统偏好设置 > 安全和隐私 > 防火墙 - 已关闭

    更新 1:尝试撤销手机权限并重启手机

    更新 1:静音 Android Studio 的所有断点

对于我在上面添加的细节中可能出现的问题或任何有意义的内容,还有其他想法吗?

【问题讨论】:

尝试撤销usb调试授权。 谢谢@KERiii——我在手机上撤销了然后又重新启动了 Android Studio——它仍然导致调试控制台中的Application &lt;app_id&gt; is waiting for the debugger on port 8100...Sending WAIT chunk,最终超时并且我得到了弹出窗口Unable to open debugger port (localhost:8600): java.net.ConnectException “Connection refused” @MrColes 你在通过 wifi 调试吗? 很好的问题@PN10 — 我正在使用 USB。我已经成功地使用了相同的 USB 线、相同的手机,并在另外 2 台计算机(一台 Mac,一台 Windows)上运行了相同的项目 【参考方案1】:

1.尝试清理项目Build->清理项目

2.do file->无效/缓存重启 如果以上对您没有帮助..

3.尝试更换连接手机的数据线。

如果以上没有任何帮助,请安装 Android wifi ADB 插件并尝试通过 wifi 进行调试。

【讨论】:

我在 Android Studio 中通过 Preferences > Plugins 安装了Android wifi ADB plugin。我最终得到了与通过 USB 运行它时相同的结果(“错误运行应用程序:无法打开调试器端口(本地主机:8600):java.net.ConnectException “操作超时”) 这里是调试控制台输出的截图:i.imgur.com/el5kCF8.png【参考方案2】:

我刚刚遇到了同样的问题。似乎 Android Studio 2.2 版在非附加调试器方面存在一些问题,例如 here 和 here。

在我的情况下,以下帮助:

通过转到运行 -> 编辑配置... 并删除那里的配置文件来删除您的应用程序的启动配置文件。删除配置文件后,不要忘记点击 OK 按钮。 :) 再次转到运行 -> 编辑配置...,点击 + 按钮,选择 Android 应用启动配置文件并选择您的启动模块,从头开始创建一个新的启动配置文件。配置文件的其他默认值很好。

希望这对你也有帮助。

【讨论】:

你就是那个男人!谢谢你。我经历过奇怪的调试行为,这些步骤解决了它们。我不知道究竟是什么导致了这些问题,但是我很高兴它现在可以工作了! 这对我有用,但更重要的是,我重命名了旧配置,而不是删除它。当新的替代品工作时,我追踪了包含数据的 .idea/workspace.xml 文件,并进行了比较。唯一的区别是旧配置有两个我添加的目录来查找符号,这是解决不同问题的早期努力的一部分。这导致调试器自发断开连接。 这解决了my issue,谢谢!【参考方案3】:

我也遇到了同样的错误,这对我有用

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 *

【讨论】:

不应该只执行以下操作:“打印模拟器/设备实例的 adb 状态。”?另外,当我运行它时,它只输出文本:“device” ``` ~/L/A/s/platform-tools > adb get-state device `` 它肯定会打印模拟器/设备状态,但是当守护程序未运行时,它也会为您启动它。因此,在许多情况下,当守护程序无法自行加载并且您尝试调试/运行您的应用程序时,它将显示与您遇到的相同错误Unable to open debugger port : java.net.ConnectException "Connection refused"【参考方案4】:

很尴尬,但似乎前段时间我在 /etc/hosts 文件中输入了一个 IP 地址来测试 localhost 的内容,但从未将其删除。我在另一篇帖子上发现了一条评论,说要检查您的 /etc/hosts 中是否有以下内容:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

在注释掉那条虚假的行后,调试器现在可以工作了。鉴于我在该文件中有十几个其他 IP(因此我可以更轻松地使用友好名称测试远程主机),我一定没有注意到底部的这个。我认为验证这是否是问题的一种更简单的方法是 ping localhost 并验证它是否解析为 127.0.0.1 的 IP 地址,例如,

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

这里的其他人也提供了很棒的 cmets 和建议,谢谢!

【讨论】:

我也有调试器附加问题并尝试了大多数解决方案。但与您类似,我也在主机文件中添加了一个 ip。但是我还是有以下几行 127.0.0.1 localhost ::1 ip6-localhost 你对我有什么建议吗? 你不是唯一一个 :) 通过在 /etc/hosts 中阅读这个答案发现了同样的问题,有另一个 ip 和 localhost 的副本。删除了那条线,一切都恢复正常了。 你拯救了我的一天。我在 hosts 文件中添加了 3 行(上面),然后它就可以工作了。我现在可以看到日志了。这是编辑主机文件的命令。希望我能帮助别人。 ***.com/questions/17432358/…【参考方案5】:

Support for a true debug build。开发人员不再需要将 android:debuggable 属性添加到清单中的标签 — 构建工具会自动添加该属性。在 Eclipse/ADT 中,所有增量构建都假定为调试构建,因此工具插入 android:debuggable="true"。导出签名的发布版本时,工具不会添加该属性。在 Ant 中,ant 调试命令会自动插入 android:debuggable="true" 属性,而 ant release 则不会。如果手动设置了 android:debuggable="true",那么 ant release 实际上会进行调试构建,而不是发布构建。

在我的情况下,我用 5 个小时来解决这个问题,发现

minifyEnabled true 是罪魁祸首,所以改变 minifyEnabled false为我工作

我的 app 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 本地主机

【讨论】:

【参考方案7】:

起初我尝试了上述所有方法,但没有帮助。 我有两台设置相同的电脑。 但在另一个错误中工作。 它给了我一个想法,它可能是“硬件”问题。 我用 USB3.0 将 USB 切换到另一个插槽并使用短电缆和 哇,它开始工作了。 我建议在 USB2.0(轮询)中有一些延迟,因此进程开始不同步。

【讨论】:

OP 写道,他在不同的计算机上使用相同的 USB 线确实成功了,所以你的答案是无关紧要的【参考方案8】:

我使用的是真实设备。只需删除设备上的应用,然后从 Android Studio 运行即可解决此问题。

Android Studio 似乎无法覆盖手机上已有的文件。

【讨论】:

谢谢。 +10 的答案【参考方案9】:

尝试在终端上使用以下命令-

    adb kill-server

    adb 启动服务器

效果很好。

【讨论】:

这是一个模糊的答案。您应该提供有关此方法为何有效的更多信息和/或添加指向参考材料的链接。【参考方案10】:

只是不使用我的第一代谷歌像素并使用我的新诺基亚 7 plus 解决了这个问题:)。

【讨论】:

【参考方案11】:

这个问题让我发疯了大约 2 周。最终为我解决的问题是在调试器进程选择窗口中将“auto”更改为“java”,如下所示:

【讨论】:

我卡了这么久。谢谢大佬。【参考方案12】:

调试原生代码时有known issue with Android Studio 4.2.1 on Ubuntu 20.04。

有一个简单的方法可以检查您是否担心,只需运行以下不应以错误结束的命令行:

$android-studio-dir/bin/lldb/bin/LLDBFrontend

【讨论】:

以上是关于无法在 Android Studio 中附加调试器 - localhost:8600 java.net.ConnectException的主要内容,如果未能解决你的问题,请参考以下文章

将Visual Studio 2012附加到在Android移动设备上运行的Unity游戏中,以进行调试

Android Studio 看不到 Android 进程

如何在 Android Studio 中禁用 android 本机调试器

无法将 matlab.exe 进程附加到 Visual Studio 2013 以调试 mex 文件?

调试期间在 Visual Studio 中自动附加到子进程

[Android Studio 3.5为每个调试会话进行gradle构建