ADB在MacOS X上找不到我的设备/手机

214

我正在Mac上进行Android开发,但是我手头这个非常新的手机却没有出现在adb设备列表中。其他许多手机和设备对我来说都很好用,所以我知道我的设置没问题。

我已经在手机上启用了调试(“设置”→“应用程序”→“开发”→“USB调试”),但是当我运行adb devices命令时,它就是没有显示出来。


对于任何遇到三星手机问题的用户,请注意:为了让电脑能够识别你的设备,你需要安装Kies。 - DevDave
9
在进行 USB 调试时,应该使用 PTP 模式而不是多媒体传输协议(MTP)。 - aurny2420289
设置->开发者选项->打开USB调试。 - WEBjuju
1
Q代表“非常新的手机”,我想补充一下,在我的情况下,这部手机实际上太旧了。它完全可以工作正常,而且并不是那么古老,但显然对我的Mac来说太旧了。 - Johanna
38个回答

410

重要更新: 正如@equiman指出的那样,有些USB电缆仅用于充电,不传输数据。有时候只需更换电缆即可解决问题。

更新:对于某些版本的adb,需要删除~/.android/adb_usb.ini文件。

执行摘要:将供应商ID添加到~/.android/adb_usb.ini中,然后重新启动adb。

详细信息: 大部分情况下,在Mac上识别手机/设备不需要进行任何操作。说真的,“99%的情况下它只是有效的”。

话虽如此,最快的重置adb的方法是按照以下命令顺序重新启动它:

  adb kill-server
  adb devices

有时候,adb devices 命令无法找到你的设备。也许你正在使用一些实验性、原型或非常规设备,它可能是未知的,因此无法显示。

你可以通过告诉 adb 你设备的“厂商 ID”来帮助其找到你的设备,从而提供一个提示。这可以通过将十六进制的厂商 ID 放入文件 ~/.android/adb_usb.ini 中来完成。

但首先,你需要找到厂商 ID 的值。幸运的是,在 Mac 上这很容易。启动 系统信息 应用程序。它位于 /Applications/Utilities/ 文件夹中,或者你可以通过屏幕左上角的 Apple 菜单,选择“关于本机”,然后点击“更多信息...”按钮进入。截图如下所示:

System Information, Hardware USB tree

展开“硬件”树,选择“USB”,然后查找目标设备。在上面的示例中,我的设备名为“SomeDevice”(我在 Photoshop 中这样处理的,以隐藏真正的设备制造商)。另一个示例是三星平板电脑,它显示为“SAMSUNG_Android”(顺便说一下,我没有采取任何特殊措施来使三星平板电脑工作)。无论如何,请单击你的设备,完整的详细信息将显示在下面的窗格中。这是它列出厂商 ID 的位置。在我截图的示例中,该值为0x9d17 -- 在下一个命令中使用此值。

echo 0x9d17 >> ~/.android/adb_usb.ini

如果您在执行此操作之前没有 adb_usb.ini 文件,也没关系,大多数情况下不需要该文件即可找到您的设备,因此该文件不存在是很常见的。以上命令将创建它,如果它已经存在则将其追加到底部。现在运行上面列出的命令以重新启动adb,然后您就可以开始使用了。

adb kill-server ; adb devices

* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
123ABC456DEF001 device

38
对我来说,那就是电缆 - 非常感谢。 - Dan Green-Leipciger
14
是电缆的问题,我简直不敢相信,所有随Indipad平板电脑附带的电缆都不能用! - Sfp
7
对我来说,问题也是电缆!我一直在搜索有关驱动程序和配置文件的内容,但问题只是出在电缆上!谢谢您提供的额外更新。 - darksider
7
这里也有电缆问题。谢谢! - JakobMiller
6
别小看那根电缆!试过所有的方法,结果发现是电缆的问题! - zilla
显示剩余28条评论

63

针对 Nexus 4 和 Nexus 5 在 OS X 上的解决方案

当我运行 adb devices 命令时,设备列表中没有任何设备被列出。

解决方法:

  1. developer.android.com 下载 SDK(最新版本)
  2. 在 Nexus 4 上开启开发人员模式( About Phone > Build Number > 点击7次进入 Dev Mode)
  3. 'Settings' 中会出现一个新的菜单选项:{ } Developer Options
  4. 确保你在 { } 开发者选项下勾选了以下内容:
    • USB 调试:USB 连接时调试模式(接受 RSA 指纹弹窗)
    • 通过 USB 验证应用:检查通过 ADB/ADT 安装的应用程序是否存在有害行为

