我在Fedora Linux 17中以调试模式连接HTC Wildfire A3333时遇到问题。Adb说:
./adb devices List of devices attached ???????????? no permissions
我的udev规则(适用于Samsung的第一条规则适用,适用于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
造成此问题的原因与系统权限有关(感谢@IsaacCisneros的建议)。无论如何,HTCWildfire(也许还有其他)从系统中需要的东西比三星设备还多。一个简单的解决方案是将Eclipse作为root用户运行,但是对于像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
之后,尽管您将使用普通用户帐户,但您将能够以root用户身份运行adb事件。您可以以普通用户身份运行Eclipse,并且应该正确发现HTC。
./adb devices List of devices attached HT0BPPY15230 device