182

我已经做了很明显的事情——USB驱动程序是从最新的Android SDK安装的,并且平板电脑中的USB调试已打开。

连接Nexus 7后,设备在 Windows设备管理器中显示为“Android Phone”/“Android Composite ADB Device”,其属性显示驱动程序版本 6.0.0.0,因此正确的驱动程序已安装并正常工作。

这也证明设备处于 USB 调试模式,因为如果不是,它会显示在 Windows 的“便携式设备”/“Nexus 7”下。

问题是adb devices没有显示任何设备,而且Eclipse也(毫不奇怪)也不提供 Nexus 7 作为运行应用程序的硬件设备。

我已经重新启动了两个设备但没有效果。

我能弄清楚的唯一调试是 enable ADB_TRACE=all,但这什么也没告诉我:

mkh@MULE ~/AppData/Local/Android/android-sdk/platform-tools
$ export ADB_TRACE=all

mkh@MULE ~/AppData/Local/Android/android-sdk/platform-tools
$ adb devices
system/core/adb/adb.c::main():Handling commandline()
system/core/adb/adb_client.c::adb_query():adb_query: host:devices
system/core/adb/adb_client.c::_adb_connect():_adb_connect: host:version
system/core/adb/sysdeps_win32.c::socket_loopback_client():socket_loopback_client: port 5037 type tcp => fd 100
system/core/adb/transport.c::writex():writex: fd=100 len=4: 30303063 000c
system/core/adb/transport.c::writex():writex: fd=100 len=12: 686f73743a76657273696f6e host:version
system/core/adb/transport.c::readx():readx: fd=100 wanted=4
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 got=4
4f4b4159 OKAY
system/core/adb/adb_client.c::_adb_connect():_adb_connect: return fd 100
system/core/adb/adb_client.c::adb_connect():adb_connect: service host:devices
system/core/adb/transport.c::readx():readx: fd=100 wanted=4
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 got=4
30303034 0004
system/core/adb/transport.c::readx():readx: fd=100 wanted=4
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 got=4
30303164 001d
system/core/adb/sysdeps_win32.c::adb_close():adb_close: 100(lo-client:5037)
system/core/adb/adb_client.c::_adb_connect():_adb_connect: host:devices
system/core/adb/sysdeps_win32.c::socket_loopback_client():socket_loopback_client: port 5037 type tcp => fd 101
system/core/adb/transport.c::writex():writex: fd=101 len=4: 30303063 000c
system/core/adb/transport.c::writex():writex: fd=101 len=12: 686f73743a64657669636573 host:devices
system/core/adb/transport.c::readx():readx: fd=101 wanted=4
system/core/adb/transport.c::readx():readx: fd=101 wanted=4 got=4
4f4b4159 OKAY
system/core/adb/adb_client.c::_adb_connect():_adb_connect: return fd 101
system/core/adb/adb_client.c::adb_connect():adb_connect: return fd 101
system/core/adb/transport.c::readx():readx: fd=101 wanted=4
system/core/adb/transport.c::readx():readx: fd=101 wanted=4 got=4
30303030 0000
system/core/adb/transport.c::readx():readx: fd=101 wanted=0
system/core/adb/transport.c::readx():readx: fd=101 wanted=0 got=0

system/core/adb/sysdeps_win32.c::adb_close():adb_close: 101(lo-client:5037)
List of devices attached
***NOTHING SHOWN*****

我究竟做错了什么?

4

17 回答 17

268

When the Nexus 7 is plugged in there is a persistent notification that indicates "CONNECT AS / Media Device (MTP)". In this state adb devices will not show the Nexus, or undoubtedly any other device. Not exactly obvious, but if you select the second option "Camera (PTP)" the device is available for debugging (the lesson is ignore the camera, and focus on the protocol PTP).

This configuration is persistent, and I'm guessing that with a brand new device it will connect as MTP until told otherwise.

Thanks to @Ciaran Gallagher Settings --> Storage --> Top Left Option (Computer USB Connection) tap--> choose MTP

