ChatGPT解决这个技术问题 Extra ChatGPT

Nexus 7 通过 Windows 7 x64 的“adb 设备”在 USB 上不可见

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

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

这也证明设备处于 USB 调试模式,因为如果不是,它会显示在 Windows 的“便携式设备”/“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*****

我究竟做错了什么?

转到设置 -> 关于平板电脑。点击“内部版本号”七次。瞧。
点击内部版本号 7 次后,您将在设置中看到名为“开发人员选项”的新选项。从那里我还必须启用 USB 调试。开发人员选项 > USB 调试。
如果一切都失败了,值得添加尝试另一条 USB 电缆!我开启了开发者模式 USB 调试并尝试了所有存储 USB 选项,但只需简单更换电缆即可。

C
Community

插入 Nexus 7 后,会持续显示“CONNECT AS / Media Device (MTP)”通知。在这种状态下,adb devices 不会显示 Nexus,或者毫无疑问是任何其他设备。不是很明显,但是如果您选择第二个选项“摄像头 (PTP)”,则设备可用于调试(课程是忽略摄像头,并专注于协议 PTP)。

这种配置是持久的,我猜测使用全新的设备它将作为 MTP 连接,除非另有说明。

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


对于想知道如何切换到相机模式的其他人,请转到“设置”,然后在“设备”部分中,单击“存储”,然后单击标题窗格右侧的椭圆,然后单击“USB计算机连接”,然后在“连接为”部分,选中“相机(PTP)”选项,然后它将工作。
似乎无法使其在 nexus 7 上运行。更改了连接类型、adb kill-serveradb start-serveradb devices,但列表仍然为空。
非常感谢这个提示!现在我的问题是,为什么这在 Nexus 7 中是必要的,而在其他 Android 设备中却不是?例如,您可以在 MTP 模式下将 ADB 与 GALAXY S3 手机一起使用,没有问题。它显示为“adb devices”。那么为什么 Nexus 需要 PTP 呢?
@OMA 我绝对可以肯定,直到大约一个月前,adb DID 在我的开发系统上的两个 Nexus 7 设备上都可以在 MTP 模式下完美运行。事实上 adb STILL 在我的旧开发系统上仍以 MTP 模式工作。它同时在我的两台 Nexus 7 设备(2012 年和 2013 年)上开始失败,这表明 Windows 方面发生了变化。我在 Kindle Fire HDX adb 驱动程序开始失败时安装了它。巧合?
@OMA 进一步更新:我需要拿起一个 NVidia Shield 并在上面测试我的应用程序,但它没有 PTP 模式。它没有像我预期的那样出现(鉴于我的其他设备都没有在该开发系统上以 MTP 模式出现)。稍微摆弄 .inf 文件以及删除和重新安装驱动程序最终让它在 MTP 模式下工作。我认为将匹配的设备 ID 从“CompositeAdbInterface”切换到“SingleAdbInterface”就可以了,尽管我不能发誓。
P
Peter Mortensen

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

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

来源:How to enable developer settings on Android 4.2


D
Danpe

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

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

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

https://i.stack.imgur.com/XZIir.png


P
Peter Mortensen

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

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


P
Peter Mortensen

我在 Windows 7 x64 上使用 Nexus 7 (4.2)。这里描述的其他方法都不适合我。该选项卡已处于 PTP 模式。最后,当我将以下行添加到 \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。


u
user1821949

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

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

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


s
seattleandrew

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

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


P
Peter Mortensen

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


u
user1908464

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


P
Peter Mortensen

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

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


P
Peter Mortensen

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

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


P
Peter Mortensen

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

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

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


P
Prophet

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


G
Gilson

我在 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 个设备功能。

https://i.stack.imgur.com/1eKZY.png

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


C
Community

完整清单:

在设备上启用调试 选择 USB 连接作为 PTP(相机) 从 http://developer.android.com/sdk/win-usb.html 安装驱动程序


C
Chris Brown

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


J
Jack Ukleja

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