使用51-android-rules解决ubuntu上不识别 android手机的问题

来源:互联网 发布:手机淘宝6.6.0版本 编辑:程序博客网 时间:2024/05/22 13:42

此文系转载:http://blog.sina.com.cn/s/blog_96a11ddf0101t56b.html

首先我们在编译完一个项目后,在项目的输出档中将会有一个adb文件

 /out/host/linux-x86/bin/adb

我们可以将此adb文件拷贝到我们/bin目录下,以便后续执行adb的操作

注意:

如果我们的编译项目是在服务器中编译出来的,我们可以直接从服务器中将其拷贝到本地的/bin目录下

htp1204@htp1204-VirtualBox:~/mrd7$sshlintao@server161
lintao@server161'spassword:
lintao@linux-cte:~/workspace/mrd7/out/host/linux-x86/bin$pwd
/home/lintao/workspace/mrd7/out/host/linux-x86/bin

Open a new terminel, and copy the adb file to themenu/bin

htp1204@htp1204-VirtualBox:~$ls
bin     Desktop   Downloads        ffrd10 Music    Public    testdavid           Videos
busybox  Documents examples.desktop mrd7   Pictures  Templates ubuntu_adb_fastboot
htp1204@htp1204-VirtualBox:~$cd bin/
htp1204@htp1204-VirtualBox:~/bin$ls
repo  repo~  start

进入bin目录下,并通过scp命令将服务器上的adb文件拷本到当前目录
htp1204@htp1204-VirtualBox:~/bin$scplintao@server161:/home/lintao/workspace/mrd7/out/host/linux-x86/bin/adb.

 

连上android真机, 在设置中打开usb debug,再在ubuntu中点击设备/分配USB设备中对应的android设备.

ctrl+alt+T, 打开终端, 进入/bin目录, 运行adb devices或adbroot,会发现不识别android设备的现象:

htp1204@htp1204-VirtualBox:~/bin$adb root
error: insufficient permissions for device

~~~~~~~~~~~~~~~~~~~~~~~~

在这里我们需要用到文件51-android.rules,就可以解决此问题.

 

为什么是“51-android.rules”?

     在Linux下进行Android开发,连接Android手机,可能会编辑到/etc/udev/rules.d/51-android.rules文件。

     那么,为什么这个文件要命名成51-android.rules,而不是其它的名字呢?

     详细的解释要求对udev子系统有一定了解。下面简要介绍一下udev。

     udev是Linux下的设备管理器,它支持即插即用,即自动识别新加入到系统中的外部设备,特别是USB设备。

     用惯Windows的人可能没有这个意识,因为Windows很早就支持即插即用,加入新设备一直都很方便。

     udev的一个特点是,它允许指定一系列响应规则,在它侦测到新设备加入的时侯,执行它们。

     udev要求将这些规则存储在/etc/udev/rules.d/目录下的文件中,该文件名必须以.rules结束。

     一些系统之中,udev默认的规则存储在/etc/udev/rules.d/50-udev.rules文件中。

     udev按照字母排序依次解释这些文件中的规则,因此,如果你希望自己添加的规则在默认规则之后处理,那么文件名开头必须大于50,比如51。

     这就是51-android.rules命名的缘由,它希望自己在默认的udev规则之后处理。

     另外,简要说一下USB的知识:

     一个USB设备由两个ID来标识,Vender ID和Product ID,VenderID由设备制造商向USB执行论坛申请,Product ID则由设备制造商自行分配。

udev 识别 android 设备 51-android.rules
首先使用lsusb查看设备的VID PID
创建/etc/udev/rules.d/51-android.rules,

127|root@android:/davidhu #busybox_arm lsusb
Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 004 Device 001: ID 1d6b:0002
Bus 005 Device 001: ID 1d6b:0001

 

将下载下来的文件51-android.rules拷贝到/etc/udev/rules.d/目录下

~~~~~~~~~~~~~~~~~~~~~~~~

htp1204@htp1204-VirtualBox:~$cd Desktop/
htp1204@htp1204-VirtualBox:~/Desktop$ls
51-android.rules
htp1204@htp1204-VirtualBox:~/Desktop$sudo cp 51-android.rules /etc/udev/
rules.d/  udev.conf 
htp1204@htp1204-VirtualBox:~/Desktop$sudo cp 51-android.rules/etc/udev/rules.d/
htp1204@htp1204-VirtualBox:~/Desktop$cd /etc/udev/rules.d/
htp1204@htp1204-VirtualBox:/etc/udev/rules.d$ls
51-android.rules 60-vboxadd.rules 70-persistent-cd.rules 70-persistent-net.rules  README
htp1204@htp1204-VirtualBox:/etc/udev/rules.d$ls -l 51-android.rules  //检查该文件权限
-rwxr-x--- 1 root root 2689 Apr 17 18:1351-android.rules            //为root权限,需用sudo
htp1204@htp1204-VirtualBox:/etc/udev/rules.d$sudo vi 51-android.rules
htp1204@htp1204-VirtualBox:/etc/udev/rules.d$

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

操作步骤:

1、点击下载下面的文件,解压出来。

  51-android.zip  23.9 KB

2、解压该文件。用文本编辑器打开“51-android.rules”,将这里面的OWNER="snowdream",替换成OWNER="您的系统用户名"。保存。

51-android.rules <wbr>-- <wbr>一个文件搞定Ubuntu上不识别Android手机的问题

3、将文件 “51-android.rules”,拷贝到/etc/udev/rules.d/ 目录下。参考命令如下:

$sudo cp 51-android.rules /etc/udev/rules.d/  
4、重启udev
$sudo service udev restart  
5、把android手机重新插拔一次。

6、再在终端运行以下命令:

$ adbdevices

运行结果

htp1204@htp1204-VirtualBox:/$adb devices
List of devices attached
20080411 device

设置成功。

 

注:

2、参考资料:

Ubuntu上Eclipse不识别Android手机的解决方法 http://www.cnblogs.com/AndroidManifest/archive/2011/12/09/2281635.html
Udev    http://wiki.cyanogenmod.com/wiki/Udev
Using HardwareDevices                      http://developer.android.com/guide/developing/device.html
51-android.rules to autorun Android's adbserver    http://www.joescat.com/linux/android_rules.html

 

参考:

一个文件搞定Ubuntu上不识别Android手机的问:http://blog.csdn.net/snowdream86/article/details/7665989

为什么是“51-android.rules”? http://www.cnblogs.com/frydsh/archive/2013/03/07/2949089.html

阅读全文
0 0
原创粉丝点击