在Ubuntu14中adb 不能檢測OnePlus One的解決過程

       最近在學習Android的開發,且對於linux平臺頗有興趣,隨即將學習開發Android的平臺搭建在了Ubuntu14.04 LTS中。可是卻在一開始的時候就遇到了十分棘手的問題——使用eclipse不能鏈接到個人真機測試,即Oneplus One。html

        沒有辦法,只有慢慢嘗試開始解決這一問題。linux

    1.首先是發現並無在/ect/udev/rules.d/ 下建立有51-android.rules。
android

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

    1.1 首先是將手機開啓了Usb 調試後,鏈接電腦shell

    1.2 打開Ubuntu終端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    eclipse

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 結果是空白,沒有發現有任何的devicethis

    無果後開始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了

相關文章
相關標籤/搜索