读书人

Android开发跟调试

发布时间: 2012-09-05 15:19:34 作者: rapoo

Android开发和调试 .
开发和调试

这一节将介绍在android上开发调试应用程序。它将教会我们如何创建,编译,运行以及调试android代码。或者,你也可以从Hello Android tutorial.开始

?

主要内容

    你可以用logcat阅读这些信息。

    Traceview - Android可以将函数的调用情况以及调用时间保存到一个log文件中,你可以用图形阅读器Traceview查看详细内容。更多信息查看这个连接下的主题 Eclipse plugin -Eclipse插件整合了相当数量的工具(ADB,DDMS,logcat output, 以及其它功能),点击此连接查看更多信息。 Debug and Test Device Settings -Android揭示了很多有用的设定,例如CPU使用率和 帧速率,参看下面的 Debug and Test Settings on the Emulator

    Also, see the Troubleshooting section of the doc to figure out why your application isn't appearing on the emulator, or why it's not starting.

    此外,参看疑难解答这一节文档,以找出您的应用程序为什么没有出现在模拟器上,或为什么不开始。

    ?

    ?

    设备上的调试和测试设置

    Android允许你设置多个设定以便你测试和调试程序。获得模拟器的开发设置,可以选择Dev Tools>Development Settings。 按照以下选项将打开开发设置页(或其中之一):

    Debug app??选择要被调试的程序,你不需要设置这个来关联调试器,但是这个变量有两个作用: 防止Android在调试的断点处长时间停留时抛出错误。 允许你选择Wait for Debugger选项来暂停程序启动,直到调试器被关联上(如下介绍) Wait for debugger ?? 阻塞程序加载直到关联上调试器。这样你可以在onCreate()中设置端点,这在调试Activity的启动进程时很重要。当你改变这个选项,任何当前运行的程序实例将被杀死。为选中此框,你必须如上面介绍的选择一个调试程序。这和在代码中添加waitForDebugger()是一样的。 Immediately destroy activities???告诉系统只要activity停止了就销毁它。 (犹如 Android必须回收内存).?这个在测试 onSaveInstanceState(Bundle) / onCreate(android.os.Bundle)代码路径 时非常有用, 否则将难以生效.选择这个选项可能带来很多问题,因为他们没有保存程序的状态。 Show screen updates??选中这个选项时,屏幕上任何被重绘的矩形区域会闪现粉红色。这对于发现屏幕不必要的绘图很有用。 Show CPU usage???在屏幕顶端显示一个CPU进度,显示CPU的使用情况。 上面红色栏显示总的CPU使用率,下方绿色栏显示目前画面的CPU使用时间。注意:一旦打开次功能就不能关掉,除非重新启动模拟器。??? Show background???没有activity屏幕显示时显示背景面板,这个通常在调试的时候才会发生。

    模拟器重起后这些设置仍被记忆。

    ?

    顶端调试技巧<!--<ul><li><a href="#stackdump">Quick stack dump</a></li><li><a href="#displayinfo">Displaying useful info on the emulator screen </a></li><li><a href="#dumpstate">Getting system state information from the emulator (dumpstate)</a></li><li><a href="#dumpsys">Getting application state information from the emulator (dumpsys)</a></li><li><a href="#radioinfo">Getting wireless connectivity information</a></li><li><a href="#loggingdata">Logging Trace Data</a></li><li><a href="#logradio">Logging Radio Data </a></li><li><a href="#adb">Running adb</a></li><li><a href="#screencaps">Getting screen captures from the emulator</a></li><li><a href="#debughelpers">Using debug helper classes</a></li></ul>-->快速堆栈转储 从模拟器上获得堆转储,你可以登录adb shell,用"ps"命令找到你想要的进程,然后用"kill-3",堆栈使用轨迹将显示在log文件中。 在模拟器屏幕上显示有用信息 设备可以显示一些有用信息,例如CPU使用率,以及高亮显示重绘区域。可以在开发设定窗口打开和关闭这些功能。Setting debug and test configurations on the emulator.中有详细介绍。 你可以通过Dalvik Debug Monitor Service工具获得转储状态信息。请参考adb中介绍的dumpsys and dumpstate 获得模拟器中应用程序状态信息(dumpsys) 你可以通过Dalvik Debug Monitor Service工具获得dumpsys信息。参考adb中介绍的dumpsys and dumpstate 。 获得无线连接信息 你可以通过Dalvik Debug Monitor Service工具获得无线连接信息。在Device菜单中选择"Dump radio state" 记录跟踪数据 你可以在activity中通过调用android.os.Debug.startMethodTracing()来记录函数的调用以及其它跟踪数据。详细的参考Running the Traceview Debugging Program 。 记录无线数据 ? 默认情况下系统不记录无线数据(数据很多)。然而,你可以用下面的命令记录无线数据:
    adb shell logcat -b radio
    运行adb Android 有adb工具,他提供了许多功能,包括移动和同步文件到模拟器上,改变端口,在模拟器上运行 UNIX shell。 详见Using adb。 获得模拟器屏幕截图 Dalvik Debug Monitor Server (DDMS)可以抓取模拟器屏幕截图。 ? 使用调试帮助类 Android为方便使用提供了调试帮助类,例如util.Log 和 Debug

    ?

    编译安装Anroid应用程序

    Android要求专门的编译工具可以正确的编译资源文件和应用程序的其他部分,因此,你必须为你的应用程序建立一个专门的编译环境。

    专门Android编译器编译步骤包括,编译XML和其他资源文件并创建合适的输出格式。编译好的Android应用程序是一个.apk压缩文件,它含有.dex文件,资源文件,原data文件,以及其他文件。你可以通过scratch,或者源文件构造一个合适的Android工程。

    Android目前不支持的在本地代码上开发第三方应用程序。

    比较推荐的Andriod应用程序开发方法是use Eclipse with the Android plugin,它支持编译,运行,调试Android应用程序。

    如果你还有其他IDE,Android provides tools for other IDEs 可以编译运行Android应用程序,但是他们不是很完整。

    ?

    移出一个Android应用程序

    移出一个安装在模拟器上的应用程序,你需要执行adbrun adb删除.apk文件。.apk文件是在安装的时候发送到模拟器上的。使用adb shell进入设备的shell,切换到data/app目录下,用rm命令删除apk文件 :rm your_app.apk。用法在连接中介绍。

    ?

    Eclipse技巧在Eclipse上执行任意java代码

    在Eclipse上,当程序停在断点处时你可以执行任意代码。例如,在一个含有“zip”字符串参数的函数中,你可以获得软件包信息,调用类方法。你也可以执行任意静态方法:如,输入 android.os.Debug.startMethodTracing() ,启动 dmTrace。

    打开代码执行窗口,主菜单中选择Window>Show View>Display,打开显示窗口,一个简单的文本编辑器。输入你的代码,高亮显示文字,单击'J'图标(或者CTRL + SHIFT + D)运行代码。代码在被选线程的上下文中运行, 而这个线程必须是停在断点处或者单步停止点。(如果你手动挂去线程,你必须单步执行。线程停在Object.wait()是没有用的)。

    如果你目前是停在断点,你可以简单的按下(CTRL + SHIFT + D)高亮并执行一段代码。

    你可以高亮同一选中区域的文字,通过按下 ALT +SHIFT + 向上/向下箭头来改变所选区域的大小

    下面是一些例子,输入内容和eclipse 显示窗口的回应信息。

    InputResponsezip(java.lang.String) /work/device/out/linux-x86-debug/android/app/android_sdk.zipzip.endsWith(".zip")(boolean) truezip.endsWith(".jar")(boolean) false

    你也可以利用剪贴板在不调试时插入执行代码。在eclipse文档中查找"scrapbook"相关。

    手动运行DDMS

    虽然推荐用ADT插件调试程序,但是你也可以手动运行DDMS,配置Eclipse以便在8700端口上调试程序(注意:首先确定你启动了DDMS)。

    增加JUnit测试类

    在Eclipse/ADT ,你可以在程序中添加JUnit测试类,然而,测试运行正常之前你需要设置专门的JUnit 配置,

    关于如何设置JUnit配置的详细细节,参看请参见疑难解答专题I can't run a Junit test class in Eclipse。

读书人网 >Android

热点推荐