Android热门应用开发详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 常用的Android开发工具

1.6.1 配置工具(AVD)

有两种方式来运行Android应用程序:一种是在Android设备(手机、Pad等)上运行;另外一种是在AVD上运行。AVD(Android Virtual Device)是Android提供的虚拟设备,用来模拟真实的Android设备(手机、Pad等),Android应用程序可以通过该虚拟设备来运行。特别是在开发阶段,开发人员可以用AVD来运行或者调试应用程序,非常方便。

创建AVD的方法有两种,一种是通过Eclipse创建,另一种是通过Android SDK提供的命令创建。通过Eclipse创建AVD的方式已经在1.3.5节中详细介绍了,下面具体讲述使用命令行创建AVD。

(1)在命令行方式中找到Android SDK所在的tools的路径,输入命令:

    android create avd --target 2 --name Test_AVD

(2)然后输入命令启动虚拟设备:

    emulator -avd Test_AVD

这样写的Android程序就可以在AVD上面运行了。

注意

低版本SDK的程序可以运行在高版本之上,所以当你创建了多个AVD,并有几个版本等于或者高于你所运行的项目的SDK时,那么会让你选择所运行的AVD。

1.6.2 Android模拟器(Emulator)

Android中提供了一个模拟器来模拟ARM核的移动设备。模拟器的出现无疑是广大程序开发人员的福音,它为开发人员提供了很多开发和测试时的便利。不管在Windows下、Linux下还是Mac OS下,Android模拟器都可以顺利运行。如1.6.1节所讲,开发人员可以通过Eclipse创建模拟器,同时也可以通过命令行创建。

Emulator功能非常齐全,可以使用电话本,通话等功能,使用其内置的浏览器和Google Maps来访问外部网络,使用键盘输入,鼠标单击模拟器按键输入,甚至还可以使用鼠标单击、拖动屏幕进行操纵。当然模拟器毕竟是模仿真器,和真实的Android设备还是存在差别的,Android模拟器和真机的不同之处在于:

◎ Android模拟器不支持呼叫和接听实际来电;但可以通过控制台模拟电话呼叫(呼入和呼出)。

◎ Android模拟器不支持USB连接。

◎ Android模拟器不支持相机/视频捕捉。

◎ Android模拟器不支持音频输入(捕捉);但支持输出(重放)。

◎ Android模拟器不支持扩展耳机。

◎ Android模拟器不能确定连接状态。

◎ Android模拟器不能确定电池电量水平和交流充电状态。

◎ Android模拟器不能确定SD卡的插入/弹出。

◎ Android模拟器不支持蓝牙。

图1-24显示了模拟器里面Android自带的一些应用。

图1-24 Android 模拟器应用程序

1.6.3 图形化调试工具(DDMS)

DDMS(Dalvik Debug Monitor Service)为IDE和Emulator及真正的Android设备架起了一座“桥梁”,Android DDMS将捕捉到终端的ID,并通过ADB建立调试器,从而实现发送指令到测试终端的目的。它给我们提供了很多服务,例如:为设备截屏,查看进程及信息,广播状态信息,模拟电话呼叫,接收SMS,虚拟物理坐标等。

我们在开发的时候,程序的调试是必不可少的,当然这是最直接、有效定位问题的方法。但是使用这个方式来定位问题效率相对较低,如果可以查看问题日志,则可以使定位问题的效率提高。

在系统维护的时候DDMS的重要性就更为突出了,因为此时系统已经运行在服务端,我们很难去调试,即使调试有时也无法还原、捕捉到当时的异常(测试环境与真实环境难免有差异),特别是一些我们认为很“灵异”的异常(经常维护系统的人就会了解),尤其是文件读/写权限、Office的读/写权限、网络异常、性能瓶颈等外部异常。这个时候我们就很有必要在可能出现这些异常的地方try catch。一旦系统出现异常,我们的第一反应就是查看日志文件,分析问题的所在,快速定位,及时处理,DDMS可以为我们解决这些问题。

启动DDMS有两种方法:

(1)命令行进入SDK所在目录的tools下,运行DDMS.bat启动。

(2)在Eclipse中启动,如图1-25所示。

图1-25 如何运行DDMS

在Eclipse界面的右上角,单击添加工具图标,双击“DDMS”。Eclipse右上角就会出现DDMS图标,单击该图标开启DDMS。运行效果如图1-26所示。

图1-26 DDMS运行效果

