问题描述
我有一个HTC Desire,我想调试并运行我的Android应用程序。但是当我在Eclipse中获取Window,我可以在设备之间进行选择时,我的HTC Desire仅列出了问号(????????)。我究竟做错了什么?
我试过这个:
在我的设备上启用USB调试,并在我的应用程序Manifest.xml文件中启用调试。
在终端我这样做:
-
以root身份登录并创建此文件:/etc/udev/rules.d/51-android.rules。
-
SUBSYSTEM == “usb”,SYSFS {idVendor} == “0bb4″,MODE = “0666”
-
sudo service udev restart
还有什么我可以尝试或忘记?
最佳解决办法
您需要使用sudo手动运行adb。如果您只是在没有sudo的情况下运行adb(或者如果您让Eclipse /ADT为您执行此操作),则它将没有查看您的设备所需的权限。
如果它已经运行,那么sudo adb kill-server和sudo adb start-server。
次佳解决办法
注意:EboMike接受的答案是不正确的。
我知道这是一个老问题线程,但我偶然发现它试图解决同样的问题。然而,接受的答案是不正确的。一旦正确设置了udev规则,就不需要以root身份运行adb服务器。
http://developer.android.com/tools/device.html中的第3步为您提供正确的分辨率。具体来说,使用以下行添加或修改/etc/udev/rules.d/51-android.rules:
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0666", GROUP="plugdev"
在这种情况下,0bb4是HTC的供应商ID。 0fff是Nexus One的产品ID。使用上面链接中的表格或lsusb来识别您设备的供应商ID&产品编号。例如
$ lsusb
Bus 001 Device 006: ID 18d1:4e22 Google Inc. Nexus S (debug)
18d1是此特定设备的供应商ID,4e22是产品ID。如果要为所有用户启用对此设备的访问,可以不使用”GROUP”定义。如果没有,请确保将自己添加到plugdev组中(如果您尚未加入)。创建此文件后,重新启动或重新加载udev。
udevadm control --reload-rules
如果您必须将自己添加到组中,则需要注销并重新登录。
使用“adb kill-server”杀死任何旧的adb服务器,插入您的设备并运行”adb devices”。这将重新启动服务器,您现在应该可以看到您的设备。不需要以root身份运行adb,即使只是为了启动adb服务器。除非绝对需要,否则以root身份运行通常也是一个坏主意。
第三种解决办法
adb devices
命令中的device-id实际上是使用android usb设备的序列号。
所以,如果从序列号中得到一个空字符串,它将显示???????????
在adb服务器源代码中:
static size_t format_transport(atransport *t, char *buf, size_t bufsize,
int long_listing)
{
const char* serial = t->serial;
if (!serial || !serial[0])
serial = "????????????";
因此,可能是您的adb服务器没有以root权限运行,或者您的USB设备不允许adb服务器读取。一个简单的检查将使用lsusb -v | grep iSerial,看看你是否可以获得Android设备的iSerial字段。
此外,有可能iSerial字符串在设备中没有准备好。我已经看到很多工程产品根本没有iSerial,或者所有设备都显示相同的设备ID。
有时,驱动程序将读取闪存中的一部分数据,该部分数据在设备之间进行唯一编程,以使其成为iSerial /设备ID。
第四种办法
我已经设法让我的”bricked” Nexus S再次通过这里所说的工作。但是,有必要增加一点。
当您执行lsusb
并且USB子系统告诉您连接了哪个Android设备时,我正在给我回复:
$ lsusb
Bus 001 Device 006: ID 18d1:d001 Google Inc.
注意d001而不是任何已知状态,即4e20,4e21或4e22。所以我所做的是在51-android.rules
中添加另一行,特别是这个未知状态,并将其标记为”recovery/debug”。
断开并重新连接Android。再次检查lsusb
以确保至少看到它。而且……这给了我这个
$ adb devices
List of devices attached
34353601BB2000EC recovery
而不是这个
$ adb devices -l
List of devices attached
???????????? no permissions usb:1-3
之后,我只关注了restoring the factory images的howto。希望能帮助到你。