在Ubuntu14中adb 不能检测OnePlus One的解决过程

       最近在学习Android的开发,且对于linux平台很有兴趣,随即将学习开发Android的平台搭建在了Ubuntu14.04 LTS中。但是却在一开始的时候就遇到了十分棘手的问题——使用eclipse不能连接到我的真机测试,即Oneplus One。

        没有办法,只有慢慢尝试开始解决这一问题。

    1.首先是发现并没有在/ect/udev/rules.d/ 下创建有51-android.rules。

    接着在Using Hardware Devices中的Setting up a Device for Development 找到了如何添加udev rules的方法。

    1.1 首先是将手机开启了Usb 调试后,连接电脑

    1.2 打开Ubuntu终端

sudo lsusb
Bus 001 Device 002: ID 8087:8000 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 014: ID 09da:054f A4 Tech Co., Ltd 
Bus 002 Device 005: ID 04f2:b469 Chicony Electronics Co., Ltd 
Bus 002 Device 006: ID 04ca:300b Lite-On Technology Corp. 
Bus 002 Device 003: ID 06cb:2970 Synaptics, Inc. 
Bus 002 Device 017: ID 2a70:9011  
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

      1.3 于是在结果中找到了Oneplus One 的idDevice 和idProduct   

Bus 002 Device 017: ID 2a70:9011

        1.4 按照前面找到的google android官方的资料的方法添加udev rules

sudo vi /ect/udev/rules.d/51-android.rules
  1 #OnePlus ONE
  2 SUBSYSTEM=="usb",ATTR{idVendor}=="2a70",ATTR{idProduct}=="9011",MODE="0666",GROUP="plugdev"

    1.5 保存后重启相关的服务

sudo service udev restart
adb kill-server
adb devices
List of devices attached

    1.6 结果是空白,没有发现有任何的device

    无果后开始google寻找其他的方法,没有办法,本身对于linux也是刚刚学习接触,本打算通过学习开发来熟悉这个平台的使用,哎!

    2. 于是goolge到XDA 论坛中的Oneplus One 版块中的一个帖子

    Oneplus mtp won't connect on ubuntu but adb will的二楼中提到了另一种情况。虽然我的情况是MTP 可以连接到Ubuntu,adb不能。但死马当活马医呗,于是就又试了一下

    2.1 他在其中提到了另一个udev的配置文件/lib/udev/rules.d/69-libmtp.rules

    在其文件中,内容如下

# Put this file in /etc/udev/rules.d
   3 
   4 ACTION!="add", GOTO="libmtp_rules_end"
   5 ENV{MAJOR}!="?*", GOTO="libmtp_rules_end"
   6 SUBSYSTEM=="usb", GOTO="libmtp_usb_rules"
   7 GOTO="libmtp_rules_end"
   8 
   9 LABEL="libmtp_usb_rules"
  10 
  11 # Some sensitive devices we surely don't wanna probe
  12 # Color instruments
  13 ATTR{idVendor}=="0670", GOTO="libmtp_rules_end"
  14 ATTR{idVendor}=="0765", GOTO="libmtp_rules_end"
  15 ATTR{idVendor}=="085c", GOTO="libmtp_rules_end"
  16 ATTR{idVendor}=="0971", GOTO="libmtp_rules_end"
  17 # Canon scanners that look like MTP devices (PID 0x22nn)
  18 ATTR{idVendor}=="04a9", ATTR{idProduct}=="22*", GOTO="libmtp_rules_end"
  19 # Canon digital camera (EOS 3D) that looks like MTP device (PID 0x3113)
  20 ATTR{idVendor}=="04a9", ATTR{idProduct}=="3113", GOTO="libmtp_rules_end"
  21 # Sensitive Atheros devices that look like MTP devices
  22 ATTR{idVendor}=="0cf3", GOTO="libmtp_rules_end"
  23 # Sensitive Atmel JTAG programmers
  24 ATTR{idVendor}=="03eb", GOTO="libmtp_rules_end"
  .....

    不难发现,这个文件也是配置了手机usb连接的相关信息。其中包括了各大手机品牌的各种型号,为了验证,我拿出了当年的旧机,来连接,lsusb找到了idVendor后搜索文件发现了其配置

 869 # SONY ST25i Xperia U MTP+CDROM
 870 ATTR{idVendor}=="0fce", ATTR{idProduct}=="4171", SYMLINK+="libmtp-%k", MODE     ="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

但搜索Oneplus One 却没有找到,于是我怀着激动的心情把配置添加上去,

经过各种重启后,发现还是没有,真是伤碎了心呀

    2.2 之后又找到一个贴子 Ubuntu is not detecting my android device ,在这其中讲到了这可能是权限受限的问题,普通用户没有权限去访问这个设备,然后我也把其设备权限改到了 666 

lsusb
Bus 002 Device 020: ID 2a70:9011 
#然后根据 Bus 002 Device 020 这个设备号找到了下面这个
ls -l /dev/bus/usb/002/020
crw-------+ 1 root audio 189, 147 Aug 15 13:04 /dev/bus/usb/002/020
chmod 666 /dev/bus/usb/002/020

不过依然无果,并没有解决问题呢

    3. 在上面的方法都没有解决后,把目光集中到了系统上,但还是其/ect/udev/rules.d/下的配置问题,在一个帖子中讲到了这配置文件的名称也是有讲究的,Ubuntu的版本不同,其文件名称也不同

How to Setup ADB and USB drivers on Ubuntu easily

    3.1 但是我把这几个配置文件的名称都弄了一份,也还是没有结果

-rwxr-xr-x 1 root root  105 Aug 15 13:55 50-android.rules
-rwxr-xr-x 1 root root  105 Aug 15 10:55 51-android.rules
-rwxr-xr-x 1 root root  105 Aug 15 13:55 70-android.rules
-rw-r--r-- 1 root root  629 Jun 15 04:57 70-persistent-net.rules

    3.2 如果是版本的问题,那Ubuntu14.04的配置文件的名称应该是叫做什么呢

    3.3 最后总结一下,会不会是手机系统问题呀

        后面刷了CM后,可以连接上了Ubuntu14了





你可能感兴趣的:(在Ubuntu14中adb 不能检测OnePlus One的解决过程)