尝试使用 ./adb devices 命令列出您的设备,它应该可以工作。

参考自:Any idea why adb does not recognize my nexus 4 on mac


非常感谢!这就是我要说的了 ;) - Yves M.

43
如果您安装了EasyTether应用程序,则可能会干扰ADB。您可以从此页面执行以下命令:
sudo kextunload /System/Library/Extensions/EasyTetherUSBEthernet.kext 

这将卸载您的EasyTether扩展程序。

如果您需要重新启用EasyTether进行网络共享,我相信您可以使用:

sudo kextload /System/Library/Extensions/EasyTetherUSBEthernet.kext 

这在我的三星Galaxy S2上起作用。在我的情况下,每次重启后执行kextunload命令是必要的。


1
该死,谢谢这个!我忘了三周前安装了这个垃圾! - Benoit Jadinon
非常感谢您...这正是我的问题所在。 - tylerjw
是的,这是一个令人头痛的问题。在将Easy Tether安装到Mac后,连接的Android设备未显示在Eclipse IDE中。当我执行sudo kextunload /System/Library/Extensions/EasyTetherUSBEthernet.kext命令时,也没有帮助我解决连接设备的问题...我还从系统偏好设置中删除了EasyTether网络连接。 - Android_kalai
以前从未安装过这个EasyTether,但在我禁用它之后,adb设备就可以正常工作了。现在我需要让fastboot设备也能正常工作... - Cristian
我很久以前使用过EasyTether,然后忘记了我已经安装了它。这对我很有帮助。 - vincent gravitas

35
如果您使用以下设备:
三星S3 GT-I9305(Android 4.1.2)
Mac OS 10.6.8
请执行以下操作:
# echo "0x04e8" >> ~/.android/adb_usb.ini
# adb kill-server
# adb devices

(如果您未使用三星设备,请将供应商ID“0x04e8”更改为您的供应商的正确值)

如果仍然无法正常工作,您可以尝试以下操作:

(1)在您的三星设备上禁用“ USB调试”,然后重新启用它 (并再次尝试adb命令)

(2)断开USB电缆,然后重新连接它

(3)卸载Samsung Kies

(4)安装Android File Transfer

(5)重新启动您的Mac和三星设备

(6)使用硬件设备测试您的Android应用程序

如果设备已连接但您突然拔出USB电缆,现在假设“adb devices”无法再看到您的设备, 即使是“adb kill-server”后,这种情况下,您可能需要尝试以下操作:

(1)关闭您的Mac电源
(2)在三星设备上禁用“ USB调试”
(3)关闭您的三星设备
(4)打开您的Mac电源
(5)打开您的三星设备
(6)在您的三星设备上启用“ USB调试”
(7)连接USB电缆
(8)运行“adb devices”
(9)现在应该能看到已连接的设备了


2
我本来想为这个答案点赞,特别是因为它提供了供应商的链接,但链接试图安装广告软件。我没有尝试其他链接,但我相信它们也会做同样的事情。 - Jim Gilmartin
这对我在Mediacom S2平板电脑上起作用。连接设备时,Console.app显示供应商ID:13/02/14 11:17:27,000 kernel [0]:USBMSC标识符(非唯一):0123456789ABCDEF 0x2207 0x10 0x222,2在这种情况下,供应商ID为0x2207 - psychowood
1
因为Android文件传输的链接是广告软件,所以被踩了。请使用以下链接:https://www.android.com/filetransfer/。 - kand
我正在寻找的是最新的10步骤程序。谢谢! - MaxSC
重启MacBook应该是所有操作的第一步。 - iammrmehul
显示剩余2条评论

34

我遇到了类似的问题。我发现在OSX中不支持MTP。

我把它改成PTP,然后我被要求批准我的笔记本电脑,然后我的设备终于被列出来了(LG G3)。

输入图像描述


