注册

总结:Android中DDMS工具的使用

本帖最后由 邂逅潇湘 于 2015-5-21 18:01 编辑

在\android-sdk-windows-1.5_r1\tools目录下,有一个ddms.bat命令;在eclipse中,Window->Open Perspective->Other->DDMS。
那么什么是DDMS呢?在android SDK的文档中可以找到其准确定义和使用方法,如下图:

http://www.apkbus.com/data/attachment/forum/201503/13/155829ow0dzyle4eznssfq.jpg

下面,我简单介绍一下在我的工作中使用到了哪些DDMS。

**1. DDMS是桥梁**
DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
DDMS为IDE和emultor及真正的android设备架起来了一座桥梁。开发人员可以通过DDMS看到目标机器上运行的进程/现成状态,可以android的屏幕到开发机上,可以看进程的heap信息,可以查看logcat信息,可以查看进程分配内存情况,可以像目标机发送短信以及打电话,可以像http://www.apkbus.com/发送地理位置信息。可以像GDB一样attach某一个进程调试。

**2.DDMS** **的工作原理**
DDMS将搭建起IDE与测试终端(Emulator 或者connected device)的链接,它们应用各自独立的端口监听调试器的信息,DDMS可以实时监测到测试终端的连接情况。当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的。

1.jpg



DDMS监听第一个终端App进程的端口为8600,APP进程将分配8601,如果有更多终端或者更多APP进程将按照这个顺序依次类推。DDMS通过8700端口(“base port”)接收所有终端的指令。
打开后的窗口为:

http://www.apkbus.com/data/attachment/forum/201503/13/155830qa11vat13m11amjg.jpg

**3.DDMS介绍**

http://www.apkbus.com/data/attachment/forum/201503/13/155831ki0jipkejb03qzei.jpg
**(1)Device选项卡**
在GUI的左上角可以看到标签为”Devices”的面板,这里可以查看到所有与DDMS连接的终端的详细信息,以及每个终端正在运行的APP进程,每个进程最右边相对应的是与调试器链接的端口。因为Android是基于Linux内核开发的操作平台,同时也保留了Linux中特有的进程ID,它介于进程名和端口号之间。
Device中罗列了Emulator中所有的进程,选项卡右上角那一排按钮分别为:调试进程、更新进程、更新进程堆栈信息、停止某个进程,最后一个图片按钮是抓取Emulator目前的屏幕。
.jpg]
http://www.apkbus.com/data/attachment/forum/201503/13/155831qpwv5855wpls5w5v.jpg
当你选中某个进程,并按下调试进程按钮时,如果eclipse中有这个进程的代码,那就可以进行源代码级别的调试。有点像gdb attach。图片抓取按钮可以把当前android的显示桌面抓到你的机器上,也是非常有用。
**(2)Threads选项卡**
显示线程统计信息
**(3)Heap选项卡**
显示栈信息
**(4)File Explorer选项卡**
显示GPhone Emulator的文件系统信息。File Explorer非常有用:它可以把文件上传到GPhone或GPhone Emulator、或者从GPhone上下载文件下来、也可以进行文件删除操作。选项卡右上角有上传、下载、删除三个按钮。一般情况下,File Explorer会有如下三个目录:data、sdcard、**。

http://www.apkbus.com/data/attachment/forum/201503/13/155832as6wy6sws66isspc.jpg


2.jpg


data对应手机的RAM,会存放android OS运行时的Cache等临时数据(/data/dalvik-cache目录);没有root权限时apk程序安装在/data/app中(只是存放apk文件本身);/data/data中存放Emulator或GPhone中所有程序(系统apk+第三方apk)的详细目录信息,如下图:


http://www.apkbus.com/data/attachment/forum/201503/13/155832uc0cdrk7ccz3733d.jpg
sdcard对应sd卡。
**对应手机的ROM,OS以及系统自带apk程序等存放在这里。

**(5)Emulator Control选项卡**
通过它可以向手机发送短信、打电话、更新手机位置信息。
Telephony Status: 通过选项模拟语音质量以及信号连接模式。
Telephony Actions: 模拟电话接听和发送SMS到测试终端。
Location Control: 模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式:
· Manual: 手动为终端发送二维经纬坐标。
· GPX: 通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。
· KML: 通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端。

http://www.apkbus.com/data/attachment/forum/201503/13/155833xhdzipn73py22mmv.jpg


http://www.apkbus.com/data/attachment/forum/201503/13/155834o0nqag9o2ezylafm.jpg
LogCat:显示输出的调试信息。
Console(控制台):是Android模拟器输出的信息,加载程序等信息;
**总结:
**Eclipse ADT目前提供的的ddms功能只是真正ddms的一小部分,你可以通过ddms.bat命令来使用所有功能。其中有一个查看进程内存分配的功能比较有用。
另个要注意的是,在DDMS中模拟发送短信时,中文显示为乱码,在以后的开发中,我们必须注意中文字符的问题。

已邀请:

要回复问题请先登录注册