最近在學習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了