调试 Android* x86 应用程序的方法以及要使用的工具

hdsakjc 2014-05-13 11:22:10
加精
1.简介

众所周知,Android* 开发人员头顶许多称呼:设计员、程序猿等,并且通常会不可避免地被称为故障检修工。代码中的错误无法避免,因此无论您是否一开始就造成错误,了解调试工具以及如何迅速而有效地跟踪并解决错误都很重要。鉴于此,如今的 Android 开发人员必须掌握有效的调试技巧。本文提供了 Android 应用程序调试工具的简单教学,用于帮助 Android SDK 以及相关工具的新手迅速入门,并在 Android x86 平台上更有效地解决故障。

2.SDK 应用程序调试工具

Android SDK 提供了试应用程序所需的大多数工具。如果希望进行诸如单步调试代码、查看变量值以及暂停执行应用程序的操作,则需要兼容 JDWP 的调试程序。如果使用 Eclipse,则已附带兼容 JDWP 的调试程序,无需设置。如果使用其它 IDE,则可使用其附带的调试程序并将调试程序与特殊端口连接,使其可以和您设备上的应用程序虚拟机通信。

如果使用 ADT(Android 开发工具)插件在 Eclipse 中进行开发,则可使用内置的 Java* 调试程序并结合 DDMS(Dalvik 调试监测程序服务器)来调试应用程序。为了便于访问调试程序和 DDMS,Eclipse 以视图形式显示调试程序和 DDMS 功能,这些都是自定义的 Eclipse 视图,根据您所在的视图显示特定选项卡和窗口。Eclipse 还可负责为您启动ADB (Android Debug Bridge) 主机守护程序,从而无需手动运行该工具。如果使用其他 IDE 进行调试,则可使用 Android SDK 提供的所有调试工具,例如 ADB、DDMS、Java 调试程序等。

图 1. Dalvik 调试监测程序服务器


借助 DDMS,开发人员可查看进程的堆区使用情况、跟踪对象的内存分配、使用模拟器或设备的文件系统、检查线程信息、获取方法配置、使用网络流量工具(在 Android 4.0 中提供)、使用 LogCat 跟踪代码信息以及模拟手机操作和位置。如欲了解更多信息,请参阅 http://developer.android.com/guide/developing/debugging/ddms.html。Android SDK 还提供 Hierarchy Viewer(层级观察器)和 layoutopt(布局优化分析工具)帮助开发人员调试布局问题。

Hierarchy Viewer 应用程序可让您调试并优化您的用户界面 (UI)。它以可视方式呈现布局的视图层级(View Hierarchy 口),提供放大的显示视图(Pixel Perfect 窗口)。

图 2. Hierarchy Viewer(层级查看器)


View Hierarchy窗口显示形成您设备上或模拟器上运行的活动的 UI 的视图对象。您可以用它在整个视图树的上下文中查看各个视图对象。对于每个视图对象,View Hierarchy 窗口还显示渲染性能数据。在选择节点时,视图的额外信息出现在节点上方的小窗口中。 在单击其中一个节点时,可看到有关图像、视图计数和渲染时间的信息。

图 3. 查看对象信息窗口


Pixel Perfect 是一个工具,用于检查像素属性并通过设计图排布用户界面。Pixel Perfect 窗口显示模拟器或设备上可见的屏幕的放大图像。在该窗口中,可检查屏幕图像中各个像素的属性。也可使用 Pixel Perfect 窗口根据位图设计帮助排布应用程序的用户界面。

图 4. Pixel Perfect 窗口


layoutopt 工具可让您分析 XML 文件,该文件定义应用程序的用户界面以查找视图层级中的不当之处。要运行工具,可打开终端并从 SDK 工具/目录启动 layoutopt <xmlfiles>。<xmlfiles> 变量是以空格分隔的要分析的资源的列表,可以是未编译的资源 xml 文件或这些文件的目录。工具会加载指定的 XML 文件并根据一组预定义的规则分析它们的定义和层级。 下面是来自工具的输出示例:

$ layoutopt samples/ samples/compound.xml 7:23 The root-level <FrameLayout/> can be replaced with <merge/> 11:21 This LinearLayout layout or its FrameLayout parent is useless samples/simple.xml 7:7 The root-level <FrameLayout/> can be replaced with <merge/> samples/too_deep.xml -1:-1 This layout has too many nested layouts: 13 levels, it should have <= 10! 20:81 This LinearLayout layout or its LinearLayout parent is useless 24:79 This LinearLayout layout or its LinearLayout parent is useless 28:77 This LinearLayout layout or its LinearLayout parent is useless 32:75 This LinearLayout layout or its LinearLayout parent is useless 36:73 This LinearLayout layout or its LinearLayout parent is useless 40:71 This LinearLayout layout or its LinearLayout parent is useless 44:69 This LinearLayout layout or its LinearLayout parent is useless 48:67 This LinearLayout layout or its LinearLayout parent is useless 52:65 This LinearLayout layout or its LinearLayout parent is useless 56:63 This LinearLayout layout or its LinearLayout parent is useless samples/too_many.xml 7:413 The root-level <FrameLayout/> can be replaced with <merge/> -1:-1 This layout has too many views: 81 views, it should have <= 80! samples/useless.xml 7:19 The root-level <FrameLayout/> can be replaced with <merge/> 11:17 This LinearLayout layout or its FrameLayout parent is useless

Traceview 是执行日志的图形化查看器,这些日志在您使用调试类记录代码中的跟踪信息时创建。Traceview 可帮助您调试应用程序并概述其性能。Traceview 可加载日志文件并在窗口中显示其数据,该窗口如图 5 和图 6 所示以两个面板将您的应用程序可视化:
请点击这个链接阅读详细介绍:http://g.csdn.net/5269323
...全文
747 18 打赏 收藏 举报
写回复
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
1033856 2014-05-21
  • 打赏
  • 举报
回复
谢谢分享,增长见识
明心如月 2014-05-20
  • 打赏
  • 举报
回复
这些都是好东西,android开发都会用到的,赞一个!
validf9 2014-05-20
  • 打赏
  • 举报
回复
值得收藏 只是不知道ios出来懂一点C++的皮毛还需要知道什么
AntiWhite 2014-05-18
  • 打赏
  • 举报
回复
好想快点学会
lina123156 2014-05-17
  • 打赏
  • 举报
回复
用过eclipse,不过还没用过这个功能
zou五月的风 2014-05-16
  • 打赏
  • 举报
回复
有点牛逼啊,哎,要加油学习了
shluochen 2014-05-16
  • 打赏
  • 举报
回复
用过eclipse,不过还没用过这么高级的功能,看看撒
woshizhaoxuhui 2014-05-16
  • 打赏
  • 举报
回复
学习一下,,
兔子和小鱼干 2014-05-14
  • 打赏
  • 举报
回复
Intel太水了
Rocloud 2014-05-13
  • 打赏
  • 举报
回复
好专业,高大上的文章,收藏学习
teemai 2014-05-13
  • 打赏
  • 举报
回复
这个ADT自带的
卖水果的net 2014-05-13
  • 打赏
  • 举报
回复
SF, 抢一个,但是我不懂移动开发。
line_us 2014-05-13
  • 打赏
  • 举报
回复
这个很实用的说。
szfbunce 2014-05-13
  • 打赏
  • 举报
回复
谢谢分享,增长见识
nettman 2014-05-13
  • 打赏
  • 举报
回复
收藏了
lanlvy 2014-05-13
  • 打赏
  • 举报
回复
收藏学习还是有必要的!
相关推荐
发帖
英特尔边缘计算技术

560

社区成员

英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
帖子事件
创建了帖子
2014-05-13 11:22
社区公告
暂无公告