Nexus 7在Windows 7 x64上通过USB不可被"adb devices"识别

182

我已经完成了显而易见的部分--最新的Android SDK中安装了USB驱动程序,并且平板电脑上已打开USB调试。

当连接Nexus 7时,设备将显示为"Android Phone" / "Android Composite ADB Device"在Windows Device Manager中,属性显示驱动程序版本6.0.0.0,因此正确的驱动程序已安装并正常工作。

这也证明设备处于USB调试模式,因为如果不是,则会在Windows下显示为"Portable Devices" / "Nexus 7"。

问题在于adb devices未显示任何设备,Eclipse(不出所料)也没有将Nexus 7作为硬件设备提供运行应用程序的选项。

我已经尝试重新启动两个设备,但无效。

我能想到的唯一调试方法是启用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*****

我做错了什么?

12
前往“设置” -> “关于平板电脑”。点击“版本号”七次。完成。 - Sharief Shaik
1
在您点击构建号7次后,您将在设置中看到一个名为“开发者选项”的新选项。从那里,我还需要启用USB调试。开发者选项> USB调试。 - Quazi Irfan
1
如果一切都失败了,值得尝试另一根USB电缆!我开启了开发者模式的USB调试,并尝试了所有存储USB选项,但只需更换一根电缆即可解决问题。 - David Douglas
17个回答

268
当 Nexus 7 连接电源时,会出现一个持久通知,指示“连接为 / 媒体设备 (MTP)”。在这种状态下,adb devices 不会显示 Nexus 或其他任何设备。不是很明显,但如果选择第二个选项“相机 (PTP)”,则可以调试设备(重点在于忽略相机,专注于 PTP 协议)。
此配置是持久的,并且我猜测对于全新的设备,它会连接为 MTP 直到另有更改。
感谢 @Ciaran Gallagher设置 --> 存储 --> 左上方选项(电脑 USB 连接)点击 --> 选择 MTP

38
如果其他人想知道如何切换到相机模式,可以按照以下步骤:进入“设置”,然后在“设备”部分点击“存储”,接着点击标题栏右侧的省略号,并选择“USB电脑连接”,然后在“连接类型”部分选中“相机(PTP)”选项,这样就可以了。请注意,我保持了原文的意思和语气,同时使翻译更加通俗易懂。 - Ciaran Gallagher
似乎无法在Nexus 7上使其工作。更改了连接类型,执行了adb kill-serveradb start-serveradb devices,但列表仍为空。 - Eugene
非常感谢这个提示!现在我的问题是,为什么在Nexus 7中需要这样做,而其他Android设备不需要呢?例如,您可以在MTP模式下使用GALAXY S3手机与ADB无问题地连接。它会显示为“adb devices”。那么为什么Nexus需要PTP呢? - OMA
1
@OMA 进一步更新:我需要拿起一台NVidia Shield并在上面测试我的应用程序,但它没有PTP模式。正如我预料的那样(考虑到我的其他设备都没有在该开发系统上以MTP模式显示),它没有出现。稍微调整一下.inf文件并删除和重新安装驱动程序最终让它能够在MTP模式下工作。我认为,将匹配的设备ID从“CompositeAdbInterface”切换到“SingleAdbInterface”可能是关键所在,尽管我不能完全确定。 - SomeCallMeTim
@CiaranGallagher - 不确定为什么允许两者都未选中的状态。不确定它是如何变成这样的... 但是我花了很长时间才找到正确的位置来修复它。谢谢! - Gishu
显示剩余3条评论

74

除了将USB连接/存储模式设置为“相机(PTP)”之外,我还需要启用开发者模式,该模式自4.2版本以来就被隐藏。

  1. 进入设置菜单,向下滚动至“关于手机/平板电脑”。点击它。
  2. 再次向下滚动到底部,您会看到“构建号码”。
  3. 连续点击七(7)次。第三次点击后,您会看到一个有趣的对话框,告诉您离成为开发人员只有四次点击之遥。不断地点击即可进入开发人员选项。
  4. 现在,在设置下面有“开发人员选项”。点击它。
  5. 点击“USB调试”以启用它。

来源:如何在Android 4.2上启用开发者选项


68

Windows 7/8的32位/64位 上修复/安装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


13

我发现你还可以进行设备管理器 -> 更新驱动程序软件 -> 浏览我的计算机以查找驱动程序软件 -> 让我从计算机上的设备驱动程序列表中选择 -> Android手机 -> [ADB驱动程序版本6在列表顶部附近...抱歉,我记不清确切名称]

当我这样做时,它连接了,我能够在Windows 7 64位上进行侧载版本4.2。


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”。


7
我遇到了类似的问题,并尝试了其他建议。最终,使用从http://www.junefabrics.com/android/download.php下载的PdaNet驱动程序解决了问题,使我能够通过ADB连接设备。在安装此处的驱动程序之前,我无法识别我的Nexus,也就无法将新的Android 4.2侧载到设备上。我正在运行Windows 7 64位和我的Nexus 7。

5

试试这个。如果你的设备没有被检测到,请使用 PdaNet。你可以从这里下载它:这里。下载并安装在你的计算机上。连接你的手机,它会自动从互联网上检测驱动程序。


5

我曾遇到类似的问题,后来发现取消所有选项(包括MTP和PTP)可以让设备从我的电脑获取RSA指纹,此后"adb devices"命令就可以正常使用了。

需要注意的是,在Android 4.2以上版本中,必须先接受RSA指纹才能通过ADB连接设备,这显然是为了安全考虑。


1
在我的情况下,我有两个问题:
  1. 我的电脑之前安装了“三星Galaxy II”驱动程序,并将其分配给了我的Nexus 7。我需要多次卸载它。最终,我能够绑定正确的Nexus 7驱动程序。

  2. 需要设置PTP选项。


1
我曾经安装了HTC One的驱动程序,我认为这就是它无法工作的原因。然而,后来我发现问题出在我同时禁用了MTP / PTP。

我一开始没找到设置的地方,但后来我找到了如何配置您的Nexus 7上的USB

这对我来说很困惑,它位于存储选项卡中。MTP或PTP任意一个都可以使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接