[摘要] 本文将通过实例介绍一种在ubuntu环境下连接Android手机的设置方法。通过本文读者可能会了解到通过adb命令连接手机的方式。
一、引言
Android手机应用开发基本离不开Android手机,固然ADT提供了模拟器的支持,但对于较大型或者较复杂的应用来说,还是真实的Android手机更接地气。对IOS开发我不了解,但Windows Phone 和 Android 模拟器都给我的印象很深刻,尤其是Android 模拟器,启动一次那真叫一个慢啊!
所以,有条件还是手机开发的效率高、数据真实。Android 手机五花八门、良莠不齐,五百元以上的国产机基本可以满足大部分开发了。然而,也正式因为 Android 手机种类繁多,给真机开发带了不少麻烦,而手机连接电脑就是这些麻烦中的一点。Android 首先需要连接PC才能基于真机开发,对于一些非主流的国产手机,往往会出现PC 无法识别,找不到对应的驱动,对于这种情况,我一般就要使用豌豆荚或者腾讯手机管家之类的工具帮我处理了。
但是,这是在windows 环境下,最近尝试了ubuntu ,却要自己解决这个问题了。这几天学习并尝试了一下,下面将通过实例介绍一下在unbuntu 环境下连接Android手机的方法,希望能对大家有所帮助,错误地方还请指正。
二、环境
本文实例环境:
【PC操作系统】:ubuntu 13.04 x64
【Android IDE】 : eclipse_android_develop_tool with sdk 21.1
【Android 手机】:lenovo a789 with android 4.04
本文以下的内容都是基于当上面三个主要环境参数展开,至于如何安装Android 开发环境,暂不在这里介绍。
三、设置过程
-
打开USB调试
这点就不细说了,估计Android开发人员都了解。
-
查看设置前手机连接状态
首先,通过命令终端,查看当前所有usb连接信息
lsusb
结果如下:
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 008: ID 090c:1000 Silicon Motion, Inc. - * (formerly Feiya Technology Corp.) 64MB QDI U2 DISK Bus 001 Device 004: ID 04b3:3107 IBM Corp. ThinkPad 800dpi Optical Travel Mouse Bus 001 Device 005: ID 147e:2016 Upek Biometric Touchchip/Touchstrip Fingerprint Sensor Bus 001 Device 006: ID 04f2:b221 Chicony Electronics Co., Ltd integrated camera Bus 002 Device 003: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth Bus 002 Device 009: ID 17ef:7435 Lenovo
这里需要强调一下这个命令执行结果的信息,其中:
【Bus xxx】 :代表的式串口的电脑的usb端口号;
【Device xxx】:是系统为其分配的设备号;
【ID xxxx:yyyy】:这个改设备厂商的OEM编号和该设备的设备号.
本文里,我们直关心【ID xxxx:yyyy】,这里面的xxxx就是设备厂商的OEM编号,这个式固定不变的,譬如联想就是“17ef”,更多的厂商信息请看官方信息;而yyyy这几位代表特定设备厂商旗下的特定的产品型号ID,这个会根据设备的硬件和系统不同而变化。
上面usb信息列表中的最后以蓝色差异表现的就是本文使用的联想手机的usb信息。
实例如图如下:
然后,调用adb命令,查看当前有效的手机连接信息:
adb devices
执行结果如下:
List of devices attached
其实,设备列表下面什么设备都没要,说明当前的联想手机,adb并没要识别出来,如下图:
截至目前,联想手机虽然已经连接到电脑,电脑也已经侦测到改连接,但是,adb无法将其作为有效的Android设备识别出来,接下来的任务就是进行设置,让adb识别改手机。
3、设置配置信息
创建配置信息文件,使用vim 或者gedit等文本工具都行,要在系统 etc/udev/rules.d/目录下创建一个自己rules文件,这里采用gedit创建,命令如下:
gedit /etc/udev/rules.d/lenovo-android.rules
如果当前终端用户没有获取到root权限,则上面的命令需要前面加 sudo :
sudo gedit /etc/udev/rules.d/lenovo-android.rules
gedit 工具会打开一个文件,在文本里,需要注册一下设备信息:
SUBSYSTEM=="usb",SYSFS{idVendor}=="17ef" MODE="0666" SUBSYSTEM=="usb",ATTR{idVendor}=="17ef"ATTR{idProduct}=="7435",SYMLINK+="android_adb"
确认信息填写无误后,保存文件。
下一步,设置改配置文件的访问权限,至少要给予读(r)权限,不然其它进程将无法访问配置信息:
chmod a+r /etc/udev/rules.d/lenvov-android.rules
再下一步,重启动udev
sudo /etc/init.d/udev restart
最后,重启adb服务:
sudo adb kill-server
再回头查看最新的设备信息:
adb devices
结果如下:
List of devices attached 0123456789ABCDEF device
实例如下图:
不妨在ADT的工程中运行一个Android应用程序,此时发现,联想手机已经成为应用运行的Target可选项了:
四、总结
Android应用开发,知识比较庞杂,尤其在linux环境下,很多操作需要命令配合,而命令背后是更多的机制,机制背后则是linux的系统原理。Android发源于linux,如要深入理解Android,linux恐怕是无法回避的内容,这也是尝试在linux上开发的主要目的。目前我对linux了解十分浅薄,对于本文中的有些命令机制,仅限于会用,尚未明白背后的机制。所以,有出入的地方,欢迎大家指正。