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

时间:2014-05-12 17:45:37

标签: android debugging android-studio android-gradle

我正在使用Android Studio,使用Gradle有多种风格,每种都有调试和发布类型,按照here, on the bottom half的描述进行组织。当我尝试启动调试器时,我收到此错误:

Error running androidRecover [installAppDebug]: Unable to open debugger port :     java.net.SocketException "Socket closed

我的设备一旦运行,我也无法将调试器附加到我的设备上(它只显示我的手机的名称,而不是应用程序)。

所有3种口味都安装在我的手机上就好了。我无法让它让我调试它们。我还测试了在Nexus平板电脑上附加调试器,我得到了相同的结果。

这不是Gradle特别是整体,因为我可以运行其他基于Gradle的应用程序并附加调试器,所以我想知道它是否与我如何设置我的Gradle项目和设置有关。

这是我的build.gradle:

apply plugin: 'android'
apply from: 'signing.gradle'

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.3'

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile
                     ('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    productFlavors {
        flav1 {
            packageName "com.ex.flav1"
            versionCode 32
            versionName "1.0.5"
            signingConfig signingConfigs.flav1
        }

        flav2 {
            packageName "com.ex.flav2"
            versionCode 33
            versionName "1.0.6"
            signingConfig signingConfigs.flav2
        }

        flav3 {
            packageName "com.ex.flav3"
            versionCode 27
            versionName "1.0.0"
            signingConfig signingConfigs.flav3
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile files('libs/httpmime-4.2.5.jar')
}

我真的不知道还有什么可以尝试的。 Android Studio完全是最新的。我重新启动了Android Studio,手机和计算机。

另外,上周我遇到了这个问题,但它是一个特定的套接字被阻止,同时试图运行模拟器和我的手机。我还注意到我有多个Gradle进程正在运行,因为它没有自己杀死它们,我经常不得不杀死Android Studio来杀死它们。一旦修复,它就一直在继续。

如果您需要任何其他信息,请与我们联系。

谢谢, 德文

编辑我终于知道为什么@ hasanaydogar的答案有效以及为什么如果我们知道它可能会解决我的问题。请参阅我的第二条评论以了解原因,但简而言之,您必须在该下拉列表中选择与您的应用根目录相匹配的名称。

5 个答案:

答案 0 :(得分:41)

只需单击按钮(RUN按钮左侧)。

enter image description here

选择Android。然后跑。

它将连接到您的设备。

并且不要忘记更改构建变体

enter image description here

答案 1 :(得分:6)

我终于理解为什么我会收到这个错误,所以我现在要解释我Debug的方式。请注意,我使用Gradle(使用相同的代码构建多个apk),这可能会影响您使用此答案第三部分的方式。

要使这些工作正常,在调试旁边的下拉列表(#1中的图标)和顶部工具栏中的运行按钮中,您必须选择一个旁边的图标,因为它是所有代码所在的应用程序根目录的名称:

enter image description here

  1. 要从头开始调试,我使用工具栏中的此按钮从头开始以Debug模式运行应用程序:
  2. enter image description here!

    1. 要将调试器作为@scottyab提及已经运行时附加到应用,我会点击工具栏中的Attach Debugger按钮:
    2. enter image description here

      1. 要在调试模式下运行我的应用发布版本,我已经开始在文件路径Debug的{​​{1}} strings.xml版本中更改我的字符串了,更容易seen here, on the bottom half。当我说改变时,我的意思是我有两个版本的所有字符串(在我的情况下为3)需要从使用调试服务器转换为使用发布服务器。它可能不是完全犹太的,但是文件大约需要5秒钟,并按住Cmd + /并取消注释并注释所有相应的行。
      2. 当我准备构建apk以供发布时,我的myApp/src/appNameDebug(verses appNameRelease)/res/values/strings.xml版本就在那里。

        以这种方式做事已经消除了再次出现的错误。我认为Release版本不是用于调试的,我还没有找到一种在Release模式下打开调试标志的简单方法。

答案 2 :(得分:2)

我设法通过在构建后附加调试器来查看Unable to open debugger port : java.net.SocketException "Socket closed"

来实现此功能

答案 3 :(得分:2)

我设法通过杀死&去除了这个问题重启adb进程,希望这会有所帮助:]

答案 4 :(得分:2)

我已参考以下SO Answer

解决了这个问题

"选择运行/调试配置" android studio 2.3.2中的按钮

enter image description here

将Debug类型更改为Native

enter image description here