3.3 仿真器环境运行
3.3.1 Android虚拟设备的建立
为了运行一个Android仿真器的环境,首先需要建立Android虚拟设备(AVD)。在Eclipse菜单中,选择Window→Android AVD Manager,出现Android SDK and AVD Manager窗口,如图3-22所示。
图3-22 Android SDK和AVD管理器窗口
界面中间的列表表示了目前可以使用的Android虚拟设备。在没有虚拟设备的情况下,单击右侧的New按钮,然后选择建立一个虚拟设备。
图3-23 建立新的AVD
建立新的Android虚拟设备的窗口为Create new AVD,如图3-23所示。
Android虚拟设备的建立包含以下选项。
(1)名字(Name):该虚拟设备的名称,由用户自定义。
(2)目标(Target):选择不同的SDK版本(依赖于目前SDK platform中包含了哪些版本的SDK)。
(3)SD卡:模拟SD卡,可以选择大小或者一个SD卡映像文件。SD卡映像文件是使用mksdcard工具建立的。
(4)皮肤(Skin):这里“皮肤”的含义其实是仿真器运行尺寸的大小,默认的尺寸有HVGA-P(320×480)、HVGA-L(480×320)等,也可以通过直接指定尺寸的方式确定屏幕大小。
(5)属性:可以由用户指定仿真器运行时,Android系统中的一些属性。
3.3.2 虚拟设备的运行
在Android SDK and AVD Manager窗口中选择一个设备,然后单击右侧的Start按钮,启动虚拟设备,运行一个Android系统。一个HVGA-P(320×480)尺寸仿真器的运行结果如图3-24所示。
图3-24 使用仿真器运行Android系统
窗口的左侧是运行的仿真器的屏幕,右侧是模拟键盘。设备启动后,使用右侧的键盘模拟真实设备的键盘操作,也可以用鼠标单击(或者拖曳和长按)屏幕,模拟触摸屏的操作。
除了使用右侧的模拟键盘之外,也可以使用PC键盘模拟真实设备的键盘操作。尤其是当仿真器的大小不是标准值时,可能不会出现按键的面板,此时只能使用键盘的按键来控制仿真器的按键。按键之间的映射关系如表3-2所示。
表3-2 按键之间的映射关系
3.3.3 Android中的工具
在仿真器环境中,可以使用集成的Android相关工具。使用方法是:选择Window→Show View→Other选项,开启Android的各个工具。调用过程如图3-25所示。
图3-25 选择Android的各个工具
选择Android工具的对话框如图3-26所示。
图3-26 选择Android工具的对话框
3.3.4 logcat工具
Logcat工具是查看系统Log信息的工具,可以获得Android系统运行时打印出来的信息,其界面如图3-27所示。
图3-27 使用Logcat工具显示Log
Logcat实际上是一个运行在目标系统的工具,也就是一个Linux的命令行程序,这时界面中带有GUI的效果。Logcat窗口中记录的信息是实际的Android系统打印出来的,包含时间(Time)、级别(Level)、进程ID(Pid)、标签(tag)、Log内容(Message)等项目。
在Logcat窗口可以设置Log过滤器(Filter),以便仅仅获得需要的Log信息,屏蔽其他信息。
命令行程序logcat位于目标文件系统中,该工具位于system/bin目录中。Logcat的使用方法如下所示。
#logcat [options][filterspecs]
logcat工具的选项如下所示。
-s:过滤器,例如指定’*:s。
-f <filename>:输出到文件。默认情况下,是标准输出。
-r [<kbytes>]:循环log的字节数(默认为16),需要-f。
-n <count>:设置循环log的最大数目,默认为4。
-v <format>:设置log的打印格式。<format>是下面的一种
brief process tag thread rawtime threadtime long
-c:清除所有log并退出。
-d:得到所有log并退出(不阻塞)。
-g:得到环形缓冲区的大小并退出。
-b <buffer>:请求不同的环形缓冲区('main'(默认)、'radio'、'events')。
-B:将log输出到二进制文件中。
3.3.5 仿真器控制
选择Emulator Control项,开启仿真器的控制对话框,界面如图3-28所示。
图3-28 Android仿真器控制界面
可以模拟打电话、发短信的过程。例如,在Incoming number中输入电话号码,然后单击Call按钮。
仿真器的运行界面如图3-29所示。
图3-29 Android仿真器接收来电
接收电话的程序被调用,这里显示的电话号码“1-234-56”是在仿真器控制窗口中设置的。
3.3.6 命令行工具
有一些Android工具需要在命令行环境中运行:选择Windows的“开始”→“运行”,键入cmd并确定,进入命令行界面。主要的命令行工具包括ADB和mksdcard。命令行工具在Android SDK的tools目录中。使用命令行的窗口如图3-30所示。
图3-30 在命令行中使用ADB
ADB(Android Debug Bridge, Android调试桥)是Android的主要调试工具,它通过网络或者USB连接真实的设备,也可以连接仿真器。使用ADB进行调试,通常在命令行的界面中。
将出现shell提示符,这就是Android运行的Linux系统中的shell终端。在此shell提示符后执行Android系统提供的Linux命令。
使用ls命令查看Android系统根目录,如图3-31所示。
图3-31 使用ls命令查看Android系统根目录
Android根目录中的主要文件夹与目标系统的out/target/product/generic/root内容相对应。此外,etc、proc等目录是在Android启动后自动建立的,system映像被挂接到根文件系统的system目录中,data映像被挂接到根文件系统的data目录中。
使用ps命令可以查看Android系统的进程,如图3-32所示。
图3-32 使用ps命令查看Android系统的进程
从系统的进程中可以看到,系统1号和2号进程以0号进程为父进程。init是系统运行的第1个进程,即Android根目下的init可执行程序,这是一个用户空间的进程。kthreadd是系统的2号进程,这是一个内核进程,其他内核进程都直接或间接地以它为父进程。
zygote、/system/bin/sh、/system/bin/mediaserver等进程是被init运行的,因此它们以init为父进程。其中,android.process.acore(Home)、com.android.mms等代表应用程序进程,其父进程都是zygote。
使用ADB连接目标系统终端的方式如下:
>adb shel l
使用ADB安装应用程序的方法为:
>adb install XXX.apk
使用ADB在主机和目标机之间传送文件的方法为:
>adb push {host_path}{target_path} >adb pul l {target_path}{host_path}
mksdcard是用来建立SD卡映像的工具,用于建立一个FAT32格式的磁盘映像,其使用方法如下:
mksdcard [-l label]<size><file>
mksdcard的参数-1用于指定磁盘映像的标签;size用于指定磁盘映像的大小,其后面可以跟K、M、G等参数;file是磁盘映像的文件名称,这个文件也就是在仿真器运行过程中指定的文件。
mksdcard的一个应用示例如下所示:
>mksdcard 128Msdcard.img
这表示建立了一个大小为128M,名称为sdcard.img的FAT32磁盘映像文件。
3.3.7 设备控制
Device工具用于进一步控制仿真器的运行状况,在其中可以查看Heap(堆内存)、Threads(线程)的信息;还具有停止某个进程的运行、截取屏幕等功能。Device工具的窗口如图3-33所示。
图3-33 Android的Device工具
单击Device窗口工具栏最右侧的Screen Capture按钮,打开截取屏幕的窗口,如图3-33所示。