ITEEDU

开发和调试

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

 

主要内容

  1. I can't compile my app because the build tools generated an expired debug certificate.

     

    使用ApiDemo示例应用程序

    Android SDK包含了一套示例程序,他们验证了许多功能以及API的用法。ApiDemos软件包被提前安装在模拟器中,所以你可以启动模拟器,在主画面的应用程序抽屉里打开它。

    你也可以在<SDK>/samples/ApiDemos中找到源码,可用看看它,学习Demo的实现方法。

    如果你愿意,你还可以将ApiDemo的示例程序作为一个工程加载进来,修改并在模拟器上运行。然而,在这之前你首先要卸载之前已经安装的ApiDemos。如果你没有移除之前安装的版本而直接在开发环境中运行或修改ApiDemos,将会有安装错误。

    关于如何卸载和重装ApiDemo,可以参考I can't install ApiDemos apps in my IDE because of a signing error.这样你就可以在你的开发环境中工作了。

    调试

    Android有相当广泛的一套工具帮助你调试你的应用程序:

    • 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 显示窗口的回应信息。

      Input Response
      zip (java.lang.String) /work/device/out/linux-x86-debug/android/app/android_sdk.zip
      zip.endsWith(".zip") (boolean) true
      zip.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。