1
LG G2,必须选择PTP。谢谢! - user1112008
1
Alcatel OneTouch Idol 3 默认为 充电 模式,但持续不断的 USB 调试已连接 通知却误导了我。我必须滚动屏幕以跳过这个具有误导性的开关,并打开 选择 USB 配置 菜单。 - AWrightIV
这对我有用 - 请注意,要进入此菜单,您可能需要启用USB调试,然后从顶部的通知栏中点击USB连接对话框,并从MTP切换到PTP。之后,您应该会看到一个对话框,确认连接到您的计算机。 - DiscDev
一样的事情!不得不在Nexus 5X上切换到“传输照片(PTP)”。 - soshial
对我来说,我需要将“用USB进行”从()传输文件更改为(*)USB网络共享。我从手机主屏幕的“通知”下拉菜单中访问了此选项。 - kris
LG G3 也有同样的问题 ;) - wzr1337

33

信不信由你,对我来说,更换USB电缆解决了这个问题。我一直在使用随意的电缆(它没有起作用),当我切换到一个带有实际Android设备的电缆时,它立即运行。

另一个好电缆正在工作的迹象是,Android文件传输应用立即启动,而这在劣质电缆中并未发生。


如果电脑偶尔无法检测到您的设备,将USB电缆插入不同的USB端口也可能解决“adb devices”问题。 - user908643
6
这对我也起作用了。简直不敢相信我浪费在这上面的时间有多长... - bengoesboom
我也遇到了同样的问题,但我不知道它是如何工作的。USB电缆就是USB电缆 - 充电功能完全正常,为什么ADB不能工作呢?这是一些怪兽级别的镀金电缆魔法 :( - VitalyB
曾经遇到过连接不上的电缆的所有人:你的手机是否弹出了“允许文件访问”的对话框,并进入了调试模式?还是只显示“通过USB充电”? - Tobi696
@Tobi696:对我来说,它只是通过USB充电,我没有收到任何进一步的对话框。换了另一根电缆后,它就可以正常使用对话框了。 - undefined

15

还请确保您不要使用专为充电而指定的USB电缆。这个问题曾困扰过我,而且它实际上标注着“仅供充电使用”。


我完全没有想到这个解决方案,但是我换了USB电缆后我的设备就出现了... :/ :/ - Ajeet Pratap Maurya
使用普通 USB,其中两个接触点用于数据,另外两个用于电源。那些“仅用于充电”的电缆可能通过省略数据连接来降低制造成本。 - mcduffee
谢谢,我也遇到了同样的问题。我一直在使用便携式充电器的USB转microUSB线,以为它是标准线,但我猜它实际上只能用于充电。我换成了普通的USB转microUSB线,然后就可以用了。 - Jordan

15

在我的情况下,是由于USB电缆。

我发现有两种类型的USB电缆:

  • 只能供电的电缆
  • 既能供电又能传输数据的电缆

而且很难知道一个USB电缆的类型。现在我给我的数据传输电缆打了个记号。


对我来说,90%的时间这就是问题所在。感谢您的反馈。 - deepelement

11

仅当我在手机上启用开发者USB调试后,此方法才适用:

在您的安卓手机上,进入“设置” > “关于手机”,然后反复点击“版本号”,直到启用“开发者选项”。


5
这个方法和点击“设置->开发者选项->USB调试”似乎解决了问题。我正在使用一款搭载5.0系统的AstroTab。谢谢! - Gene Bo
这对我来说非常重要。现在adb devices也显示了我的三星Galaxy A5 2015。 - jonashackt

9

对于无法使这些建议生效的用户的注意事项

尝试启动 Console.app 并在您插入设备时查看错误。我曾经遇到过以下错误:

# The IOUSBFamily is having trouble enumerating a USB device that has been plugged in. It will keep retrying.

这个问题在重启后仍然存在,所以我最终重置了我的PRAM,然后它又正常工作了。

如何执行PRAM重置

  1. 完全关闭你的机器。
  2. 短暂地按下电源按钮
  3. 同时按住Command + Option + P + R
  4. 等待第三次听到启动提示音
  5. 释放所有键并让机器继续完全启动

我有同样的问题:“IOUSBFamily在枚举USB设备时出现问题”。我尝试了所有可能的解决方案,甚至包括PRAM RESET。对我没有用:(还有其他建议吗?之前一切都正常,现在突然间我的3个设备都无法被识别。三星的可以充电,但Nexus 4甚至连这个都做不到。 - nia
非常感谢!我试了前六个答案,结果都不行。最终,你提供的解决方案确实很好用。你的解决方案应该被加到最高赞的答案里。 - MaximeBernard
@MaximeBernard - 你也遇到了Console.app错误吗?还是只是重置了PRAM? - Vik

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