Android ADB 设备离线,无法发出命令

Posted

技术标签:

【中文标题】Android ADB 设备离线,无法发出命令【英文标题】:Android ADB device offline, can't issue commands 【发布时间】:2013-02-06 06:44:28 【问题描述】:

我无法再通过命令行或在Eclipse 中使用ADB 连接到我的设备。

运行命令

adb devices

返回设备名称,但它说它处于离线状态。

我尝试过的事情。

    切换 android 调试模式 重新安装了 Google USB 驱动程序 将操作系统恢复到以前工作的备份 (CyanogenMod) 交换了 USB 线 多次重启手机/电脑 更新了 Android SDK

我真的不知道发生了什么。任何你认为我可以尝试的东西,我都在听。

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

【问题讨论】:

尝试另一个 USB 端口。 只有其他端口是usb3 我也遇到过这种问题。我所做的是,*发出命令 adb kill-server, adb start-server。 *尝试另一个 USB 端口,大多数情况下它将在 PC 背面工作。 *重新启动设备,*重新启动 eclipse,*重新启动计算机,*更换 USB 线一些 USB 线将失败(低质量)。最后如果问题没有解决,重新安装Device USB Driver。 重启我的设备也有效 (4.0.4) 我也遇到了同样的情况。就我而言,我只是禁用了开发人员选项,然后重新启用。就是这样。 【参考方案1】:

在运行adb kill-server 后尝试运行adb devices。之后弹出安全问题。为我工作。

【讨论】:

如果您的驱动程序已经是最新的并且仍然存在问题,则可以使用。在其他情况下,我认为它也可能有效。 确保断开任何其他机器与设备的连接。在我的情况下,我的虚拟机主机仍然通过 tcpip 连接,我的客人仍然可以成功连接,但它会离线。为了获得 RSA 提示,我必须在通过adb connect 192.x.x.x 连接到我的访客之前在我的主机上运行adb kill-server 命令 之后的 adb start-server 一般来说这就是诀窍。接受答案是针对特殊情况的。 我一定错过了手机上的“允许从 xx:xx:xx 进行 USB 调试”。重新启动服务器并重新连接USB再次弹出。【参考方案2】:

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

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

然后您需要重命名platform-tools 目录并将其解压缩为android-sdk-windows/platform-tools。使用 SDK Manager,在此之前我还更新到了最新的 sdk-tools。

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

注意:您可能需要运行 SDK Manager 两次(一次自行更新)才能看到最新的软件包。

【讨论】:

我有 r17 但我遇到了同样的问题。恢复到 r16.0.1 会有帮助吗? @spartacus 我不这么认为,所以我认为您的问题现在可能出在其他地方。 已解决,Android SDK缺少平台导致的问题 完全按照描述的顺序工作。最后一步是在手机上允许它。 只需重启手机或设备即可享受,无需重新启动 adb。【参考方案3】:

当您使用 Wi-Fi 模式(例如在 Android Studio 或控制台中通过运行adb tcpip 5555)连接到设备时,它似乎也经常发生。

修复:

    断开 USB 连接 - 如果您通过 Wi-Fi 连接,则关闭设备的 Wi-Fi。 关闭 Android Studio/Eclipse/其他 IDE。 运行 adb kill-server 以确保 adb 未运行。 重新启动您的 Android 设备。 设备重启后,通过 USB 连接并运行adb devices。这应该启动 ADB 守护进程。您的设备现在应该可以再次在线了。

【讨论】:

第 3 步很可能是这里的关键解决方案!关闭您的命令行界面,如果它仍在运行,则终止该进程,然后重试! 这对我有用(带有 Windows 7 的 Galaxy Tab GT P7500) 在 Android 8.0 和 Windows 10 上为我工作 我在没有重启安卓设备的情况下尝试了adb kill-server,但没有成功。当我重复这些步骤并按照第 4 节所述重新启动设备时,它就可以工作了。【参考方案4】:

我在运行 4.2.2 OTA 更新的 Nexus 7 上遇到了同样的问题。我几乎可以肯定我在更新后通过 USB 和 Wi-Fi 建立了 ADB 连接,直到它停止工作。为了解决这个问题,我更新了我的 SDK:

