调试 Android* x86 应用程序的方法以及要使用的工具
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 调试程序等。

借助 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 窗口)。

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

Pixel Perfect 是一个工具,用于检查像素属性并通过设计图排布用户界面。Pixel Perfect 窗口显示模拟器或设备上可见的屏幕的放大图像。在该窗口中,可检查屏幕图像中各个像素的属性。也可使用 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
众所周知,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
...全文
相关推荐
传智播客安卓4.0笔记
传黑马智播客张泽华老师的上课笔记。详细介绍了android4.0的开发,使用,适合初学者下载学习。
Android App软件设计.docx
Android App软件设计。
Android 调用so包的方法
文章链接 https://blog.csdn.net/just_hu/article/details/89280504
Android-JNI完整工程,实现c++调用java和java调用c++
Android-JNI完整工程,实现c调用java和java调用c
Android使用JNI调用Python so解释器
Android使用JNI调用Python so解释器


