为什么Eclipse和ADB无法识别我的安卓设备?

17

我的设备是安卓2.1版本的Alcatel OneTouch 890。我在/etc/udev/rules.d文件夹中的51-android.rules文件中进行了配置。

我的操作系统是Ubuntu。

我启用了设备的USB调试模式。

HTC和Samsung设备可以被检测到,但我的Alcatel不能被检测到。

以下是我的51-android.rules文件内容。

#HTC
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0bb4", MODE="0666"
#samsung 
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}==”04e8”,ATTRS{idProduct}=="689e", MODE="0666",OWNER="abcd"
#alcatel
SUBSYSTEM=="usb", SYSFS{idVendor}=="1bbb", MODE="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="1bbb", MODE="0666"


root@abcd:/home/abcd# lsusb
Bus 005 Device 002: ID 0461:4d15 Primax Electronics, Ltd Dell Optical Mouse
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 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 006: ID 1bbb:00f2 T & A Mobile Phones  // what is T & A in this line....?
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@abcd:/home/abcd# Android/android-sdk-linux_86/platform-tools/adb devices
List of devices attached 

你尝试过在Eclipse旁边启动DDMS吗?这对我有时候很有效。 - Maggie
不好意思,您能否再详细描述一下呢? - Noby
前往你的Android SDK文件夹,打开tools,启动ddms。在ddms中,你的设备应该被识别。一旦它被识别,Eclipse也会识别它。 - Maggie
我的工具文件夹里没有DDMS..!但是在Eclipse中我有一个名为DDMS的窗口..!而且我的设备也无法识别..! - Noby
可能是为什么ADB Ubuntu无法识别我的设备?的重复问题。 - TuGordoBello
显示剩余5条评论
9个回答

13

首先,检查您在udev规则中使用的引号类型。看起来你可能使用了非ASCII双引号。请注意usbusb_device等周围引号之间的区别。

SUBSYSTEM=="usb", SYSFS{idVendor}=="1bbb", MODE="0666"
SUBSYSTEM==”usb_device”, SYSFS{idVendor}==”1bbb”, MODE="0666"

你也可以像@JeremyD建议的那样,只需使用sudo和ADB,这样做将使得这个文件基本上无关紧要。

