Ubuntu:Android设备debugging

我有一个HTC Desire,我想debugging和运行我的Android应用程序。 但是当我在Eclipse中获取窗口,我可以在设备之间进行select我的HTC Desire列出只有问号(????????)。 我究竟做错了什么?

我试过这个:

在我的设备上启用USBdebugging,并在我的应用程序Manifest.xml文件中启用debugging。

在terminal我有这样做:

  1. 以root身份login并创build此文件:/etc/udev/rules.d/51-android.rules。
  2. SUBSYSTEM ==“usb”,SYSFS {idVendor} ==“0bb4”,MODE =“0666”
  3. sudo服务udev重启

还有什么我可以尝试或忘记?

Solutions Collecting From Web of "Ubuntu:Android设备debugging"

您需要使用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和产品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 commmand中的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。

我已经设法让我的“砖砌”的Nexus S通过做这里说的再次工作。 虽然有一小部分是必要的。

当你做一个lsusb和USB子系统告诉你哪个Android设备连接,我的回报:

 $ lsusb Bus 001 Device 006: ID 18d1:d001 Google Inc. 

注意d001而不是任何已知的状态,即4e20,4e21或4e22。 所以我所做的就是在51-android.rules添加另外一行,特别是这个未知的状态,并将其标记为“恢复/调试”。

断开并重新连接Android。 再次检查lsusb以确保至少可以看到它。 而…这给了我这个

 $ adb devices List of devices attached 34353601BB2000EC recovery 

而不是这个

 $ adb devices -l List of devices attached ???????????? no permissions usb:1-3 

之后,我只是按照如何恢复工厂图像 。 希望能帮助到你。

这是因为你没有给你的adb权限来访问你的硬件。 你有两个解决方案:

临时 – >杀死所有现有的adb进程,并重新启动超级用户

 ps -ef | grep adb | awk '{print $2}' | xargs kill sudo adb server-restart 

要么

 sudo <your android SDK path>/platform-tools/adb server-restart 

永久 – >添加你的设备到udev列表添加以下行到你的/etc/udev/rules.d/51-android.rules 作为root用正确的idVendor使用这个列表 。

 SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" 

接下来是以下命令:

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

如果adb不起作用,请执行以下操作:

 sudo ln -s <your android SDK path>/platform-tools/adb /usr/local/sbin/adb 

确保你安装了sudo apt-get install android-tools-adb现在检查sudo adb它会显示adb的帮助

现在请杀死/启动adb使用下面的命令 –

sudo adb kill-server sudo adb start-server

最后,sudo adb设备

希望这会工作!