我再也不能通过命令行或Eclipse使用ADB连接到我的设备了。
执行命令
adb devices
返回设备名称,但显示为脱机状态。
我尝试过的事情。
切换Android调试模式
重新安装谷歌USB驱动
将操作系统恢复到以前工作的备份(CyanogenMod)
换掉USB数据线
多次重启电话/电脑
更新Android SDK
我真的不知道发生了什么。你觉得我还能试什么,我洗耳恭听。
需要明确的是,如果你遇到了同样的问题,那么问题可能是SDK过时了。从4.2.2开始,有一个安全特性需要您确认连接设备的RSA指纹。打开SDK管理器并更新工具!然后重新启动。
在我的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管理器两次(一次更新自己),才能看到最新的包。
如果你的设备通常通过USB连接,但突然停止工作,特别是在USB线断开并重新连接后,在做其他答案中提到的一些更激烈的事情之前,尝试以下非侵入性步骤:
adb kill-server
adb start-server
adb devices
如果你的设备旁边有“device”字样,那么你的业务就恢复正常了。
如果您的设备旁边显示“离线”,请尝试重新启动设备。设备上的ADB守护进程偶尔会挂起。当我在LogCat运行时断开电缆,并从Wi-Fi或以太网连接切换回来后,我更注意到这一点。
如果你的设备没有列出,那么你应该尝试其他答案中的解决方案,从尝试不同的USB电缆和端口开始。那些廉价的电缆可能会坏掉。
不是真正的答案,但更有助于解决CM的明显问题。
我有一个HTC Inspire HD运行cm-11-20140309非官方BR1-ace(稳定版本)。我可以在更新之前使用adb,但我从来没有安装SDK,因为我不需要。以上所有方法我都试过了。
起初我以为我的问题是MTP驱动程序,但事实并非如此。在安装和更新SDK到包括4.4.2之后,HTC MTP设备驱动程序在通过USB连接时安装正常,但在新的SDK安装位置使用adb时,在MTP和ptp模式下,设备仍然显示为离线,同时调试和打开。当我关闭usb调试手机自动重启,我收到错误:
"不幸的是进程android.process.media已停止"
新的CM在developer options下有一个选项,可以启用通过WIFI进行调试,所以我也尝试了一下,结果显示无法连接到IP地址和端口。和其他海报一样,我能ping通IP地址。
我还检查了启用ADB和应用程序的根访问选项,因为它只设置为apps,当我使用ADB设备时,手机仍然显示离线,偶尔它会抛出如上所示的相同错误。
编辑:
现在,我的手机强制重新启动,我重新启动调试,插入并运行adb设备,最后手机提示我输入RSA密钥。由于某种原因,我之前没有收到提示,现在电话接通了。因此,问题可能是在重新启动后,需要将根访问权限从应用程序切换到应用程序和adb。
以下是它显示离线的原因:http://playingwithsid.blogspot.com/2013/05/android-device-offline-fixing-adb.html
好吧,这里没有巫毒,没有盲目尝试,(我希望)解释清楚的解决方案(对不起,我愤怒了,我试着用谷歌搜索解决方案几乎一整天都没有结果)。
首先,让我们了解一下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在界面上飞来飞去。这个问题的解决方案是选择一个不同的端口。
如果我说错了请告诉我,但我以前没见过有人这么提议。也没有解释它应该如何工作以及为什么要工作。
我的USB连接有问题,所以我试着接上wifi连接。这里几乎什么都试过了,但有一件事我直到最后才尝试,突然它起作用了!所以,如果你被困住了,试试下面这些步骤:
1. Connect with USB cord
2. adb devices
List of devices attached
HT85X1A00342 device
10.0.0.43:5555 offline
3. adb usb
restarting in USB mode
4. adb reconnect
reconnecting HT85X1A00342 [device]
5. adb tcpip 5555
restarting in TCP mode port: 5555
6. adb devices
List of devices attached
7. adb connect 10.0.0.43:5555
connected to 10.0.0.43:5555
甜蜜的!我不知道强制它重新启动USB模式,然后依次启动TCP/IP模式是否有帮助,或者仅仅是最后三个命令,但显然它开始工作了。我还发现有一个开发者选项可以在Wifi上启用调试,你可以选择你的热点。这也可能会阻止它工作,所以也要检查一下。
好运!
如果你在通过tcpip无线连接你的设备时得到这个,然后尝试断开你的设备:
Adb disconnect <your_ip_address>:port_number或Adb disconnect
eg
Adb disconnect 192.168.1.2:5555
或
亚行断开
不同之处在于,第一个将只断开所需的设备,第二个将断开所有设备。
使用此命令的好处是您不必关闭并重新启动服务器。关闭和重新启动服务器需要你的设备连接到你的电脑,这是最恼人的过程。
我在尝试使用Android 11中内置的“无线ADB”功能连接时偶然发现了这个问题。
我没法把它接好。总是显示为“脱机”。
我所做的是:
首先断开所有ADB设备,这是一个很好的措施:
adb disconnect
然后在开发人员选项中,进入“无线ADB”功能,如果您还没有这样做的话。转到“使用密码配对”或类似选项。在那里,一个IP和端口将弹出一个对话框,连同一个引脚。连接到电话使用:
adb pair 192.168.2.xxx:42838 # Put the IP and port of that dialog in this way
(注意主窗口上的端口和PIN弹出框上的端口是不一样的)
您的(PC) ADB将提示您输入pin。输入并按ENTER。
这样,手机上弹出的PIN码应该消失,计算机名应该显示在主窗口的可信设备列表中。
如果你做到了这一步,下一步肯定会奏效。尝试现在连接到您的手机使用:
adb connect 192.168.2.xxx:53548 # This time use the port shown in the main window!
它应该连接好了,你就可以出发了。