我正在使用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的答案有效以及为什么如果我们知道它可能会解决我的问题。请参阅我的第二条评论以了解原因,但简而言之,您必须在该下拉列表中选择与您的应用根目录相匹配的名称。
答案 0 :(得分:41)
只需单击按钮(RUN按钮左侧)。
选择Android。然后跑。
它将连接到您的设备。
并且不要忘记更改构建变体
答案 1 :(得分:6)
我终于理解为什么我会收到这个错误,所以我现在要解释我Debug
的方式。请注意,我使用Gradle
(使用相同的代码构建多个apk),这可能会影响您使用此答案第三部分的方式。
要使这些工作正常,在调试旁边的下拉列表(#1中的图标)和顶部工具栏中的运行按钮中,您必须选择一个旁边的图标,因为它是所有代码所在的应用程序根目录的名称:
Debug
模式运行应用程序:
Attach Debugger
按钮:
Debug
的{{1}} strings.xml
版本中更改我的字符串了,更容易seen here, on the bottom half。当我说改变时,我的意思是我有两个版本的所有字符串(在我的情况下为3)需要从使用调试服务器转换为使用发布服务器。它可能不是完全犹太的,但是文件大约需要5秒钟,并按住Cmd + /并取消注释并注释所有相应的行。当我准备构建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)