Android调试工具及方法
2014-01-06 16:20
274 查看
Logcat
Dump一份系统消息的日志。这些消息包括模拟器抛出错误时的堆栈跟踪。Android Log
一个记录日志的类,用来将消息写入模拟器上的日志文件中。如果你在DDMS上运行logcat的话你可以就实时查看消息。在你的代码中加入几个写日志方法的调用。为了使用Log类,你只需要调用Log.v()(详细),Log.d()(debug),Log.i()(information),Log.w()(warning) 或者 Log.e()(error),根据你想获得的日志信息来选择相应的方法
Log.i("MyActivity", "MyClass.getView() — Requesting item number " + position) 你可以用logcat来读取这些信息
Traceview
Android可以保存一个日志用来记录被调用的方法以及该方法被调用的次数,通过Traceview你可以在一个图形化的界面中查看这个日志文件。
一:调试桥ADB
二:ADB的主要功能有哪些?
一:调试桥ADB
adb是什么?adb有什么用?adb工具如何用?
是用来管理模拟器和真机的通用调试工具,该工具功能强大,直接打开cmd即可使用adb命令,adb的全称为Android Debug Bridge,是起到调试桥的作用,通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具,adb的工作方式比较特殊,采用**Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行,借助adb工具我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等,其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作
二:ADB的主要功能有哪些?
1:查看当前模拟器或者Android设备实例的状态
一般在使用前都会使用adb devices这个命令查看一下模拟器的状态,通过这个命令得到ADB的回应信息,可以看到ADB作为回应为每个实例制定了相关的信息
1.1:emulator-5554为实例名称
1.2:device为实例连接状态,device表示此实例正与adb相连接,offline表示此实例没有与adb连接或者无法响应
![](http://images.cnitblog.com/blog/285763/201401/06174420-b994ad4f7c67427aa3ecc24ac6dae776.jpg)
2:安装和卸载APK应用程序
你可以从电脑上复制一个APK应用到模拟器或者Android设备上,通过adb install <path_to_apk>安装软件,adb uninstall <packageName>卸载软件,如果你不知道这个包名,在AndroidManifest.xml里的找package=""就可以了
2.1: 先把apk文件拷贝到sdk目录下的tools
![](http://images.cnitblog.com/blog/285763/201401/06174427-b5fa11220a3248f0a883a461528b9aca.jpg)
2.2: 进入dos下切换到SDK的安装路径下的tools目录
2.3 :执行安装命令
adb install <path_to_apk>
![](http://images.cnitblog.com/blog/285763/201401/06174436-645c894044734f5ca67c855f142b21ee.jpg)
发生的错误,因为我连接了真机,而且也打开了模拟器,所以adb给我的回应信息是“比一个多的驱动设备和模拟器”,我最后关闭掉了模拟器在运行安装命令,就提示安装成功了
![](http://images.cnitblog.com/blog/285763/201401/06174442-c61cacb9bf574188b7e4acea223fe013.jpg)
卸载APK
![](http://images.cnitblog.com/blog/285763/201401/06174448-3a197aaa765f4835af45cf96cc957ae8.png)
3:从本机上复制文件到模拟器或者Android设备
adb push <本地路径><远程路径>,<本地路径>指的是自己的机器上或者模拟器上的目标文件,<远程路径>指的是远程设备实例上的目标文件
4:从模拟器复制文件到模拟器或者Android设备
adb pull <远程路径><本地路径>,<本地路径>指的是自己的机器上或者模拟器上的目标文件,<远程路径>指的是远程设备实例上的目标文件
5:使用shell命令
输入adb shell就可以进入shell命令行了,可以使用一些常用的shell命令,如:ls命令列出了文件
![](http://images.cnitblog.com/blog/285763/201401/06174454-115730bb15dc45e8ae17bde8755c99ca.png)
设备上调试和测试的设置
Android提供了众多的设置使你可以更容易的调试和测试程序。要进入开发设置页面,在模拟器中转到Dev Tools > Development Settings。在该设置页面有以下选项:Debug app:选择要调试的程序。你不需要设定其关联至调试器,但是设定这个值有两个效果:
在调试的时候,如果你在一个断点处暂停了过长的时间,这个设定会防止Android抛出一个错误
这个设定使你可以选择“等待调试器”选项,使程序只有在调试器关联上之后才启动
Wait for Debugger:阻塞所选的程序的加载直到有调试器关联上,这样你就可以在onCreate()中设置断点,这对于调试一个Activity的启动进程是非常重要的。当你对该选项进行了更改,任何正在运行的程序的实例都会被终止。你只有在上面的选项中选择了一个调试程序才能够选中该选项。你也可以在代码中添加waitForDebugger()来实现同样的功能。
Immediately destroy activities:告诉系统一旦一个activity停止了就销毁该activity(例如当Android释放内存的时候)。这对于测试代码onFreeze(Bundle)/onCreate(android.os.Bundle)是非常有用的,否则会比较困难。如果你的程序没有保存状态,那么选择这个选项很可能会引发很多问题。
Show screen updates:对于任何正在被重绘的screen sections都会在其上闪现一个粉红色的矩形。这对于发现不必要的screen绘制是很有必要的。
Show CPU usage:在屏幕上方显示CPU信息,显示有多少CPU资源正在被使用。上方红色条显示总的CPU使用率,它下方绿色的条显示CPU用在compositing the screen上的时间。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。
Show screen FPS:显示当前的帧率。这对于查看游戏达到的总的帧率是非常有用的。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。
Show background:当没有activity screens可见时,显示一个背景模式。一般是不会出现的,仅仅在Debug的时候会出现。
设定的选项在模拟器重启之后仍然有效,如果要取消设定的选项,在取消设定以后还要重启模拟器,才能生效。
重要的调试小提示
快速的堆栈dump要在模拟器上获得一个堆栈dump,你可以通过adb shell登入,用“ps”找到你想要的进程,然后“kill -3”,
堆栈跟踪信息就会记录到日志文件中了。
在模拟器屏幕上显示有用信息
设备上可以显示诸如CPU利用率或者对重绘区域的边缘高亮显示等有用信息,在开发设置窗口可以打开或者关闭这些功能。
从模拟器上获取系统状态信息(dumpstate)
你可以通过Dalvik Debug Monitor Service工具来获得dumpstate信息。
从模拟器上获取程序状态信息(dumpsys)
你可以通过Dalvik Debug Monitor Service工具来获得dumpsys信息。
获取无线连接信息
你可以通过Dalvik Debug Monitor Service工具来获得无线连接信息。在Device菜单,选择“Dump radio state”
日志记录跟踪数据
你可以在一个activity中通过调用android.os.Debug.startMethodTracing()来用日志来记录方法调用和其他跟踪数据。
日志记录Radio Data
默认情况下,radio信息是不会记录在系统中的(因为数据量巨大)。然而,你可以通过下面的命令来开启radio记录 adb shell logcat -b radio
运行adb
Andoid中自带了一个叫adb的工具,该工具功能强大,可以移动并同步文件到模拟器,转发端口。在模拟器上运行一个UNIX shell。
从模拟器上获取屏幕截图
Dalvik Debug Monitor Server (DDMS)可以从模拟器上获取屏幕截图
利用调试帮助类
Android为了开发者的方便提供了诸如util.Log和Debug等帮助类
命令行运行程序的方法
参考:http://www.javaeye.com/topic/201856 http://www.javaeye.com/topic/149227进入shell
引用
C:\Documents and Settings\mawenjian>adb shell
看一下命令的帮助
引用
# am -help
am -help
Error: Unknown command: -help
usage: am [start|instrument]
am start [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
[-c <CATEGORY> [-c <CATEGORY>] ...]
[-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
[-n <COMPONENT>] [-D] [<URI>]
am instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
[-w] <COMPONENT>
好了,试一下启动浏览器
引用
# am start -n com.google.android.browser/com.google.android.browser.BrowserActivity
am start -n com.google.android.browser/com.google.android.browser.BrowserActivity
Starting: Intent { comp={com.google.android.browser/com.google.android.browser.BrowserActivity} }
ok,成功了
大家试试下面的命令吧:
引用
# am start -a android.intent.action.VIEW -d http://mwjian.javaeye.com am start -a android.intent.action.VIEW -d http://mwjian.javaeye.com Starting: Intent { action=android.intent.action.VIEW data=http://mwjian.javaeye.com }
# am start -a android.intent.action.CALL -d tel:88888888
am start -a android.intent.action.CALL -d tel:88888888
Starting: Intent { action=android.intent.action.CALL data=tel:88888888 }
# am start -a android.intent.action.ALL_APPS
am start -a android.intent.action.ALL_APPS
Starting: Intent { action=android.intent.action.ALL_APPS }
# am start -a android.intent.action.VIEW geo:0,0?q=shanghai
am start -a android.intent.action.VIEW geo:0,0?q=shanghai
Starting: Intent { action=android.intent.action.VIEW data=geo:0,0?q=shanghai }
本文参考:Android手册 www.cnblogs.com/jacktu 万能的G.cn
相关文章推荐
- Android调试工具及方法
- Android调试工具及方法
- 调试 Android* x86 应用程序的方法以及要使用的工具
- Android调试工具及方法
- Android调试工具及方法
- Android 中运行GDB调试工具的方法
- 你不得不知的Android调试工具的8大方法
- android 调试工具adb在mac上安装方法
- Android调试工具及方法
- Android调试工具及方法
- Android调试工具及方法
- Android调试工具及方法
- Android调试工具及方法
- Android调试工具及方法
- android.os.Debug调试工具使用方法
- 8大你不得不知的Android调试工具的方法
- Android调试方法及常用工具logCat的介绍
- Android调试工具及方法
- Android调试工具及方法
- Android调试工具及方法