使用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有相当广泛的一套工具帮助你调试你的应用程序:
· DDMS -一个生动的程序,它支持端口转换(因此你可以在IDE中给你的代码下端点),支持抓取模拟器屏幕,线程和堆栈信息,以及许多其他功能。你还可以运行logcat重新获得Log信息。点击此连接查看更多信息。
· logcat- 转储系统信息,这些信息包括,模拟器抛出错误时堆栈的运行过程以及日志信息。运行logcat,点击此连接。
· ...
· I/MemoryDealer( 763): MemoryDealer (this=0x54bda0): Creating 2621440 bytes heap at 0x438db000
· I/Logger( 1858): getView() requesting item number 0
· I/Logger( 1858): getView() requesting item number 1
· I/Logger( 1858): getView() requesting item number 2
· D/ActivityManager( 763): Stopping: HistoryRecord{409dbb20 com.android.home.AllApps}
...
· Android Log - 输出模拟器上log文件信息日志类。如果你在DDMS上运行了logcat,你可以实时阅读这些信息。在你的代码中添加logging方法的调用。使用log类,你可以根据你想获得信息的重要程度不同调用Log.v(verbose),Log.d()(debug),Log.i()(information),Log.w()(warning)或者Log.e(error).来分派log信息Log.i("MyActivity", "MyClass.getView() — Requesting item number " + position)
你可以用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 选择要被调试的程序,你不需要设置这个来关联调试器,但是这个变量有两个作用:
o 防止Android在调试的断点处长时间停留时抛出错误。
o 允许你选择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屏幕显示时显示背景面板,这个通常在调试的时候才会发生。
模拟器重起后这些设置仍被记忆。
从模拟器上获得堆转储,你可以登录adb shell,用"ps"命令找到你想要的进程,然后用"kill-3",堆栈使用轨迹将显示在log文件中。
设备可以显示一些有用信息,例如CPU使用率,以及高亮显示重绘区域。可以在开发设定窗口打开和关闭这些功能。Setting debug and test configurations on the emulator.中有详细介绍。
你可以通过Dalvik Debug Monitor Service工具获得转储状态信息。请参考adb中介绍的dumpsys and dumpstate
你可以通过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
Android 有adb工具,他提供了许多功能,包括移动和同步文件到模拟器上,改变端口,在模拟器上运行 UNIX shell。 详见Using adb。
Dalvik Debug Monitor Server (DDMS)可以抓取模拟器屏幕截图。
Android为方便使用提供了调试帮助类,例如util.Log 和 Debug
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应用程序,但是他们不是很完整。
移出一个安装在模拟器上的应用程序,你需要执行adbrun adb删除.apk文件。.apk文件是在安装的时候发送到模拟器上的。使用adb shell进入设备的shell,切换到data/app目录下,用rm命令删除apk文件 :rm your_app.apk。用法在连接中介绍。