我在调试模式下连接HTC Wildfire A3333和我的Fedora Linux 17时遇到问题。Adb说:
./adb devices
List of devices attached
???????????? no permissions我的udev规则(第一条规则适用于三星,第二条规则适用于HTC,但不适用):
SUBSYSTEM=="usb",SYSFS{idVendor}=="04e8",SYMLINK+="android_adb",MODE="0666",GROUP="plugdev"
SUBSYSTEM=="usb",SYSFS{idVendor}=="0bb4",SYMLINK+="android_adb",MODE="0666",GROUP="plugdev"对于三星设备来说,一切都很好:
./adb devices
List of devices attached
00198a9422618e device我已经尝试了在一个类似的线程中给出的所有答案,但没有任何运气:Using HTC wildfire for android development
发布于 2013-01-23 19:36:49
这个问题的原因与系统权限有关(感谢@IsaacCisneros的这个建议)。不知何故,HTC Wildfire (或许还有其他公司)需要从系统中获得比三星设备更多的东西。简单的解决方案是以根用户身份运行Eclipse,但是这对于像Fedora这样的非sudo Linux系统来说并不是很合适。
我已经找到了另一种方法来实现同样的目标,这似乎更友好的用户和更少的安全漏洞,而不是运行整个IDE的超级用户特权。请注意,这仍然只是问题的一种解决方法。系统根目录的使用应该最小化,仅限于管理任务,并且“adb”被设计为使用没有SUID的普通用户帐户。尽管SUID的正确设置是非常安全的,但每增加一次权限都是一个潜在的系统安全漏洞。
1.设置adb二进制文件的所有权(所有者-根,所有者组- user_group):
chown root:user_group adb
2.使用SUID设置权限:
chmod 4550 adb
这应该会产生类似下面这样的结果(ls -llh):
-r-sr-x---. 1 root user_name 1.2M Jan 8 11:42 adb
在此之后,您将能够以根用户身份运行adb,尽管您将使用普通用户帐户。您可以作为普通用户运行Eclipse,您的HTC应该会被正确发现。
./adb devices
List of devices attached
HT0BPPY15230 device 发布于 2013-02-24 01:41:24
在Debian Wheezy的领导下,我也遇到了这个问题。我用sudo重新启动了adb守护进程:
sudo ./adb kill-server
sudo ./adb start-server
sudo ./adb devices一切正常:)
发布于 2013-10-10 17:28:57
我也有类似的问题:
$ adb devices
List of devices attached
4df15d6e02a55f15 device
???????????? no permissions调查
如果我运行lsusb,我可以看到我连接了哪些设备,以及在哪里:
$ lsusb
...
Bus 002 Device 050: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone ...
Bus 002 Device 049: ID 18d1:4e42 Google Inc. 这显示了我的三星Galaxy S3和我的Nexus7 (2012)已连接。
正在检查以下各项的权限:
$ ls -l /dev/bus/usb/002/{049,050}
crw-rw-r-- 1 root root 189, 176 Oct 10 10:09 /dev/bus/usb/002/049
crw-rw-r--+ 1 root plugdev 189, 177 Oct 10 10:12 /dev/bus/usb/002/050等。什么?这个"plugdev“组合是从哪里来的?
$ cd /lib/udev/rules.d/
$ grep -R "6860.*plugdev" .
./40-libgphoto2-2.rules:ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="6860", \
ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"
./40-libgphoto2-2.rules:ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", \
ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"(我已经把这些行换行了)
请注意GROUP="plugdev"行。另请注意,这不适用于其他设备ID:
$ grep -Ri "4e42.*plugdev" .(不返回任何内容)
修复它
好的。那么修复方法是什么呢?
添加规则
创建包含以下行的文件/etc/udev/rules.d/99-adb.rules:
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e42", ENV{ID_GPHOTO2}="1",
ENV{GPHOTO2_DRIVER}="proprietary", ENV{ID_MEDIA_PLAYER}="1",
MODE="0664", GROUP="plugdev"这应该是一行代码,为了提高可读性,我把它包装在这里
重新启动udev
$ sudo udevadm control --reload-rules
$ sudo service udev restart就这样
拔下/重新插入设备。
试试看
$ adb devices
List of devices attached
4df15d6e02a55f15 device
015d2109ce67fa0c devicehttps://stackoverflow.com/questions/14460656
复制相似问题