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

执行命令

adb devices

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

我尝试过的事情。

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

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

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


当前回答

分享一下我的情况:

在我的局域网中,所有的andorid板都有相同的默认MAC地址。 所以它将通过DHCP获得相同的IP,因为它有相同的MAC地址。

在局域网中,有多个具有相同IP的android板。 adb可以连接到板子(其中一个),可以打开板子(其中一个)的shell,但在将文件推到板子或其他操作时,会出现“设备离线”。

解决方案: 重写MAC地址,得到不同的IP。

其他回答

我认为最好的方法是先禁用设备,然后从设备管理器中启用设备,然后运行adb devices命令。

转到开始选项卡,右键单击计算机 从下拉菜单中,单击Manage 在计算机管理界面中,单击“设备管理器” 在右侧窗格中,展开便携式设备以找到您的设备 右键单击设备名称,然后在下拉菜单中单击“禁用” 当它被禁用时,除了启用它外,请重复步骤5。

设备将重新上线。这是更快。

在我的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管理器两次(一次更新自己),才能看到最新的包。

下面是您可以通过命令行执行的步骤。无需访问设备。

步骤1:执行“adb devices -l”,您将看到离线设备。现在记下usb后面的数字:Example=> usb:1-1.4.2

步骤2:echo '1-1.4.2' |sudo tee /sys/bus/usb/drivers/usb/unbind

步骤3:echo '1-1.4.2' |sudo tee /sys/bus/usb/drivers/usb/bind

步骤4:检查“adb devices -l”。这些设备应该在线。

当我试图从Ubuntu在Galaxy S III上安装CyanogenMod时,我也遇到了同样的问题。最后,通过将SD卡直接连接到PC上,我简单地将ZIP文件复制到外部SD卡上。然后我将卡移回手机,当我重新启动手机时,我可以从SD卡安装CyanogenMod。

Linux下:删除~/目录。重新启动ADB。