于 2012-08-16T16:29:51.960 回答
74

除了将 USB 连接/存储模式设置为“相机 (PTP)”之外,我还必须启用开发者模式,该模式从 4.2 开始就被隐藏了。

  1. 转到“设置”菜单,然后向下滚动到“关于手机/平板电脑”。点击它。
  2. 再次向下滚动到底部,您会看到“内部版本号”。
  3. 点击它七 (7) 次。第三次点击后,您会看到一个有趣的对话框,说您距离成为开发人员还有四次点击。继续点击,你就有了开发者设置。
  4. 现在在“设置”下有“开发者选项”。点击它。
  5. 点击“USB 调试”以启用它。

来源:如何在 Android 4.2 上启用开发者设置

于 2013-01-01T00:04:11.950 回答
68

Windows 7/8 32bit/64bit上修复/安装 Android USB 驱动程序:

  1. 将 Android 设备连接到计算机的 USB 端口。
  2. 从桌面或 Windows 资源管理器中右键单击计算机,然后选择管理
  3. 在左侧窗格中选择设备。
  4. 在右侧窗格中找到并展开其他设备。
  5. 右键单击设备名称(Nexus 7 / Nexus 5 / Nexus 4)并选择更新驱动程序软件。这将启动硬件更新向导。
  6. 选择浏览我的计算机以查找驱动程序软件,然后单击下一步。
  7. 单击浏览并找到 USB 驱动程序文件夹。(Google USB 驱动程序位于<sdk>\extras\google\usb_driver\.)
  8. 单击下一步安装驱动程序。

如果它仍然不起作用,请尝试从MTP更改为PTP

MTP -> PTP

于 2012-12-29T16:12:55.017 回答
13

我发现您还可以执行设备管理器->更新驱动程序软件->浏览我的计算机以查找驱动程序软件->让我从计算机上的设备驱动程序列表中选择-> Android手机-> [ADB驱动程序版本6靠近顶部名单...对不起,我不记得确切的名字]

一旦我这样做了,它就连接了,我能够在 Windows 7 64 位上侧载 4.2 版。

于 2012-11-16T01:37:02.363 回答
8

我在 Windows 7 x64 上使用 Nexus 7 (4.2)。这里描述的其他方法都不适合我。该选项卡已处于 PTP 模式。最后,当我将以下行添加到 <android-sdk>\extras\google\usb_driver 下的“android_winusb.inf”并执行“更新驱动程序”时,我可以让它工作:

%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&REV_9999&MI_01

要获取确切的硬件 ID(在我的情况下为 USB\VID_18D1&PID_4E44&REV_9999&MI_01),您可以转到计算机管理->设备管理器->详细信息选项卡 -> 从下拉列表中选择硬件 ID。

于 2012-12-19T14:08:43.163 回答
7

我有一个类似的问题并尝试了其他建议。

利用从http://www.junefabrics.com/android/download.php下载的 PdaNet 驱动程序最终完成了这项工作,并允许我最终通过 ADB 连接。在从这里安装驱动程序之前,我无法识别我的 Nexus,以便在我的设备上加载新的 Android 4.2。

我正在使用 Nexus 7 运行 Windows 7 64 位。

于 2012-11-13T20:20:49.487 回答
5

我有类似的问题,我发现取消选中所有选项(MTP 和 PTP)允许设备从我的计算机获取 RSA 指纹,然后“adb 设备”工作。

请记住,在 Android 4.2+ 设备可以通过 ADB 连接之前,必须接受 RSA 指纹,这显然是出于安全原因。

于 2013-08-21T02:21:40.760 回答
5

尝试这个。如果未检测到您的设备,请使用PdaNet. 你可以从这里下载。下载并安装在您的机器上。连接手机。它会自动检测来自 Internet 的驱动程序。

于 2012-08-15T18:27:26.947 回答
1

PDANet 驱动程序是我在 Windows 7 x64 上成功连接到 Google Galaxy Nexus 4.2.1 的唯一解决方案,它拒绝/忽略来自最新 4.2 ADK(修订版 7)的官方 USB 驱动程序 - http://junefabrics.com/android/索引.php

