无法打开调试器端口:java.net.SocketException“Socket closed”

时间:2014-02-13 21:48:32

标签: intellij-idea android-studio

尝试在Android Studio(v.0.4.4)上调试Android应用时遇到此错误:

Error running <appname> [assembleDebug]: 
Unable to open debugger port : java.net.SocketException "Socket closed"

应用程序编译,可以使用adb推送到手机。 adb没问题;我可以完美地安装/监控logcat等。我可以加载另一个项目,可以调试它就好了。我切换回这个,它仍然破碎。因此,这似乎排除了pc(实际上是在Windows下运行的Linux vm),Android Studio安装等问题。我重启了这个vm和主机pc。

去年我遇到了这个问题,然后通过卸载Eclipse“修复它”(我怀疑它可能是试图获得相同的套接字)。

我花了一些时间谷歌搜索和尝试建议,但他们没有任何区别。

问题发生在我生成已签名的,有预期的发布版本的时候。在那之前我只运行调试版本。但是,我相信我创建此版本的所有内容都是编辑build.gradle并配置Android Studio以自动签署apks。我已经将更改恢复为build.gradle,但问题仍然存在。

我发现任何Android Studio日志文件中都没有相关错误;这就好像捕获了这个异常,在屏幕上报告但没有记录在任何地方。

希望有人读到这篇文章可以提出一些我忽略的事情。

10 个答案:

答案 0 :(得分:44)

在Android Studio桌面上,单击“选择运行/调试配置”按钮(一个带有android图标),您应该能够选择正确的选项。

答案 1 :(得分:31)

我已经有几个星期的“Socket关闭”错误,这让我有点疯狂。今天我发现虽然通过调试图标启动仍然给我一个“Socket关闭”如果我之后附加调试器它工作(截图)。希望它能节省别人的时间。

Screenshot highlighting the attach debugger icon

答案 2 :(得分:25)

我能够通过选择&#34; app&#34;来解决这个问题。组态。在上面的屏幕截图中,向下拉动运行按钮的左侧可以选择配置。选择一个没有括号。

答案 3 :(得分:4)

我在linux上遇到这个错误,问题是另一个先前的进程占用了端口并挂了。因此,解决方案是netstat,用于定位阻塞端口的进程,然后终止此进程,或者您可以重新启动计算机。

答案 4 :(得分:3)

为了避免这个问题并且实际从Android Studio中启动,我必须明确切换我正在操作的构建变体(通过在选择&#39;构建变体&#39;在左边缘时弹出的面板) 。然后,当我实际按下调试按钮时,我的Android应用程序配置(通过运行/调试图标左侧的下拉菜单选择),它将正确部署我所在的构建变体模式。(如果可以,那会很好设置不同的Android应用程序配置,从下拉菜单部署不同的构建类型,而不必手动更换变体,但我现在不知道如何。)

enter image description here

同样在build.gradle文件的buildTypes部分中,您可能需要debuggable true,否则如果您尝试手动附加调试器,则您的进程将无法显示在对话框中。

答案 5 :(得分:2)

我遇到了同样的行为,上面的解决方案对我来说不起作用,但我有一个角落的案例:我的应用程序扩展了android.app.Application。我发现对我有用的是编辑运行/调试配置(“编辑配置...”),并选择“不启动活动”而不是“启动默认活动”。

答案 6 :(得分:2)

我刚才遇到这个问题,简单的解决方案:如果你有多个实例在运行,请确保你的运行配置指定不同的JMX端口。 refer to Image

答案 7 :(得分:2)

我遇到了与Java程序类似的问题。我重新启动了IDE并更改了JMX端口号。然后程序在调试模式下运行没有任何问题。

答案 8 :(得分:1)

我收到了这个错误,因为我有&#34;测试种类&#34; &#34;运行/调试配置&#34;中的选项对话框设置为&#34; All in Package&#34;而不是&#34;测试类&#34;。当我将它设置为&#34; Test Class&#34;时,调试器可以完美地工作。

enter image description here

答案 9 :(得分:-2)

确保您的Android手机连接良好。

相关问题