Android 4.2.2 - adb 离线,即使在 SDK 升级后

Posted

技术标签:

【中文标题】Android 4.2.2 - adb 离线,即使在 SDK 升级后【英文标题】:Android 4.2.2 - adb offline, even after SDK upgrade 【发布时间】:2013-02-10 23:05:49 【问题描述】:

编辑:已修复!看起来有很多可能的原因。我的是比较不寻常的一种……


我将 SDK 工具更新到 21.1,将平台工具更新到 16.0.1。通过adb version 验证我正在运行 v1.0.31。我的开发机器运行的是 Windows 7,x64。

我有四台 4.2.2 设备要测试,一台 Galaxy Nexus 带有未锁定的引导加载程序,但未植根,还有 Nexuses One、4、7 和 10,全部现货。

kill-server)后,PC 和设备本身。

已尝试使用不同的 USB 端口和电缆。我正在使用 SDK 中的标准“android ADB 接口”驱动程序,但也尝试了“Android Composite ADB Interface”和“Samsung Composite ADB Interface”驱动程序。我什至完全重新安装了 ADT 包中的 SDK。

奇怪的是,我的同事可以毫无问题地让弹出窗口显示在相同的设备上。我什至复制了他的 adb.exe 和 dll 并尝试了它,但它仍然无法在我的身上工作。他没有从捆绑包中安装;他以老式的方式将 ADT 安装到 Eclipse 中,但我怀疑这会有所作为。什么给了?!

编辑 26/02/2013,格林威治标准时间 16:41:平台工具 16.0.2 的更新刚刚发布。尚未更新 ADB(仍然是 v1.0.31)并且仍然认为设备处于离线状态,并且看不到 RSA 安全弹出窗口。

【问题讨论】:

您确定您使用的是更新后的 adb 二进制文件吗?在我的系统上,即使在更新后我也遇到了同样的问题,并发现我的 PATH 指向另一个安装了旧二进制文件的 Eclipse。尝试使用 cd 导航到带有 adb 的文件夹并从那里在本地运行它。 感谢@RaghavSood,但我的 PATH 指向 sdk 的平台工具文件夹。运行“adb version”确认它是最新版本的 adb。 我和你有同样的问题和同样的设置。我的 adb.exe 也是最新的,只使用一个帐户。你有没有更进一步?我的一位同事在我之前有这个设备,它对他有用。不过他在 OSX 上,而我在 Win 7 上。 '不要害怕@BlueVoodoo。当我有大量预 Jellybean 设备要调试时,我无法证明花费大量工作时间来修复它是合理的,但最终需要修复它,希望有人能找到解决方案......! 【参考方案1】:

原来我的ANDROID_SDK_HOME 环境变量指向一个不再存在的旧位置。它没有引起任何其他问题(奇怪的是),但它似乎一直在阻止 RSA 身份验证过程的发生。前一周我检查 PATH 变量时可能应该看到它,但没关系。

我通过运行以下命令并检查读数找到了奇怪的位置:

adb kill-server
set ADB_TRACE=all
adb nodaemon server

更新位置并重新启动我的电脑后,它现在工作正常。感谢所有回复的人。

【讨论】:

adb nodeamon 服务器应该做什么?似乎没有这样的命令。 为此感谢一百万。这也正是我的问题。我已将我的 SDK 移动到另一个位置,但忘记更新 ANDROID_SDK_HOME 环境变量。更新变量解决了问题! 你的解决方案对我有用,在这么多线程没有解决我的问题之后。此外,您还提供了一个强大的工具来调试任何未来的问题!非常感谢您的分享!【参考方案2】:

我发现的最佳解决方案是:

    使用以下命令检查您的 adb 版本:adb version 用于 Windows,./adb version 用于 Linux。 如果显示 1.0.29,请将其升级到 1.0.31,因为 1.0.29 不会响应 JB 4.2.X 它将解决您的设备离线问题。 如果您的系统已经有新的 adb(1.0.31) 并面临这个问题,在这种情况下打开 sdk 并将平台工具升级到 16.0.1 至少重新启动您的设备一次.. :) 它适用于所有设备...