于 2012-12-16T22:06:09.960 回答
1

我也有一个 Nexus 7 和 Windows 7 64 位,并且大约一个月前在这个线程和其他线程中磕磕绊绊让 ADB 工作。然后它停止工作。我记得之前发生的唯一一件奇怪的事情是 Windows 在我启动时安装了一些蓝牙驱动程序(我没有蓝牙设备)。

这次我折腾了一天。现在它又开始工作了!我做的最后一件事是使用设备管理器“禁用”设备并重新启动。

于 2013-12-22T23:16:29.613 回答
1

我安装了HTC One驱动程序,我认为这是无法正常工作的原因。然而,事实证明,原因是我禁用了 MTP/PTP。

我没有找到设置的地方,但后来我找到了 How to Configure the USB on Your Nexus 7

这让我很困惑,它位于“存储”选项卡中。MTP 或 PTP 都适合我。

于 2013-12-28T22:54:03.153 回答
1

就我而言,我有两个问题:

  1. 我的电脑有一个以前的“Samsung Galaxy II”驱动程序并将其分配给我的 Nexus 7。我需要多次卸载它。最后我可以绑定正确的 Nexus 7 驱动程序。

  2. 需要设置 PTP 选项。

于 2013-04-23T18:59:38.580 回答
0

另一种选择是,如果您的 PC 上的 Windows 更新完全关闭。在这种情况下,即使您下载了 USB 驱动程序并尝试如上所述手动更新它,它也不起作用。在这种情况下,唯一的方法是启用 Windows 自动更新驱动程序。启用此功能后,请从设备管理器中删除不工作的驱动程序并通过 USB 电缆将平板电脑连接到 PC。驱动程序将由 Windows 自动下载和安装。这种方式适用于我的 Windows 7 PC。

于 2014-04-29T20:05:16.633 回答
0

我在 Win 7 64 位上,我看到大多数人在这里遇到同样的问题也在 64 位上。为了排除硬件和操作系统,我使用 VMware 在同一台 PC 上运行 Win 7 32 位。除了必须使用正确的 VID/PID 编辑 .inf 文件外,其他一切都在 Win 7 32 位上完美运行,这告诉我 PC 很好,Win 7 32 位也很好。

回到我的 Win 7 64 位,上面的建议都不适合我。但是我注意到一件事,ADB 安装在 Program Files (x86) 下,但驱动程序安装程序正在安装 64 位。Win 7 64 位将 Nexus 7 识别为 Android 复合 ADB 接口,但 ADB 未检测到它。

那么某处是否有 ADB 64 位版本?如果我的安装在 Win 7 64 位上的 (x86) 下,这是否意味着我在某处搞砸了安装。

我的问题是否与安装了 64 位的 USB 驱动程序但 ADB 是 32 位有关?

我在属性中安装 Nexus 7 USB 驱动程序时注意到的另一个问题我只看到用于设备功能的 Android 复合 ADB 接口。在 Win 7 32 位属性下显示 3 个设备功能。

赢 7 64b 赢 7 32b

看起来问题仍然是USB驱动程序。

于 2014-06-05T01:51:54.027 回答
0

完整清单:

  1. 在设备上启用调试
  2. 选择 USB 连接作为 PTP(相机)
  3. http://developer.android.com/sdk/win-usb.html安装驱动程序
于 2015-02-12T21:15:28.783 回答
0

在 PTP 之上似乎为我解决此问题的解决方案Always allow from this computer在允许 USB 调试时未选择。每次连接设备时撤销授权并手动接受为我解决了这个问题。( Settings -> Developer options -> Revoke USB debugging authorisations)

于 2015-06-15T08:48:01.380 回答
0

对于那些只Kedacom usb device在设备管理器中看到并且无法让 adb 看到手机的 Nexus 5x 的人......诀窍是Update driver...在 Kedacom 设备上并将其更改为“Android ADB 接口/设备”

于 2016-10-27T01:21:32.730 回答