在手机上运行调试时,我无法在Android Studio中附加调试器。
我目前正在使用三星S4,运行Android 4.4.4(但在各种Android版本上尝试过S5,S6,S7和Moto E手机)。当我尝试使用以下任一错误运行它时会超时:
I / System.out:发送WAIT块 W / ActivityThread:应用程序正在等待端口8100上的调试器...
或者
无法打开调试器端口localhost:8600 java.net.ConnectException“连接被拒绝”
和App说:
等待调试器
应用程序(进程)正在等待调试器附加 强制关闭
Android Studio版本:
Android Studio 2.2.2
Build#AI-145.3360264,建于2016年10月18日
JRE:1.8.0_112-release-b05 x86_64
JVM:JetBrains s.r.o的OpenJDK 64位服务器VM
Mac版:
10.11.6(15G1004)
我可以成功连接并运行应用程序,当我运行>时,我无法让调试器附加调试应用程序>选择已连接的手机>行。
我已经能够在其他计算机(包括Windows和Mac)上使用相同的手机在调试中运行该应用程序。
我从几个小时的调试和在线搜索中尝试过各种方法:
使缓存无效/重启Android工作室
检查端口8100,8600,8601等上运行的其他内容,当我从bash运行以下命令时,没有任何内容返回:
$ # while Android studio is trying to attach the debugger
$ lsof -i :8100
$ lsof -i :8600
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
studio 6282 peter 125u IPv4 0x973c7e31bda641ab 0t0 TCP 192.168.1.16:64022->ip-166-62-27-181.ip.secureserver.net:asterix(SYN_SENT) $ lsof -i:8601 $ Android Studio未能附加调试器后的$# $ lsof -i:8100 $ lsof -i:8600 $ lsof -i:8601 $
运行工具> Android> Android设备监视器 - 它显示我的设备,但我在尝试调试应用程序时无法运行Android设备监视器,它说,“监视器将关闭以启用ADB集成。继续?“我在这里找不到任何有用的东西。
搜索并终止adb进程
ps aux | egrep '(adb|java)'
... then doing `kill <pid>` or `kill -9 <pid>` if necessary for the found ones
重启Android工作室
重新启动计算机
从Oracle网站更新Java JDK - 但是,我不确定为什么Android Studio仍然会说,“JVM:JetBrains s.r.o的OpenJDK 64位服务器VM”
完全卸载并重新安装android studio - 例如https://stackoverflow.com/a/18458893/376489 - 奇怪的是,我认为这适用于调试器的一次运行,然后不再...
尝试运行&gt;将调试程序附加到Android进程 - 这没有帮助
试着跑步:
~/Library/Android/sdk/platform-tools/adb kill-server &&
~/Library/Android/sdk/platform-tools/adb start-server
尝试取消选中“运行”&gt;编辑配置&gt;运行/调试配置&gt;如果APK未更改,请跳过安装
检查系统偏好设置&gt;安全与安全隐私&gt;防火墙 - 已关闭
更新1:尝试撤消手机上的权限并重新启动
更新1:默认所有断点Android Studio
对于我在上面添加的细节中可能出现的问题或任何有意义的内容,还有其他想法吗?
答案 0 :(得分:22)
相当令人尴尬,但看起来就像前段时间我已经在我的/ etc / hosts文件中输入了一个ip地址来测试localhost
的内容并且从未将其删除。我在另一篇文章中发现了一条评论说要检查以下是否在你的/ etc / hosts中:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
在评论出该虚假线路时,调试器现在正在工作。鉴于我在该文件中有十几个其他IP(因此我可以更容易地测试具有友好名称的远程主机),我一定不会在底部注意到这个。我认为验证这是否是问题的一种更加万无一失的方法是ping localhost并验证它是否解析为127.0.0.1的ip地址,例如,
$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
来自其他人的好评和建议,谢谢!
答案 1 :(得分:6)
我刚刚经历过同样的问题。看起来好像Android Studio 2.2在非附加调试器方面存在一些问题,例如here和here。
在我的情况下,以下帮助:
希望这也有助于你。
答案 2 :(得分:2)
1.try清洁项目Build-&gt; clean project
2.do file-&gt; Invalidate / cache restart 如果上面没有帮助你...
3.更改用于连接手机的数据线。
如果上面没有任何帮助,请安装Android wifi ADB插件并尝试通过wifi进行调试。
答案 3 :(得分:2)
我也有同样的错误,这件事对我有用
1. Open Android Studio -> Terminal
2. Change directory to $Android SDK Path$\platform-tools
3. Write command adb get-state and hit enter.
然后你会得到这个输出
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
答案 4 :(得分:2)
Support for a true debug build。开发人员不再需要将android:debuggable属性添加到清单中的标记 - 构建工具会自动添加属性。在Eclipse / ADT中,假设所有增量构建都是调试版本,因此工具插入android:debuggable =&#34; true&#34;。导出已签名的发布版本时,工具不会添加该属性。在Ant中,一个ant debug命令会自动插入android:debuggable =&#34; true&#34;属性,而ant释放不。如果android:debuggable =&#34; true&#34;手动设置,然后ant release实际上会进行调试构建,而不是发布版本。
在我的情况下,我在5小时内解决了这个问题并发现了
minifyEnabled true
是罪魁祸首所以改变
minifyEnabled false
为我工作
我的app build.gradle文件看起来像
buildTypes {
debug {
signingConfig signingConfigs.debug
minifyEnabled false
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
答案 5 :(得分:1)
Android Studio 3.3出现了相反的问题,试图调试连接Wi-Fi的手机。
在Android Studio中选择设备后,我收到以下消息:
运行“ app”时出错:无法打开调试器端口(localhost:8600): java.net.ConnectException“连接被拒绝:连接”
我的网络上也启用了IPV-6。
问题是默认情况下,“ localhost”在我的计算机上解析为:: 1,但是ADB故意将其明确绑定到127.0.0.1。我碰巧知道这一点,因为我花了整整一天的时间试图使ADB连接到在远程计算机上运行的仿真器(不幸的是,不是从Android 4.4开始。
要解决此问题,请将以下行添加到\ windows \ system32 \ drivers \ etc \ hosts:
127.0.0.1本地主机
答案 6 :(得分:1)
我正在使用真实设备。只需删除设备上的应用程序,然后从Android Studio运行即可解决此问题。
Android Studio似乎无法覆盖手机上已经存在的文件。
答案 7 :(得分:0)
尝试在终端上使用以下命令-
adb kill-server
adb启动服务器
效果很好。
答案 8 :(得分:0)
只需不使用我的Google Pixel 1st gen并使用我的新诺基亚7 plus即可解决此问题:)。
答案 9 :(得分:0)
答案 10 :(得分:0)
调试本机代码时有一个 known issue with Android Studio 4.2.1 on Ubuntu 20.04。
有一种简单的方法可以检查您是否担心,只需运行以下不应以错误结束的命令行:
${android-studio-dir}/bin/lldb/bin/LLDBFrontend
答案 11 :(得分:-2)
起初,我尝试了上述所有方法,但没有帮助。 我有两台具有相同设置的计算机。 但是在一个方面却犯了另一个错误。 给我一个想法,它可能是“硬件”问题。 我使用USB3.0将USB切换到其他插槽,并使用了短电缆和 哇,它开始工作了。 我建议USB2.0(轮询)存在一些延迟,因此进程开始不同步。