【讨论】:

谢谢您-您的回答是唯一对我有用的回答。这有点棘手,因为我必须多次启动“SDK Manager”,每次升级一个步骤,直到我最终得到 platform-tools rev 16.0.2。之后我不得不断开并重新连接我的 USB 数据线 - 然后我的手机显示一个弹出窗口,要求我授权我的计算机。【参考方案3】:

我遇到了完全相同的问题,这对我有用:如果您在 Nexus 7 设备上创建了多个用户帐户,那么除非您登录到相同的设备,否则您将不会看到安全弹出窗口用于在设备上启用 USB 调试的帐户。这样做,当您看到弹出窗口时,请确保您选中“始终信任这台计算机”选项,然后它应该也适用于其他帐户。

【讨论】:

嗨@gammal,感谢您的回复。我在某处看到过这个问题,但就我而言,我必须测试的所有 4.2.2 设备都只有一个帐户。【参考方案4】:

ADB_TRACE 揭示了我的问题的答案(我的 Linux 系统上的 ~/.android 文件夹的权限问题阻止了密钥的生成)。非常感谢。

【讨论】:

【参考方案5】:

这肯定会奏效: 在平台工具中按住 shift 并右键单击。 在此处选择打开命令提示符。

adb kill-server

adb 设备

在电话上说“是”。

您的设备将被连接。

如果仍然无法正常工作,请尝试重新连接设备并再次检查 adb 设备

【讨论】:

【参考方案6】:

我这样做了,它可以在我的 Windows 8 上运行:

    打开计算机 -- 在文件管理器中管理 在系统工具/设备管理器上,删除所有现有的 android 相关项。 点击“扫描硬件改动”。 设备显示为警告标志。 右击设备,点击“更新驱动软件”。 选择 ANDROID_SDK_HOME\sdk\extras 作为驱动源。 在设备上,关闭 USB 调试,然后再打开(或多次)

哇,弹出窗口出现在设备中!

【讨论】:

我也重新启动了电脑,这对我有用!谢谢:)【参考方案7】:

多个 adb.exe 文件?

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

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

【讨论】:

【参考方案8】:

我遇到了同样的问题和设置。 Windows 7、x64、Eclipse Indigo、设备上的一位用户等。

我使用 v1.0.31 尝试了adb devices,但在任何情况下我都没有在设备上看到弹出窗口。我尝试了各种打开/关闭调试、来回插入 USB、重新启动设备等组合。没有任何效果。我还尝试将设备植根以手动复制指纹文件。但是,该设备无法修复(不推荐给任何人)。我有不止一个 Nexus 10,所以继续尝试其他的。

虽然我正在使用 bootcamp(在 Mac 笔记本电脑上使用 Windows),所以最后一次尝试是在 OSX 下尝试同样的事情。在第一次尝试从终端执行./adb devices 时,弹出窗口出现了。我接受了指纹,现在它可以在 OSX 中工作了。

我更喜欢 Windows 而不是 OSX,所以这不是一个理想的解决方法,因为我仍然无法让它在 Windows 中工作。我会密切关注这个问题的解决方案,但与此同时,我希望这可以帮助其他人解决训练营问题。

【讨论】:

看起来很有希望。看起来您的问题与一台Win7机器有关吗?我可以让 adb 在其他 Win7 电脑上工作,但不是我的……如果你有任何地方请告诉我!【参考方案9】:

在设备上关闭并重新打开 Android 调试。这给了我设备弹出窗口。

【讨论】:

