Android应用程序的调试
在Eclipse开发环境中,不仅可以通过ADT插件来进行Android应用程序的开发,还可以非常方便的地对应用程序进行测试,主要的测试工具是DDMS。
DDMS是Dalvik Debug Monitor Service的简称,主要功能是监控应用程序的运行并打印日志、模拟电话打入与接听、模拟短信的收发、虚拟地理位置等。有了DDMS的帮助,可以大大降低应用程序的测试成本。
4.1 DDMS的启动
启动Eclipse后,单击Eclipse右上角的“Open Perspective”,从下拉菜单中选择“DDMS”,如下图。如果下拉菜单中没有DDMS,则单击下拉菜单中的“Other...”,并从弹出的对话框中选择“DDMS”。
除了在Eclipse中启动DDMS,也可以通过运行SDK安装目录下的tools文件夹下的ddms.bat来启动DDMS。


4.2 Devices面板
首先来看DDMS系统中的Devices面板。在Devices面板中,可以看到与DDMS连接的设备终端的信息及设备终端上运行的应用程序。

在Devices面板中,可以设置应用程序更新Help状态、更新Thread状态,或者直接停止某个应用程序的执行。同时Devices面板中还可以截取手机屏幕。
4.3 Emulator Control面板
DDMS中的Emulator Control面板中可以向模拟器AVD中打入电话或发送信息,还可以虚拟模拟器的位置信息等。

4.4 信息输出面板
下图是DDMS中的信息输出面板,信息输出面板在调试中起到的作用最大,其显示的信息窗口主要包括如下几个:
![]() |
|
4.5 DDMS中的日志输出
在DDMS中的LogCat可以输出应用程序的运行信息,如果开发人员需要在程序运行时打印一些调试用的消息,除了使用传统的“System.out.println()”之外,还可以使用android.util包下的Log类,该类可以将信息以日志的形式输出到LogCat中。
Log类中主要用到的方法及说明见下表:
方法名 | 方法说明 | 参数说明 |
Log.v(String tag,String msg) | 输出冗余信息 | tag:日志标签,可用于过滤日志信息 msg:输出的日志信息 |
Log.d(String tag,String msg) | 输出调试信息 | |
Log.i(String tag,String msg) | 输出普通信息 | |
Log.w(String tag,String msg) | 输出警告信息 | |
Log.e(String tag,String msg) | 输出错误信息 |
下面通过一个例子来说明Log类的用法。在刚才新建的Hello Android项目中src下HelloAndroid.java代码替换成如下代码:
- package com.sunchis;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- public class HelloAndroid extends Activity {
- /** Called when the activity is first created. */
- String Tag = "MyLog";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Log.v(Tag, "这里输出的是冗余信息。");
- Log.d(Tag, "这里输出的是调试信息。");
- Log.i(Tag, "这里输出的是普通信息。");
- Log.w(Tag, "这里输出的是警告信息。");
- Log.e(Tag, "这里输出的是错误信息。");
- }
- }
运行Hello Android项目,将视图切换到DDMS,观察LogCat的输出,如下图所示:

当LogCat输出的信息量很大时,需要对其内容进行过滤,可以在DDMS中根据标签进行过滤,这样能使应用程序的调试变得更加方便。