最近在学习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了