无法打开debugging器端口:java.net.SocketException“套接字closures”

尝试在Android Studio(v.0.4.4)上debuggingAndroid应用程序时出现此错误:

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

该应用程序编译,并可以推到手机使用adb。 adb没有问题; 我可以完美地安装/监视logcat等。 我可以加载另一个项目,并可以debugging它就好了。 我切换回到这一个,它仍然是坏的。 所以这似乎排除了与电脑(实际上是在Windows下运行的Linux虚拟机),安卓工作室安装等问题。我重新启动了这个虚拟机和主机电脑。

去年我有这个问题,我“修复了”,然后卸载Eclipse(我猜可能是试图获得相同的套接字)。

我花了一些时间search和尝试的build议,但他们没有任何区别。

这个问题出现在我制作一个签名的程序发布版本的时候。 在那之前我只能运行debugging版本。 不过,我相信我所做的只是编辑build.gradle并configurationAndroid Studio来自动签署apks。 我已经恢复了build.gradle的变化,但问题依然存在。

我在任何Android Studio日志文件中都看不到相关的错误; 就好像这个exception被捕获,在屏幕上报告,但没有logging到任何地方。

希望有人读这可以提出一些改变,我忽略了一些东西。

在Android Studio桌面上,点击“select运行/debuggingconfiguration”button(一个带有android图标的),你应该能够select正确的选项。

我已经有了几个星期的“套接字closures”错误,这让我有点生气。 今天我发现,虽然通过debugging图标启动仍然给我一个“套接字closures”,如果我附加debugging器后,它的工作(在屏幕截图)。 希望能节省别人的时间。

突出显示附加调试器图标的屏幕截图

我可以通过select“应用程序”configuration来解决这个问题。 在上面的屏幕截图中,运行button左侧的下拉菜单允许您selectconfiguration。select一个不带括号的configuration。

为了避免这个问题,实际上从Android Studio启动,我必须明确地切换我正在运行的构build变体(通过在左边select“构build变体”时popup的面板)。 然后,当实际上按下debuggingbutton的顶部为我的Android应用程序configuration(通过运行/debugging图标左侧的下拉菜单中select),它会正确部署我build立的变种模式(如果我可以很好设置不同的Android应用程序configuration,以从下拉菜单部署不同的构buildtypes,而不是更多地手动切换变体,但我现在看不到。

在这里输入图像说明

同样在你的build.gradle文件的buildTypes部分,你可能想要debuggable true ,否则如果你尝试手动附加debugging器,你的进程将不会显示在对话框中。

我得到这个错误在Linux上,问题是,以前的另一个进程采取了端口和挂起。 所以,解决方法是用netstat来定位阻塞端口的进程,然后终止这个进程,或者重启机器。

我遇到了同样的行为,上面的解决scheme不适合我,但我有一个angular落的情况:我的应用程序扩展android.app.Application。 我发现我的作品是编辑运行/debuggingconfiguration(“编辑configuration…”),并select“不启动活动”,而不是“启动默认活动”。

我刚才遇到这个问题,简单的解决办法:如果你有多个实例在运行,请确保你的运行configuration指定了不同的JMX端口。 请参阅图像

我得到这个错误,因为我有“运行/debuggingconfiguration”对话框中的“testing种类”选项设置为“所有包”而不是“testing类”。 当我将它设置为“testing类”时,debugging器完美无缺地工作。

在这里输入图像说明

我有一个Java程序类似的问题。 我重新启动了IDE并更改了JMX端口号。 然后程序运行在debugging模式下,没有任何问题。

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