您的位置:首页 > 移动开发 > Android开发

Android联机调试时,解决no permissions的方法

2014-01-16 12:01 267 查看
昨天我在Linux系统下进行Android的联机调试时,把手机插上,发现eclipse的DDMS里的devices列表居然是一串“?????”的字符串,换了台机器也是如此。

一直专注在iOS开发上,现在需要开发一个Android+phonegap的应用,困难重重。

问了公司那些专业从事Android开发的员工,也没有解决问题。

于是只有google能帮我了,查了一堆的方法,看了很多的文章。终于在stackoverflow下找到了方案,我采用的是第二种永久的解决方案。我转过来并用中文叙述一下,希望能帮助到遇到类似问题的朋友。

原文如下:

原文地址:http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

在linux系统下进行Android调试时,运行adb devices命令会出现"??????? no permissions"等字样,本博客就是专门解决这个问题的。这个解决方案已经经过测试,并能再Ubuntu Lucid下工作,但也应该可以在其他Ubuntu等linux版本中类似问题。

官方帮助中心有很多起作用和不起作用的答案和建议。这个问题的根本就是在USB调试时,当前用户没有足够的权限去操作USB设备文件。

第一个解决方案如下:

  sudo killall adb //终端命令,杀掉所有运行的adb服务

  断开设备

  等几分钟后重新插上设备

  sudo adb devices //终端命令,于是adb取得最高权限

另外,这里有一个长期的解决方案

1. 创建一个文件android.rules,比如/tmp/android.rules。粘贴下面的内容到android.rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"

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

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"


2.执行以下命令:

sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644   /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb


3.断开设备,几分钟后重新连接设备

最后运行下面命令,就可以发现设别有权限进行访问了

adb devices


注意的地方:

如果上面永久解决方案不起作用,那么可以尝试用USER="$LOGINNAME"来替代MODE="0666",$LOGINNAME是你的登陆用户名。你可以使用'-nu'命令来查看这个用户名。

在Ubuntu Precise版本中,文件名应该改成70-android.rules。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: