在ubuntu下执行adb devices命令, 返回的结果是:
List of devices attached
???????????? no permissions
或者
deviceid no permissions{}
方法一:
这意味着,USB连接的设备是能够被识别的。Google之后,得知adb server需要以root的权限启动,于是有了如下命令:
brian@brian-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ ./adb kill-server
brian@brian-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ sudo ./adb start-server
* daemon not running. starting it now *
* daemon started successfully *
第一条命令用来杀死当前正在运行的server, 第二条命令则以root的权限启动了新的server. 我们可以再次查看devices:
brian@brian-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ ./adb devices
List of devices attached
HT848KV04386 device
这次设备就被正确识别了。自然地, 像ddms之类的工具也能派上用场了。
方法二:
如果你的机器不能识别,或不是Ubuntu环境,请参考官方文档:http://developer.android.com/guide/developing/device.html。
$sudo vim /etc/udev/rules.d/70-android.rules
此处可能不存在70-android.rules或者其他**-android.rulues,参考方法三
查看你的手机是否在文件中
http://www.blogjava.net/brian/articles/316019.html
方法三:
执行sudo vim /etc/udev/rules.d/51-android.rules,使用下面的格式将各个供应商添加到文件中:
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0bb4",MODE="0666"
其中idVendor和idProduct的值可以通过lsusb命令查看自己设备对应的值填入。
文件写完后按Esc键到普通模式,输入:wq保存文件
接着执行
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo adb kill-server
然后拔掉usb重新接入,再次执行adb devices就可以了。
这种方式可能rules.d目录下并没有51-android.rules,没关系,新建一个即可。
有些文章说是70-android.rules,我这里使用的是51-android.rules,暂时不知道这个文件名有什么作用。
我最后是全程root环境执行成功的。