其次:

  1. 编辑~/.android/adb_usb.ini(或者如果你正在以root身份运行,请检查/root/.android
  2. 如果文件已经存在,请在末尾添加0x1bbb;否则执行: echo 0x1bbb >> adb_usb.ini
  3. adb kill-server
  4. adb start-server
  5. 检查adb devices的输出,查看是否有您的设备

希望这能帮到你。


您可以在以下位置找到~/.android/adb_usb.ini...? - Noby
"~"是Linux中代表用户主目录的简写方式。例如,在cd命令中,你可以直接使用它。 - Joel F
如果您的Linux用户名是“noby”(例如),那么您肯定应该有一个名为/home/noby/.android的目录。如果该目录中不存在adb_usb.ini文件,则只需创建它,并将0x1bbb作为唯一内容。 - Joel F
这是正确的答案,但是对于将adb以root身份运行作为一个选项表示不赞成给予-1分。 - Chris Stratton
@StefanAnca - 您真的不应该以root权限运行Android工具,因此无需为root创建.android文件。 - Chris Stratton
显示剩余5条评论

7

阿尔卡特OneTouch 891 - Android 2.1

阅读这些有用的提示和其他有关设置Android设备的帖子,我写下了一份逐步教程,介绍如何准备好设备。

编辑~/.android/adb_usb.ini文件,在底部添加0x1bbb行。

这将列出:

$ adb devices
List of devices attached
???????????? no permissions

使其工作的步骤:
将自己添加到组中
为您的发行版安装一个51-android.rules软件包,然后打开该文件:
/etc/udev/rules.d/51-android.rules



** 如果没有,请列出软件包文件并找到此文件。


在一个名为OneTouch或任何您想要命名的注释部分下添加以下部分:

SUBSYSTEM==”usb_device”, SYSFS{idVendor}==”1bbb”, MODE="0666"

因此,结果将会是:
# Alcatel OneTouch 891
SUBSYSTEM==”usb_device”, SYSFS{idVendor}==”1bbb”, MODE="0666"

保存文件!
将设备的USB插头拔出并重新插入几次,然后重启adb守护进程:
根据不同发行版操作系统执行以下命令:

  • Archlinux

    $ rc.d restart adb

  • Ubuntu、Redhat、Fedora、CentOS

    $ service adb restart

或手动执行以下操作:

$ adb kill-server
$ adb start-server

$ adb devices

将列出您的设备。

最后:

在 bash 中显示我的结果:

$ adb devices
List of devices attached
0123456789ABCDEF 设备

  • 如果仍然没有结果: 运行此命令:

    $ udevadm trigger

然后重新插入设备。 或者简单地重新启动。

证明:


Dalvik:
http://wstaw.org/m/2011/11/13/plasma-desktopos8794.jpg
文件管理器:
http://wstaw.org/m/2011/11/13/plasma-desktopgt8794.jpg


非常有用的帖子Bo。你知道我怎么在Windows 7上启用它吗?我尝试在.android/adb_usb.ini中添加0x1bbb,但没有成功。 - Tomislav Markovski

4

在关闭Eclipse后尝试终止并重新启动adb服务器。

所以请尝试:

  1. 关闭Eclipse
  2. 进入platform-tools目录
  3. 执行:sudo ./adb kill-server
  4. 禁用手机上的开发调试
  5. 再次启用它
  6. 执行:sudo ./adb start-server
  7. 执行:./adb devices

应该可以正常工作。我遇到过这个问题多次,按照我给出的指示操作后就可以解决。

希望这有所帮助!

注:由于大部分Android开发人员已经转向使用Android Studio和其他模拟器,因此这种方法可能不适用。


当我看到这个答案时,我感到很高兴,但它仍然无法正常工作...! - Noby
root@fstech032:/home/fstech/Android/android-sdk-linux_86/platform-tools# sudo ./adb kill-server root@fstech032:/home/fstech/Android/android-sdk-linux_86/platform-tools# sudo ./adb start-server
  • 守护进程未运行。现在在端口5037上启动它 *
  • 守护进程成功启动 * root@fstech032:/home/fstech/Android/android-sdk-linux_86/platform-tools# ./adb devices 连接的设备列表
root@fstech032:/home/fstech/Android/android-sdk-linux_86/platform-tools#
- Noby
嗯...真奇怪。在Eclipse中,你的设备是否出现了问号?离线?或者在Windows > Avd管理器中根本没有任何东西? - Jeremy D
除了一个地方,我的手机没有被检测到。当我输入“lsusb”命令时,我的手机会被检测到,但其他地方都不行。 - Noby
你确认你在 51-android-rules 文件中所做的修改是正确的吗? - Jeremy D
呀,我改了引号! - Noby

3

就像我配置的那样,它仍然无法识别...! - Noby
1
你有Windows操作系统吗?如果有,请尝试将设备连接到计算机上,看看Eclipse是否能够识别它。 - Ahmed Salem
我是指如果您正在双启动。 - Ahmed Salem
我使用的是Windows7,我也遇到了同样的问题。Adb无法检测到我的手机,它和我的手机型号一样。我在c:\user\tome.android\adb_usb.ini中添加了0x1bbb,但没有成功。 - Tomislav Markovski

1

我知道被采纳的答案对于提问者是有效的,但是对于未来遇到这个问题而上面的答案不起作用的人们,以下方法对我有用:

这是一个通用 udev 规则 -

ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"

来自这个问题 - ADB在Ubuntu 12.04中未检测到三星i777设备

帮助我解决了“BLU Dash Jr”手机(供应商= Spreadtrum)上的问题,如我在相关问题中提到的:

Spreadtrum(供应商ID 1782)连接adb时出现问题


1
对于那些有兴趣在CentOS上找到adb识别设备的长期解决方案的人,我找到了一个解决方案。
首先,以root身份运行adb不是一个好的解决方案,因为adb可能会被任何用户在任何时刻重新启动;即使IDE自动重新启动adb,然后adb又变成盲目的了。
我的解决方案是创建一个名为“adb”的组,并将我的用户添加到该组中。 然后在51-android-rules中添加GROUP,如下所示:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666", GROUP="adb"
重新加载udev规则。 如果您正在使用gnome会话,请重新启动会话,因为gnome会保留关于您的组的缓存...
打开一个新的xterm终端窗口,验证您是否属于adb组:$ groups
然后$ adb devices应该启动adb服务器并识别您的设备。

1

我也有一部阿尔卡特手机,我通过以下方式解决了这个问题:

1.#lsusb

总线002 设备021: ID 18d1:0002 谷歌公司。//这是我的阿尔卡特手机

2.在/etc/udev/rules.d/51-android.rules中添加以下内容:

SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="0002", MODE="0666"

注意:我注意到需要添加“idProduct”以匹配所需的“idVendor”。

3.#sudo service udev restart

4.拔掉手机,再次插入。

5.#adb devices

已连接设备列表

TCL-Martini 设备


0
请确保在您的设备上将 USB 接口设置为 MTP 或 PTP。有时默认情况下会使用大容量存储接口,似乎 adb 没有被授予访问设备的权限。

0

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