速读原著-Android应用开发入门教程(Android中运行仿真器环境)

2.3 Android中运行仿真器环境

2.3.1. 建立Android虚拟设备

为了运行一个 Android 仿真器的环境,首先需要建立 Android 虚拟设备(AVD)。在 Eclipse 的菜单中,择“Window”>“Android AVD Manager”,出现“Android SDK and AVD Device Manager”窗口,界面如图所示:
在这里插入图片描述
界面中间的列表表示了目前可以使用的 Android 虚拟设备,在没有虚拟设备的情况下点击右侧的 New 选择建立一个虚拟设备。
建立新的 Android 虚拟设备的窗口为 Create new AVD,如图所示:
在这里插入图片描述

Android 虚拟设备的建立包含了以下的一些选项:

  • 名字(Name):这个虚拟设备的名称,由用户自定义;
  • 目标(Target):选择不同的 SDK 版本(依赖一目前 SDK 的 platform 目中包含了哪些版本的 SDK) „ SD 卡:模拟 SD卡,可以选择大小或者一个 SD 卡映像文件,SD 卡映像文件是使用 mksdcard 工具建立的。
  • 皮肤(Skin):这里皮肤的含义其实是仿真器运行尺寸的大小,默认的尺寸有 HVGA-P(320x480),HVGA-L(480x320)等,也可以通过直接指定尺寸的方式制定屏幕的大小。
  • 属性:可以由用户指定仿真器运行的时候,Android 系统中一些属性

2.3.2. 运行虚拟设备

在“Android SDK and AVD Device Manager”窗口中,选择一个设备,点击右侧的 Start,将启动虚拟设备,运行一个 Android 系统,一个 HVGA-P(320x480)尺寸的运行结果如图所示:

在这里插入图片描述
出现窗口的左侧是运行的仿真器的屏幕,右侧是模拟的键盘。设备启动后,可以使用右侧的键盘模拟真实设备的键盘操作,也可以用鼠标点击(或者拖拽和长按)屏幕,模拟触摸屏的操作。

除了使用右侧的模拟键盘之外,也可以使用 PC 机的键盘来进行模拟真实设备的键盘操作。尤其是当仿真器的大小不是标准值的时候,可能不会出现按键的面板,在这种情况下只能使用键盘的按键来控制仿真器的按键

按键之间的映射关系如下表所示:
在这里插入图片描述
在这里插入图片描述
Android 仿真器启动虚拟设备之后,默认就可以使用主机的网络作为自己的网络、使用主机的音频设备作为自己的声音输出。

2.3.3. 使用Android中的工具

在仿真器环境中,可以使用集成的 Android 相关工具。使用的方法是 Window-> Show View -> Other 选项,可以开启 Android 的各个工具。调用的过程如下图所示:

在这里插入图片描述
选择 Android 工具的对话框如图所示:
在这里插入图片描述
这里可以选择的主要工具有 Device(设备控制)、Emulator Control(仿真器控制)、File Explore(文件浏览)、Heap(堆内存)、Logcat、Resource Explore(资源浏览)、Threads(线程等)。每个工具开启之后,将出现一个单独的选项卡。

2.3.4. 使用logcat

Logcat 工具是查看系统 Log 信息的工具,可以获得 Android 系统运行的时候打印出来的信息。工具的界面如下所示:
在这里插入图片描述
Logcat 实际上是一个运行在目标系统的工具,也就是一个 Linux 的命令行程序,这是界面种是带有 GUI 的效果。Logcat 的窗口中记录的信息也就是实际的 Android 系统打印出来的。包含了时间(Time)、级别(Level)、进程 ID(Pid)、标签(tag)、Log 内容(Message)等项目。

Logcat 窗口可以设置 Log 的过滤器(Filter),这样可以仅仅获得自己需要的 Log 信息,屏蔽其他的信息。命令行程序 logcat,位于目标文件系统中该工具位于 system/bin 目录中,Logcat 的使用方法如下所示:

logcat 工具的选项如下所示:
-s 设置过滤器,例如指定 '*:s 
-f <filename> 输出到文件,在默认情况下是标准输出
-r [<kbytes>] 循环 log 的字节数(默认为 16),需要 –f 
-n <count> 设置循环 log 的最大数目,默认为 4 
-v <format> 设置 log 的打印格式,<format> 是下面的一种:
brief process tag thread raw time threadtime long 
-c 清除所有 log 并退出
-d 得到所有 log 并退出(不阻塞) 
-g 得到环形缓冲区的大小并退出
-b <buffer> 请求不同的环形缓冲区('main'(默认)、'radio''events'-B 将 log 输出到二进制文件中

2.3.5. 使用仿真器控制

选择 Emulator Control 选项可以开启仿真器的控制对话框,它的界面如下所示:
在这里插入图片描述
它甚至可以模拟打电话,发短信的过程。例如在 incoming number 中输入电话号码,然后点击 Call 按钮。这是仿真器的运行界面如图所示:
在这里插入图片描述
接受电话的程序已经被调用起来,这里显示的电话号码 1-234-56,也是在仿真器控制的窗口中设置的。模拟发送短信的界面显示如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.6. 命令行工具adb、mksdcard等

有一些 Android 的工具需要在命令行的环境中运行,只是可以选择 Windows 的开始->运行,键入 cmd 并确定,进入命令行的界面中运行。主要的命令行工具包括 adb 和 mksdcard 等。命令行的工具在 Android SDK 的tools 目录中,使用命令行的窗口如图所示:
在这里插入图片描述
adb(Android Debug Bridge,Android 调试桥)是 Android 的主要调试工具,它可以通过网络或者 USB 连接真实的设备,也可以连接仿真器。使用 adb 进行调试,通常在命令行的界面中。

将出现 shell 提示符,这就是 Android 所运行的 Linux 系统中的 shell 终端,可以在这个 shell 提示符后执行Android 系统提供的 Linux 命令。

使用 ls 命令查看 Android 系统根目录:
在这里插入图片描述
Android 根目录中的主要文件夹与目标系统的 out/target/product/generic/root 内容相对应,此外 etc、proc 等目录是在 Android 启动后自动建立的,system 映像被挂接到根文件系统的 system 目录中,data 映像被挂接到根文件系统的 data 目录中。

使用 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 shell

使用 adb 安装应用程序的方法为:

adb install XXX.apk

使用 adb 在主机和目标机之间传送文件的方法为:

adb push {host_path} {target_path}
adb pull {target_path} {host_path}

mksdcard 是用来建立 SD 卡映像的工具,用来建立一个 Fat32 格式的磁盘映像,其使用方法如下所示:

mksdcard 的参数-l 用于指定磁盘映像的标签,size 用于指定磁盘映像的大小,其后面可以跟 K、M、G 等参数,file 是磁盘映像的文件名称,这个文件也就是在仿真器运行过程中指定的文件。
mksdcard 的一个使用的示例如下所示:

mksdcard 128M sdcard.img

这表示建立了一个大小为 128M,名称为 sdcard.img 的 Fat32 磁盘映像文件。

2.3.7. 使用设备控制

Device 工具可以用于进一步控制仿真器的运行状况,在其中可以查看 Heap(堆内存)、Threads(线程)的信息,还具有停止某个进程的运行,截取屏幕等功能。Device 工具的窗口如图所示:
在这里插入图片描述
点击 Device 窗口工具栏最右侧的 Screen Capture 按钮,可以打开截取屏幕的窗口,如上图所示。

发布了1024 篇原创文章 · 获赞 810 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/103923162