android update sdk --no-ui

现在我的开发工具是:

SDK 版本 16.0.2 SDK 工具 21.1 版 SDK API 17,第 2 版

【讨论】:

"'android' 未被识别为内部或外部命令、可运行程序或批处理文件。" -- 还从我的 C: 驱动器的根目录执行了“dir android.exe /s” -- 什么也没找到 -- 你使用的是 Linux,还是有一些我们 Windows 用户没有的特殊位?跨度> 是的,我使用的是 linux。 android 是 ./sdk/tools/ 下的一个 shell 脚本,它启动 android SDK Manager java 应用程序。 Windows SDK tarball 中必须有类似的脚本。 给出的命令可以在windows上使用,只要它是从你的path\to\android-sdk\tools\目录完成的 在 Windows 7 中,要从 ...\android-sdk\tools\ 目录发出命令并使其工作,请运行命令窗口“以管理员身份”。 它适用于 Nexus 10 和 Galaxy Nexus。我正在使用 Windows XP SP3。我尝试更改 USB 端口,重新启动,etx .. 除了这个答案没有任何帮助。我差点要重新安装 xp,谢谢!【参考方案5】:

我不能强调切换 USB 端口是关键。通常前面板 USB 端口可能有缺陷。

【讨论】:

也为我工作。 Nexus 10 有时似乎会为 USB 端口消耗过多电流 哇,经过1/2小时的死胡同,原来这是USB供电问题!谢谢! 有时它不是有缺陷的端口。在我的情况下,我在 Windows 启动期间插入了 USB,但它没有正确加载 ADB 驱动程序。只是拔掉插头再插在同一个端口上。 Windows 奇迹... 有时切换端口会起作用。有时这是来自各种端口 + 电缆 + 设备组合的 USB2 与 USB3 支持的问题。从前端口切换到后端口,或者有或没有“SS”指示灯 (USB3) 的端口有时会有所帮助。尝试不同的电缆有时会有所帮助。 为我浪费了 8 个小时。由于某种原因(至少对我而言),它适用于 USB 3.0 但不适用于 USB 2.0。直到现在还没有遇到过这个问题,突然间我不得不使用 3.0。现在正在浪费我的 3.0 端口之一。【参考方案6】:

对于任何想了解 4.2.2 的人,手机上会出现一个安全问题,要求使用 PC 进行 RSA 验证。确保您的工具已更新,并且您通过验证相关设备上的安全问题来允许 PC 访问。这为我解决了问题。

和往常一样,请确认您已在开发人员选项中启用调试;)

【讨论】:

一旦我撤销了 USB 调试授权,它就对我有用。然后禁用并重新启用 USB 调试。弹出“允许这台计算机”消息,然后 BAM,它显示为设备而不是离线。【参考方案7】:

尝试关闭 USB 调试一次,然后重新启用它,然后将您的设备与系统连接:link

【讨论】:

这当然是最简单、最可靠、最快捷的方法。我在这个线程中使用了所有方法的许多变体。这是唯一一个每次都有效的。只需在安卓设备上轻按三下,问题就消失了。 这是唯一对我有用的方法,结合撤销 USB 调试授权。【参考方案8】:

多个 adb.exe 文件?

C:/Windows/ 中删除 OLD adb.exe 的副本后,我的问题得到了解决。 我不知道 adb.exe 的副本是如何到达 C:\Windows\ 的?

当我从 android-sdk/platform-tools/ 启动 adb.exe 时,检测没有问题。

【讨论】:

这就是发生在我身上的事。我认为我两年前为了安装 ROM 而下载的东西是罪魁祸首。 我的 Windows 8 遇到了同样的问题,将 c:\windows\adb.exe 重命名为其他名称 (adb.old.exe) 解决了该问题。我什至不需要重新启动或打开/关闭命令行。它只是工作。我在重命名旧的adb.exe 后立即输入了adb devices,然后我的 Nexus 7 询问我是否要授权这台计算机。我说是的,现在当我发出 adb devices 而不是“离线”时,它说的是“设备”。 谢谢,这个有效!同样的事情也发生在我身上,我认为当我们安装设备随附的驱动程序软件时,adb.exe 会被复制到 C:\Windows。 它是如何到达那里的:/ 我想知道 @DanielCheung 对我来说是在安装 KingORoot 和/或 KingRoot pc 程序时。我猜他们自己安装了一个版本,因为他们不依赖安装了 Android SDK 的用户。是的,删除它从 Windows 目录创建的旧 (1.0.26) 版本解决了我的“离线”问题。 :)【参考方案9】:

我遇到了这个问题,其他答案都没有帮助。在更新 SDK 并安装 4.2.2 的 API 后,需要运行的是:

android update adb

我遇到的另一个问题是我试图通过 Wi-Fi 连接 ADB,这是我唯一的选择,因为我的 Mac 上的 USB 端口真的很麻烦。不幸的是,ADB over Wi-Fi 没有显示 4.2.2 中的安全问题,因此您需要找到可以工作的 USB 电缆并通过 USB 连接至少一次以接受安全问题,但在您这样做一次之后,您可以通过 Wi-Fi 连接。

【讨论】:

这是为我做的。谢谢。自从更新我的 Nexus 7 后,我的头撞到了墙上。 我尝试了此页面上的所有内容以及 Google 发现的其他一些网站,而我运行 Android 4.0.3 的 HTC 手机仍然被列为离线。我终于重启了手机,然后 adb devices 说它在线。伙计,我希望我早点想到这一点。 我收到此错误:设备脱机,直到我找到您关于 wifi 的评论 - 一旦我将手机从 wifi 上取下,它就起作用了。谢谢!【参考方案10】:

如果您的设备通常通过 USB 连接,但突然停止工作,尤其是在 USB 电缆断开并重新连接后,请在执行其他答案中提到的一些更激烈的事情之前尝试以下非侵入性步骤:

adb kill-server
adb start-server
adb devices

如果您的设备旁边列出了“设备”,那么您就可以恢复营业了。

如果您的设备旁边列出了“离线”,请尝试重新启动设备。设备上的 ADB 守护程序有时会挂起。当我在LogCat 运行时断开电缆以及从通过 Wi-Fi 或以太网连接切换回来后,我注意到这一点更多。

如果您的设备未列出,那么您应该尝试其他答案中的解决方案,首先尝试使用不同的 USB 电缆和端口。那些便宜的电缆可能会变质。

【讨论】:

这有助于解决我的问题(android 模拟器显示为“离线”,但在按照描述重新启动服务器后,它又回到了“设备”模式)。 经过数小时的努力寻找 adb 不再工作的原因,实际上是电缆! 我不止一次被坏电缆咬过。坏电缆通常仍然可以很好地为设备充电,所以在尝试不同的电缆之前我也浪费了很多时间。 天哪,我已经尝试了所有解决方案,但最简单的解决方案 - 重新启动电话 - 并没有出现在我的脑海中。这解决了我的问题。 我不得不使用较短的电缆 - 我用来给手机充电的电缆太长了!【参考方案11】:

更新 SDK 工具后,请务必使用 platform-tools 文件夹中的 adb

在我意识到我使用的是在 /usr/bin 中复制的过时版本的 ADB 之后,我终于得到了这个工作。

【讨论】:

这个 usr/bin 在哪里?【参考方案12】:

我遇到了同样的问题,这对我来说是固定的。首先通过usb连接你的手机,然后确保你检查你的手机ip,它在设置>>关于手机>>状态下运行以下命令。

adb kill-server adb start-server adb tcpip 5555 //it resets port so put port you want to connect adb connect 192.168.1.30:5555 //ip:port of your mobile to connect adb devices //you will be connected over wifi

【讨论】:

adb tcpip 5555 not reset port 它只是为当前设备设置了一个默认端口,并且应该在连接到设备后以及下次通过 ip 地址连接到设备时进行,即使在 wifi 网络上它也不会'不需要端口【参考方案13】:

有时这可能是由于 adb 服务器错误(我认为)而发生的。它总是说

"device-name is offline" from adb devices command.

只需杀死服务器并重新启动。它对我有用。

"adb kill-server"
"adb start-server"

【讨论】:

【参考方案14】:

我使用了adb connect <device_ip> 并且没有其他解决方案有效,因为我的问题在另一边。在设备上我需要stop adbd 并重新启动它start adbd。设备现在再次“在线”。

【讨论】:

有一个亚马逊 Fire TV Stick,在通过 Wifi 连接时出现此问题。切换 adb 再打开,adb kill-serveradb start-server,然后 adb connect <device_ip> 如上所述对我有用。【参考方案15】:

我尝试了 dturvene 和所有其他解决方案,但没有奏效。我还需要一步。

运行这些命令

    adb kill-server android update sdk --no-ui adb start-server

要验证它是否有效,请在命令前后运行“adb version”,并确保它是最新的。 adb kill-server命令的原因是它很可能正在运行,并且在运行时无法更新,所以你必须先杀死它。

【讨论】:

【参考方案16】:

对我来说没有任何效果。我花了大约 12 个小时不断地在互联网上搜索并尝试对其他有类似问题的人有用的解决方案。

最后我只是通过 LAN 做 ADB 的事情。该设置就在 USB 调试设置旁边,在 ADB 中可以使用“adb connect [IPADDRESS]:[PORT]”激活它。我手机上的端口是 5555。

我希望这可以帮助某人重新开始工作,而不必处理不断的缺点。

【讨论】:

【参考方案17】:

这种方法对我有用:

    adb kill-server 在设备管理器中禁用离线设备(见下图) 在设备管理器中启用设备 adb start-server

设备管理器,“查看”菜单,“连接设备”:

【讨论】:

【参考方案18】:

安装了最新的android sdk。 更改了设备的 USB 端口。 从 MTP 更改 -> 仅收费 -> MTP。 它奏效了。

【讨论】:

对我来说,从“传输媒体文件”更改为“传输图像”(即 PTP/MTP)解决了问题(在尝试了所有其他修复后,包括升级 Android SDK、使用不同的电缆、重新启动ADB、循环开发者模式、将 USB 拔出/重新插入不同的端口等)。令人讨厌的是,这个答案的得分为 0,并且在我寻找答案时位于第二页,因此投票支持将来尝试帮助他人。【参考方案19】:

我最初遇到了同样的问题(使用从GitHub 下载的 ADB/fastboot),但我最终让它工作了。什么对我有用:

Android SDK。亚行版本:1.0.31 使用前置 USB 端口 (MacBook Pro 15") 启用开发选项和 USB 调试后重新启动手机(通过 7 次点击设置 > 关于手机 > 构建)。 在没有列出设备的情况下终止 adb 服务器 (adb kill-server) 调试图标应该在手机上可见。 请务必解锁锁屏以检查 RSA 指纹确认对话框。

【讨论】:

【参考方案20】:

如果您之前已授权您的 PC 的 RSA 指纹并尝试 adb kill-server 等但没有成功,您的问题可能只是您在锁定时尝试连接它。尝试按下屏幕开启按钮并输入您的模式 - 这为我解决了问题。

【讨论】:

【参考方案21】:

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

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

设备将重新联机。它更快。

【讨论】:

【参考方案22】:

对于 ADB 连接不稳定的人,如果他们在 Mac 上并安装了Android File Transfer,还有一种可能性:我发现文件传输干扰了我的 ADB 连接,导致它间歇性地停止工作。

杀死寻找连接到 Mac 的兼容设备(例如 Nexus 7)的 Android File Transfer Agent.app 进程可以解决我的问题。

【讨论】:

这是导致我在 OS X 上出现问题的原因,谢谢!【参考方案23】:

由于没有人回答我的情况:您可能无法访问 ~/.android/adbkey 文件。如果您最初使用 sudo 启动 adb,它将生成一个公钥对,将其写入 ~/.android/adbkey.pub 和 ~/android/adbkey。当然,私钥是 chmod 600 - 仅对您的主目录中的 root 用户可读。随后以普通用户身份启动 adb 将无法访问私钥文件,这反过来会以“设备脱机”静默失败。

【讨论】:

【参考方案24】:

在 Mac 上为我解决的问题是将 adb 更新到最新版本 (1.0.32)。现在我可以再次在线看到我的设备了

【讨论】:

【参考方案25】:

设备报离线的原因是adb连接不上。开发环境中的 adb 可执行文件创建与受控设备的连接(套接字)。设备有一个服务(守护进程)来监听这个通信。守护进程称为 adbd(如 adbdaemon)。 当在设备上启用 adb 时,实际上会启动此守护进程,因此可以与设备建立通信。

当设备被 adb 报告为离线是因为守护程序不再运行或处于不接受连接的状态。如果网络在活动(网络)连接上出现故障,通常会发生这种情况。

我可以解决此问题的唯一方法是重新启动设备。 可以通过许多其他方式来修复离线状态,但重新启动设备始终有效。

【讨论】:

【参考方案26】:

当我遇到与以下相同的问题时:

    通过在命令提示符中发出 adb kill-serveradb start-server 重新启动 adb 在手机上禁用并重新启用 USB 调试 如果仍然无法使用,请重新启动手机。 这些步骤解决了我 99% 的问题。

【讨论】:

4.尝试将电缆插入另一个 USB 插槽。这对我来说很有帮助。【参考方案27】:

我尝试了上述所有解决方案。大多数情况下, adb kill-server 会解决这个问题。这次,问题出在 USB 电缆上。包装精美的劣质电缆不起作用。

【讨论】:

这实际上也是我的答案。我不知道电力不足的电缆可以通知 ADB 设备在那里并且离线,但 not 允许您向它发出 ADB 命令。我使用的设备可能是异常值(大型 POS 设备) adb kill-server 解决了我的问题,谢谢!【参考方案28】:

我在尝试使用 Android 11 中内置的“无线 ADB”功能进行连接时偶然发现了这个问题。

我无法正确连接。始终显示为“离线”。

我所做的是:

首先断开所有 ADB 设备,作为一个很好的措施:

adb disconnect

然后在开发者选项中,进入“无线 ADB”功能(如果您还没有的话)。转到“使用 PIN 码配对”或类似内容。在那里,IP 和端口 将在对话框中弹出,并带有一个 pin。使用以下方式连接到手机:

adb pair 192.168.2.xxx:42838 # Put the IP and port of that dialog in this way

(请注意,主窗口和 PIN 弹出窗口上的 端口相同)

您的 (PC) ADB 将提示您输入密码。输入它并按 ENTER。

完成后,手机上的 PIN 弹出窗口应该消失,并且计算机名称应该出现在主窗口的受信任设备列表中。

如果你走到这一步,下一步肯定会奏效。现在尝试使用以下方式连接到您的手机:

adb connect 192.168.2.xxx:53548 # This time use the port shown in the main window!

它应该可以连接,你可以开始了。

【讨论】:

@e-info128 您只需在developer.android.com/studio/releases/platform-tools 下载并使用最新版本的 adb,如果使用 Windows 10+ 最新 Chrome + Android 11 设备,这是正确的方法。 【参考方案29】:

这只是因为您的计算机没有正确的驱动程序。要解决这个问题:

    下载并解压 Android SDK

    转到设备管理器(右键单击计算机 --> 属性 --> 设备管理器

    在右侧窗格中展开便携式设备以找到您的设备

    右键单击您的设备名称,然后单击更新驱动程序软件

    浏览我的计算机以查找驱动程序软件

    在步骤 1 中浏览到您的 Android SDK 文件夹。

    接下来就完成了

【讨论】:

我在 Windows 7 和 Nexus 7 上也是如此。它停止工作,我删除了驱动程序,再次安装它并且它工作了 在我的情况下,我的 USB 3.0 控制器驱动程序不起作用!不是手机的驱动程序!【参考方案30】:

尝试如下重启adb服务器:

adb kill-server

adb start-server

我也遇到了和你一样的问题。重启 adb 服务器即可解决此问题。

【讨论】:

以上是关于Android ADB 设备离线,无法发出命令的主要内容,如果未能解决你的问题,请参考以下文章

android adb命令使用

Android adb常用指令

adb命令无法连接安卓设备

adb 命令

Android 调试桥(adb)是多种用途的工具

Android 调试桥 (adb) 是 命令行命令--官方拷贝过来的,留作自己查看