明天就是国庆了,七天的假期啊!!宝宝也想回家。可是,回家,没有票;出去玩,没有票;男票,回家了!不开心!只能在实验室调bug,苦命的人啊。
最近接触了一点Android 开发,需要连接真机进行调试,会用到adb这个工具(Android Debug Bridge)(adb是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备)。可是在Ubuntu12.04下连接设备以后,adb shell 总是提示device not found。有时候连上也会遇到Permission denied的问题,现将解决方法整理如下。
device not found解决办法
查看设备VID和PID
使用lsusb查看usb设备,找到自己的设备
123456789101112lxb@lxb-Lenovo:~$ lsusbBus 001 Device 002: ID 8087:8008 Intel Corp.Bus 002 Device 002: ID 8087:8000 Intel Corp.Bus 003 Device 017: ID 413c:2107 Dell Computer Corp.Bus 003 Device 029: ID 1bbb:a100 T & A Mobile PhonesBus 003 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hubBus 003 Device 004: ID 17ef:6019 LenovoBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 003 Device 005: ID 152d:2339 JMicron Technology Corp. / JMicron USA Technology Corp. JM20339 SATA Bridge我的是 Bus 003 Device 029: ID 1bbb:a100 T & A Mobile Phones ,其中1bbb是VID,后面的a100是PID,记住这两个值。
修改adb_usb.ini文件,写入VID
进入用户主目录,
12cd ~ls -al可以看到一个.android目录,进入该目录并找到adb_usb.ini文件,没有则创建之。写入VID。
1echo 0x1bbb> ~/.android/adb_usb.ini添加权限
更改/etc/udev/rules.d/70-Android.rules。
1sudo gedit /etc/udev/rules.d/70-android.rules添加以下内容至该文件。
1SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="a100",MODE="0666"引号中两个ID就是刚才lsusb中获取的ID。
更改权限
1sudo chmod a+rx /etc/udev/rules.d/70-android.rules重启USB服务
1sudo service udev restart重启adb服务
12345lxb@lxb-Lenovo:~$ adb kill-serverlxb@lxb-Lenovo:~$ adb start-serverlxb@lxb-Lenovo:~$ adb devicesList of devices attachedec4f3e40 deviceadb devices有设备说明adb安装成功。这时候adb shell则可以正常显示。
12lxb@lxb-Lenovo:~$ adb shellshell@M812:/ $
Permission denied解决方法
但是执行一些命令的时候发现会提示Permission denied。因为adb shell默认是没有root权限的,adb push一个文件就提示Permission Denied。删除system下的文件也没有权限。这里我介绍一种方法可以获取adb shell的root权限,但是前提是手机已经root。
用su可以提权,直接执行su就会看到用户命令提示符由”$”变成了”#”,如果手机没有root,会提示su: Permission Denied。
|
|
此时就可以执行你的命令啦!