转自:

http://blog.csdn.net/liuqz2009/article/details/7942569

1、做android开发的过程,碰到了Linux下adb识别不了android设备的问题,刚开始在网上google下,发现都是针对ubuntu下的一些说明:如google提供的方法:http://developer.android.com/tools/device.html,但发现通过做这些还是有些android设备连接不上,于是通过阅读adb源码,得出了一些方法,和大家一起共勉下:

a、google提到的修改/etc/udev/rules.d/51-android.rules的方法:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

其实这样做的目的无非是为了使adb对创建的usb节点有访问权限,其实只要使用root来启动adb server就不存在此问题。做法如下:在root终端上运行adb start-server ,如果已经有运行adb命令的则需要杀掉adb server,运行 ps aux | grep adb ,找到adb server的pid,然后kill掉,如我机器上:

root 2795 0.0 0.0 30556 1244 pts/2 sl 09:00 0:03 adb fork-server server

执行kill 2795杀掉adb server。

b、通过以上办法还是无法识别android设备的,则可能你的android的VID未能加入adb中,你需要手动添加。

添加的文件位置与你第一次启动adb server有关,如你在root上启动adb server,则其位置在

/root/.android/adb_usb.ini,否则其位置在$HOME/.android/adb_usb.ini下,如果$HOME为空,则在/tmp/.android/adb_usb.ini下。未有文件或目录的请手动添加。以下是一份adb_usb.ini的示例:

#for OKWAP C900

0x14b4

#for K-Touch W606

0x0525

#for lenovo speic

0x2006

其中#开头表注释,其它则表示android的VID,每个VID需要单独一行。

获取VID的方法:插上设备前运行lsusb,插上设备后,再次运行lsusb,多出的那个就是你的设备,而VID就在其中如:

Bus 001 Device 034: ID 2006:5010

其中的2006即为其VID。

在adb_usb.ini中添加好后,杀掉adb server,然后启动adb server,(参考a中提到的方法)。

c、如果按以上执行完以上两步还不行,那就碰到了令人头痛的问题了。

现在有些usb设备叫做“免CD”设备。具体点来说,目前一些新的USB 设备在内部含有windows驱动,当你第一次插入的时候,它作为一个闪存,并提示你安装驱动。在安装驱动之后,驱动会自动切换USB设备的模式,存储设备将会消失(大多数情况),新的设备将会产生(如USB类型的Modem)。这种特征被无线设备的制造商称其为“免CD”的设备。在Linux下是通过usb_modeswitch这个工具自动切换的。你读到这里说明你的设备肯定不在usb_modeswitch支持的列表中。此时你要么等其支持,要么就是自己动手支持了。

要自己手动支持,这是个复杂的过程,你可以参考:http://www.draisberghof.de/usb_modeswitch/

简单的来讲,如果你要自己支持,也就是要抓取Windows下驱动做了哪些事情,让其进行了模式切换。然后你在/etc/usb_modeswitch.d/目录下参照已有的文件,创建自己的配置文件如:2006:5010,在其中添加你抓取到得信息。

备注:windows下没过多研究,一般装上驱动,识别到了adb接口就可以识别到。平板上和Linux下比较类似,不过其$HOME为空,所以添加的目录在/tmp/.android/adb_usb.ini里。

连接金立手机 GiONEE GN9005 。最后通过文中的第二种方法

(1)先在插入usb之前和之后,运行lsusb,获取设备VID

[email protected]:~$ lsusb
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 17ef:6019 Lenovo
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

[email protected]:~$ lsusb
Bus 002 Device 018: ID 271d:c011
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 17ef:6019 Lenovo
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

得到设备VID为271d

(2)然后在Home路径下的 /.android 路径下新建了文件adb_usb.ini

内容为:

#for GiONEE GN9005
0x271d

(3)然后adb kill-server adb start-server

成功连上

更多相关文章

  1. android 视图结构 呈现给用户的视图
  2. 运行模拟器找不到路径 AVD 更改路径
  3. Still no compatible AVDs with target 'Google APIs'
  4. android v13 的新特性
  5. android 使用Sax 读取xml
  6. 【Android(安卓)Developers Training】 7. 添加Action Buttons
  7. Android(安卓)8.0 高通代码预制apk可卸载,恢复出厂设置apk可恢复
  8. [中英文对照]android Designing for TV(三) ------ Handling Fea
  9. Linux/Android——usb触摸屏驱动 - usbtouchscreen (一)

随机推荐

  1. Android(安卓)launchMode
  2. android webkit 内核
  3. 关于WebVeiw的例子(一)
  4. Android中OpenCv编译的时候一些错误的总
  5. android系统开发sdcard
  6. 在Android中创建一种新的输入法(Creating
  7. android学习---SeekBar和RatingBar
  8. 【Android】悬浮按钮(FloatingActionButto
  9. Android(安卓)系统api实现定位及使用百度
  10. Android(安卓)定时让popupwindow消失