DDMS是Android开发中常用的辅助工具,下面介绍DDMS各个部分的功能。

1. Devices窗口

Devices窗口显示了当前能找到的所有模拟器或设备列表,以及每个设备当前正在运行的及每个模拟器正在运行的App进程。进程名字是按程序的包名来显示的。Devices窗口提供了如下功能:调试某个进程,更新某个进程,更新进程堆栈信息,停止某个进程,抓取模拟器或者设备目前的屏幕,如图1-27所示。

图1-27 Devices 窗口信息

2. LogCat

LogCat主要用于显示日志信息,它是一个最实用的Android程序调试工具。它会把系统所显示出来的信息以日志的形式显示出来,让程序员一目了然,日志包括Verbose、Debug、Info、Warning、Error、Fatal、Silent等,在代码中使用其首字母大写来代替:V为所有的信息,D为Debug信息,I为Info信息,W为警告信息,E为错误的信息,F为严重错误信息,S为最高优先级的信息。

在后面的章节会对LogCat做更为详细的介绍。

3. Emulator Control

Emulator Control顾名思义是模拟器控制,可以实现对模拟器的一些控制。模拟器控制提供以下控制功能。

◎ Telephony Status:改变电话语音和数据方案的状态,模拟不同的网络速度。

◎ TelePhony Actions:发送模拟的电话呼叫和短信到模拟器。

◎ Location Controls:发送虚拟的定位数据到模拟器里,我们就可以执行定位之类的操作。可以手动在Manual里输入经度、纬度发送到模拟器,也可以通过GPX和KML文件将位置信息发送到模拟器。

图1-28为Emulator Control的窗口信息

图1-28 Emulator Control 窗口信息

1.6.4 命令行调试工具(ADB)

ADB(Android Debug Bridge)是Android提供的一个调试工具,通过这个工具,我们可以方便地管理设备或模拟器。ADB命令在SDK目录的tools下,建议开发人员将其配置到PATH环境变量之中。

1. 启动和关闭ADB服务

在虚拟机运行一段时间之后,ADB有可能会因为一些异常而不能正确运行,这时候就需要我们手动关闭,然后再启动。

    关闭命令:adb kill-server,
    启动命令:adb start-server

2. 查看当前运行的设备或模拟器

不仅可以在Eclipse中通过Device查看当前运行的设备,同时也可以通过ADB命令进行查看。执行adb devices命令后,就可以查看设备信息,如图1-29所示。

图1-29 查看设备信息

emulator-5554表示模拟器,其中5554表示ADB服务为该模拟器实例服务的端口号,每启动一个模拟器实例,该端口号均不同。

3. ADB的一些常用方法

1)安装、卸载

首先,在安装或者卸载之前要保证至少有一个设备或者模拟器处在运行状态。可以通过上面介绍的命令来查看。比如说我要安装weibo.apk到emulator-5554这个模拟器,执行如下命令:

    adb install weibo.apk

这样weibo的这个程序就安装到emulator-5554这台模拟器上面了。假设weibo中的package是com.sina.weibo,我们可以使用如下命令卸载:

    adb uninstall com.sina.weibo

注意

上述方法只针对devices中只有一个设备或虚拟机的情况;如果有多个,那就要用-s这个参数来进行指定了,如adb -s emulator-5554 install weibo.apk。所以,通过adb操作的命令在遇到多个设备或模拟器的时候都要进行指定。

2)运行程序

am命令用来运行Android设备或模拟器中的应用程序。运行应用程序之前,我们需要知道有关程序的两个内容:package name和Activity name。比如weibo程序的package name为com.sina.weibo,Activity name为WeiboActivity,使用如下命令运行:

    adb shell am start -n com.sina.weibo/.WeiboActivity

3)shell控制台

众所周知,Android底层是Linux,那么Linux命令当然可以在Android上面运行了。还是通过ADB这个工具,运行adb shell命令,即可进入到shell控制台,控制台如图1-30所示。

图1-30 shell控制台

4)与PC文件交换

ADB还有一个强大的功能,通过pull命令可以把设备或模拟器中的文件传到PC,也可以通过push命令把PC上的文件传到设备或模拟器。

传文件到PC命令:

    adb pull /data/weibo.jpg weibo.jpg

传文件到设备或模拟器命令:

    adb push weibo.jpg /data/weibo.jpg

1.6.5 资源打包工具(AAPT)

