我再也不能通过命令行或Eclipse使用ADB连接到我的设备了。

执行命令

adb devices

返回设备名称,但显示为脱机状态。

我尝试过的事情。

切换Android调试模式 重新安装谷歌USB驱动 将操作系统恢复到以前工作的备份(CyanogenMod) 换掉USB数据线 多次重启电话/电脑 更新Android SDK

我真的不知道发生了什么。你觉得我还能试什么,我洗耳恭听。

需要明确的是,如果你遇到了同样的问题,那么问题可能是SDK过时了。从4.2.2开始,有一个安全特性需要您确认连接设备的RSA指纹。打开SDK管理器并更新工具!然后重新启动。


当前回答

如果你之前已经授权了你的电脑的RSA指纹,并尝试了adb kill-server等,但没有运气,你的问题可能只是在它被锁定时试图连接它。试着按下屏幕上的按钮并输入你的图案-这为我修复了它。

其他回答

这很可能是由于过时的adb流程。 这可能是因为蹩脚的开发人员将adb和dll打包并安装在Windows的根目录中。例如C:\Windows\adb.exe

打开任务管理器kill adb.exe,将adb.exe定位在root:\Windows并删除它。然后使用最新的SDK

好吧,这里没有巫毒,没有盲目尝试,(我希望)解释清楚的解决方案(对不起,我愤怒了,我试着用谷歌搜索解决方案几乎一整天都没有结果)。

首先,让我们了解一下adb与设备的通信方式: https://android.googlesource.com/platform/system/core/+/master/adb/protocol.txt

简短的故事:主机adb在5037上建立服务器,通过tcp端口5555(默认)连接到设备上的adbd。

这意味着-为了工作,您的adb必须有一条通往本地5037和远程5555的清晰道路。 如果你不能或不想使用USB,你可以在设备上(使用设备终端)设置adbd来监听,而不需要建立USB连接:

setprop service.adb.tcp.port 5555
stop adbd
start adbd

使用netstat -plant | grep adbd检查adbd是否正在监听端口5555(或您选择的任何其他端口)。

现在使用捕获过滤器端口5555启动Wireshark。在您的主机上执行此命令:adb connect device_ip:5555(如果使用非标准端口则替换5555)。

根据上面的文档,您应该可以看到来自两个方向的CNXN命令!如果您的远端没有回复,adb设备将说您的设备离线!游戏结束了。Adb devices不做任何网络交换,它只是显示Adb connect命令的结果。

我的问题是——我一直在Virtualbox中运行Android,使用NAT网络和转发5555端口。另外,我在端口5554上运行了一个模拟器。它并没有占用5555,但不知为何,这两个干扰和中断了Virtualbox在较低级别的连接,因为我有很多奇怪的重复ack和rst在界面上飞来飞去。这个问题的解决方案是选择一个不同的端口。

如果我说错了请告诉我,但我以前没见过有人这么提议。也没有解释它应该如何工作以及为什么要工作。

在我的Nexus 7和Galaxy Nexus更新到Android 4.2.2之后,我今天也遇到了同样的问题。

解决这个问题的方法是将SDK平台工具升级到r16.0.1。对我来说,这个版本没有显示在我的SDK管理器中,所以我直接从http://dl.google.com/android/repository/platform-tools_r16.0.1-windows.zip上下载了它。

然后,您需要重命名platform-tools目录并将其解压缩到android-sdk-windows/platform-tools。在使用SDK管理器之前,我也已经更新到最新的SDK -tools。

如果您的整个Eclipse和ADT都是古老的,您可能也需要更新它们,但我不需要。

注意:您可能需要运行SDK管理器两次(一次更新自己),才能看到最新的包。

Try

adb usb 

我将我的连接方法更改为tcpip,然后我认为如果我杀死服务器并启动它,它将重置连接方法,但它不会

这就是为什么之前的答案都不适用于我的情况

当我面对同样的问题时,我会像下面这样做:

通过在命令提示符中发出adb kill-server命令和adb start-server命令重新启动adb 关闭并重新打开USB调试 重启手机,如果它仍然不工作。 通过这些步骤,99%的问题都得到了解决。