我什至无法计算我尝试过的次数:-(【参考方案10】:

我正在运行 Windows 7,在 Nexus7 上有一个帐户。我必须实际选中“始终信任这台计算机”框才能使其正常工作。不管我有多少次接受弹出并选择确定。直到我最终选中该框,它才起作用。现在好了,被adb识别了。

【讨论】:

那太好了,但是当设备插入这台特定的 PC 时,设备上的对话框从未弹出,所以我什至没有“始终信任这台计算机”的选项。跨度> 我只能说从上面看是一样的。这些都是我为使我的工作而采取的所有步骤。 1.卸载此手机和以前使用的其他Android手机的所有驱动程序。 2. 此外,如果您安装了任何网络共享应用程序,请同时卸载它们(pda-net 等)。 3. 确保 Android SDK Manager 中的“所有”更新都已完成。 4.重启电脑和手机。 5. 插入手机并从 sdk 文件夹安装 Google 驱动程序。 6. 再次重启 7. 插入手机。在整个过程之后,我的终于工作了。【参考方案11】:

从三星 USB 驱动程序(Nexus Root Toolkit 附带的)切换到 Google 提供的 USB 驱动程序(通过他们的 SDK)对我来说是成功的。

【讨论】:

【参考方案12】:

我遇到了这个问题,并找到了答案:要么是我用手指粗了电话,要么没有注意,或者它根本没有弹出说这里是 RSA pubkey 检查以允许计算机,我一直处于离线状态。我遵循地图上的每一个方向,从在我的规则文件中有一个长列表到重新安装 ADB 50 次。是的,它确实需要是我拥有的 1.0.31 版本。如果这是您,请继续阅读....

断开您的设备。 假设您使用的是 BASH,请在终端中使用这些命令。

adb kill-server
sudo bash
cd ~
mv .android BAK.android

现在您已经有效地删除了初始 RSA 密钥,请确保在设备上启用了 USB 调试。重新连接设备并注意屏幕。确保选中“记住这台计算机”框。按确定。问题解决了。

【讨论】:

【参考方案13】:

我有同样的问题。不确定它是否适用,但您是否使用 adb 作为根?

对我来说杀死 adb 服务器并做:

sudo ./adb devices list

导致安全提示。在永久接受它并运行上面的命令后,我终于可以连接了。

【讨论】:

【参考方案14】:

我遇到了与 OP 相同的问题,但源自 C:\Windows 中的 adb.exe 副本,很像 user1269737 似乎没有。这在 Windows PATH 中具有优先权,因此无论我如何更新他的 SDK,它都无济于事,因为没有使用更新的 ADB。

有人告诉我,它可能是安装在那里的 Android Studio 捆绑包的一个版本(看图...)。我无法确认,因为: 1. 当前的 AS 捆绑包似乎没有这样做,并且...... 2. 我安装了很多捆绑 ADB(XDA 开发人员的东西)的 ROM 闪存器/工具。

所以我无法确认它是 Android Studio。

Protip:在 cmd 中使用 adb versionwhere adb 命令来检查您正在使用的版本以及正在运行的可执行文件

【讨论】:

【参考方案15】:

我尝试了所有这些方法,但仍然无法让 Windows 在我的 Android 设备上显示 RSA 提示符。几个小时后,这就是我的工作方式:

    通过 USB 将设备连接到 PC [Windows 键] + [R] > [类型] devmgmt.msc 在列表中找到您的设备 [右键单击] > 卸载 下载谷歌USB驱动包:http://developer.android.com/sdk/win-usb.html#top 将 zip 解压到桌面 返回 devmgmt.msc > [右键单击] 树根 > 扫描硬件更改 在列表中找到您的设备 [右键单击]您的设备 > 安装 > 选择/浏览文件 浏览到您解压到桌面的 usb_driver 文件夹 Windows 将使用 Google USB 驱动程序而不是您手机的驱动程序。

我的问题是 LG 驱动程序安装在 Windows 上。一旦我删除它并安装了谷歌驱动程序,它就可以完美运行。 RSA 提示立即显示。

【讨论】:

以上是关于Android 4.2.2 - adb 离线,即使在 SDK 升级后的主要内容,如果未能解决你的问题,请参考以下文章

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

即使在运行配置中指定,Eclipse 也无法找到 adb

即使在离线时如何缓存网页以在我的 android 应用程序中使用

怎样在Ubuntu下安装Android SDK/ADB

如何安装Android SDK和设置ADB

adb 常用操作命令