调试设备检测(ADB)无法使用。

30

我已经在我的Archos 43互联网平板电脑(Android 2.3.26)上打开了USB调试,但adb无法检测到设备。

我使用的是Kubuntu 11.04操作系统。

使用shell命令“lsusb”的输出结果:

michael@schlepptop777:~/.android_sdk/platform-tools$ lsusb
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0e79:1411 Archos, Inc. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

那么我的“供应商ID”是0e79,对吗?

接下来我创建了以下文件:

sudo kate /etc/udev/rules.d/51-android.rules

使用以下内容:

SUBSYSTEM=="usb", SYSFS{idVendor}=="0e79", MODE="0666"

设置完权限后:

sudo chmod a+rx /etc/udev/rules.d/51-android.rules

然后我保存并重新启动了udev:

sudo /etc/init.d/udev restart

即使完成了所有这些步骤,adb仍然无法显示我的设备:

michael@schlepptop777:~/.android_sdk/platform-tools$ ./adb devices
List of devices attached 
<empty line, because stackoverflow does not display this>

你尝试过重新启动ADB,然后断开/重新连接设备,重新启动计算机吗? - Stéphane
6个回答

33
在某些情况下,您还需要将供应商ID添加到此文件中:~/.android/adb_usb.ini
# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE. 
0x0e79

请注意,在升级SDK时,此文件可能会被覆盖,因此您可能需要之后重新编辑它。


2
谢谢,我刚刚使用了以下教程: http://www.archos.com/support/support_tech/updates.html?country=us&lang=en(部分:Android开发者的ADB(ARCHOS互联网平板电脑))这与您的建议相同 :) - Spitfire777
2
我总是忘记在 ID 前面加上“0x”。这真的很令人沮丧!!!非常感谢! - Albus Dumbledore
这对我没有起作用。其他答案和StackExchange上的类似问题的方法也都不起作用。 - Sander Heinsalu

7
Mageia 2
起初,我收到了一些类似于:
$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 

然后我发现我需要进行设置 | 应用程序 | 开发,并勾选USB调试复选框。
$ adb devices
List of devices attached 
???????????????? no permissions

尝试使用root身份,我得到了如下结果:

$ su -l
# adb devices
List of devices attached 
???????????????? no permissions

然后我意识到adb仍在以常规用户的身份运行。当我以root身份执行以下操作时:
# adb kill-server
# adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
A43-A44C0002-9BF80000-0C60C4CC-0D020027 offline

"

ADB for Android Developers (ARCHOS Internet Tablet)对我很有帮助,但最后我以root身份完成了这个操作:

"
# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device",
SUBSYSTEM=="usb", ENV{PRODUCT}=="e79/*", MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="e79", MODE="0666"
# udevadm control --reload-rules
# udevadm monitor
.
.
.
^C

监控命令很有帮助,因为它可以显示设备的连接、断开、路径等信息。

接着,我可以停止以root身份运行的服务器,并以普通用户身份启动它:

# adb kill-server
# exit
$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
A43-A44C0002-9BF80000-0C60C4CC-0D020027 offline

设备在“离线”状态下无法工作。为了解决这个问题,我不得不重启Archos 43。
$ adb devices
List of devices attached 
A43-A44C0002-9BF80000-0C60C4CC-0D020027 device

虽然我怀疑这些步骤是否必要,但为了安全起见,在重新启动后,我确保插入USB并选择仅充电之后才开启USB调试。我还禁用了WiFi和同步功能,但一旦它开始工作,adb仍然可以连接这些功能。
此时,下载我的应用程序成功了:
$ adb install bin/HelloWorld.apk 
2914 KB/s (157589 bytes in 0.052s)
        pkg: /data/local/tmp/HelloWorld.apk
Success

P.S.第二天,因为前一晚测试通过,我启动了开发系统并尝试再次连接。但是显示为“离线”状态。我在不重新启动Archos 43的情况下禁用了同步和WiFi,然后adb devices显示为“设备”状态而非“离线”。我不确定这意味着什么,但关闭这些东西可能确实具有重要意义。


2

我向一位SD卡读卡器借了一条电缆,但是它不能用于ADB,尽管它可以用于SD卡读卡器。我尝试了一根新电缆,结果ADB设备识别到了我的设备!


2
执行命令sudo /etc/init.d/udev restart后,您需要重新启动系统!我知道这听起来像Windows的行为,但在发现这个问题之前,我苦苦思索了3个小时。

1
不是真的。你可能需要关闭正在运行的adb服务器。 - Chris Stratton
1
在测试了其他所有命令将近半个小时之后,重启操作非常成功,谢谢;)也许还有其他方法,但对我来说它起作用了。 - Hugo

1

实际上,就像Aultbot一样,更换电缆对我也有用。很奇怪,因为当我突然使用ADB时,我已经使用了这个电缆几个小时。

此外,请确保在手机上接受连接(Android 4中的新安全功能)。

编辑:最近,adb服务出现了一些问题。如果未启动(使用netstat或类似工具进行检查,或在运行adb命令之前键入“set ADB_TRACE = 1”以获取调试消息),则请检查处理该错误消息的线程。一个常见问题是默认端口被其他应用程序使用(通过键入“set ANDROID_ADB_SERVER_PORT = 12345”更改端口后再运行adb命令)。


0
我使用的是Ubuntu 11.04,在连接Atrix设备时,唯一可行的方法是将USB连接模式更改为“Windows Media Sync”。这本身就很奇怪,尤其是因为在Windows上设置为媒体同步时,ADB无法连接。 或者您可以使用无线ADB。有一些小部件可以轻松启用wifi adb,它们会在小部件上显示IP地址等信息。 :)

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