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

昨天我在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设备文件。

第一个解决方案如下:

  1.   sudo killall adb    //终端命令,杀掉所有运行的adb服务
  2.   断开设备
  3.   等几分钟后重新插上设备
  4.   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。

转载于:https://www.cnblogs.com/perryxiong/p/3522278.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值