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

cra*_*ned 21 debugging android android-studio android-gradle-plugin

我正在使用Android Studio,使用Gradle有多种风格,每种风格都有一个调试和发布类型,如下所示进行组织,在下半部分.当我尝试启动调试器时,我收到此错误:

Error running androidRecover [installAppDebug]: Unable to open debugger port :     java.net.SocketException "Socket closed
Run Code Online (Sandbox Code Playgroud)

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

所有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')
}
Run Code Online (Sandbox Code Playgroud)

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

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

如果您需要任何其他信息,请告诉我.

谢谢,德文

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

has*_*gar 41

只需单击按钮(左侧是RUN按钮).

在此输入图像描述

选择Android.然后跑.

它将连接到您的设备.

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

在此输入图像描述

  • 您的屏幕截图不适用于我的情况.当我在下拉列表中选择"android"时,我有以下选项:"编辑配置","保存配置",项目名称以及到目前为止我运行的各种Gradle命令.每隔一段时间,该应用程序决定让我联系,但我无法弄清楚每次都会发生的魔力.我收到一个错误:警告:调试信息可能不可用.请使用ADB关闭其他应用程序:Monitor,DDMS,Eclipse.重新启动ADB集成,然后重试.等待过程:<flavor>.但我不知道如何解决这个问题. (2认同)

cra*_*ned 6

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

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

在此输入图像描述

  1. 要从头开始调试,我Debug使用工具栏中的此按钮从头开始运行应用程序:

在这里输入图像描述!

  1. 要将调试器作为@scottyab提到的运行时附加到应用程序,我单击Attach Debugger工具栏中的按钮:

在此输入图像描述

  1. 要在调试模式下运行我的应用程序的发布版本,我已经开始在文件路径的Debug版本中更改我的字符串,在这里更容易看到,在下半部分.当我说改变时,我的意思是我有两个版本的所有字符串(在我的情况下为3)需要从使用调试服务器转换为使用发布服务器.它可能不是完全犹太的,但是文件大约需要5秒钟,并按住Cmd + /并取消注释并注释所有相应的行.strings.xmlmyApp/src/appNameDebug(verses appNameRelease)/res/values/strings.xml

Release当我准备构建一个apk用于发布时,我的版本就在那里.

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