AAPT(Android Asset Packaging Tool)是标准的Android辅助打包工具,位于SDK的tools目录下。该工具允许查看、创建或更新Zip兼容格式(zip,jar,apk)的文档,并且能将资源编译到二进制格式的包中。

1. 列出apk包的内容

列出apk包内容的命令如下所示:

    aapt l Test.apk ,

图1-31显示了该命令的执行结果。

图1-31 列出包的内容

2. 查看apk的信息

查看apk包信息的命令如下所示:

    aapt d Test.apk,

图1-32显示了该命令的执行结果。

图1-32 查看apk信息

3. 编译Android资源

1)将工程的资源编译到R.java文件

该命令的格式如下:

    aapt package -m -J -S -I -M

注意

编译Android资源前,首先需要查看资源文件来确定Android SDK的版本。查看资源文件时,通常会看到很多Android版本,选择相应的版本进行编译。例如可使用如下命令将当前目录下的资源(AndroidManifest.xml)编译到R.java文件:

    aapt p -f -m -J gen\com\perf\ -S res -I android-1.6\android.jar -M
  AndroidManifest.xml

2)将工程的资源编译到一个apk包里

该命令的格式如下:

    aapt package -f -S -I -A -M -F <输出的包目录+包名>

例如可使用如下命令将当前目录下的资源(AndroidManifest.xml)编译到apk文件:

    aapt p -f -S res -I android-1.6\android.jar -A assets -M AndroidManifest.xml
  -F Test.apk

其中:

◎ -f —— 如果编译出来的文件已经存在,强制覆盖。

◎ -M —— 使生成的包的目录存放在-J参数指定的目录。

◎ -S —— res文件夹路径。

◎ -A —— assets文件夹路径。

◎ -I —— 某个版本平台的android.jar的路径。

◎ -F —— 具体指定apk文件的输出。

4. 将文件添加到打包好的apk中

该命令的格式如下:

    aapt a <你的apk文件路径> <想要添加的文件路径>

5. 移除打包好的apk中的文件

该命令的格式如下:

    aapt r <你的apk文件路径> <想要移除的文件名>

1.6.6 获取日志工具(LogCat)

LogCat主要用于显示日志信息,它是一个最实用的Android程序调试工具。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过LogCat命令来查看和使用。它会把系统所显示出来的信息以日志的形式显示出来。LogCat有两种使用方法,可以在PC中输入adb logcat来运行,也可以在shell控制台中输入“logcat”来运行。

在LogCat中,每一个输出的Android日志信息都有一个标签和它的优先级。日志的标签是系统部件原始信息的一个简要标志。LogCat的日志优先级是按照从低到高的顺序排列的,如下所示:

◎ V — Verbose(lowest priority)

◎ D — Debug

◎ I — Info

◎ W — Warning

◎ E — Error

◎ F — Fatal

◎ S — Silent(highest priority, on which nothing is ever printed)

在运行LogCat时,在前两列的信息中可以看到LogCat的标签列表和优先级别(<priority>/<tag>)。下面是一个LogCat输出的例子:

    I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}

这个日志的优先级是I,标签列表是ActivityManager。

日志信息包括了许多元数据域,比如标签和优先级。可以通过修改日志的输出格式,以显示出特定的数据域,通过-v选项得到格式化输出日志的相关信息。例如用thread来产生的日志格式的命令如下。

    adb logcat -v thread

1.6.7 视图层次工具(Hierarchy Viewer)

Hierarchy Viewer也是Google提供的又一强大工具。名为SDK目录tools下的hierarchyview.bat,可以帮助程序员设计UI、检视界面,获得UI布局的结构和各种信息。使用视图层次工具的过程如下。

首先启动模拟器或设备,并使得模拟器或设备处于连接状态,然后运行hierarchyview.bat。Hierarchy Viewer运行效果如图1-33所示。

图1-33 Hierarchy Viewer 运行效果

图1-33显示了我们的模拟器或设备在当前状况下所显示的View的结构信息,选中其中的某个View,可以进入到所选View的一个Layout View的界面。如上列的com.android. launcher/.com.android.launcher2.launcher项,双击此项就进入到此项的Layout View中,如图1-34所示。

图1-34 Layout View

在图1-34中,右上角显示树形布局结果全局图及当前View在窗口中的位置,右中间显示的是某个View的属性信息,右下角显示的是界面布局图,左边页面显示的是当前窗口的树形布局结构图及当前View在窗口中的位置。