QQ截图直接复制粘贴结果没有了,悲催,慢慢添加回去
不知道大家Android的学习曲线是什么样子的,是买一部Android大部头的书啃完后开始搞呢,还是硬着头皮从helloworld开始,不会的就查,学到哪是哪。反正我属于后者,在连Java都不会的情况下,一步步的学下来的。
Android开发不难,稍微有点编程基础的人,都可以在一天之内运行起来一个简单的Android APP,而且如果你会Java或者C#基础的话,这个时间还会更少。但是,随着开发的深入,你做的App越来越高级,但是你用的工具貌似还是和你当初写HelloWorld的一样,Eclipse+ADT,LogCat,其实Google提供了远远不止这些工具来供你提高开发效率。是时候做个简单的了解啦。
1.ADB
ADB(Android Debug Bridge)是Android SDK中的一个工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备。这个应该还算是大家常用的一个工具,具体的安装和配置这里不在提供,adb很强大,可以很好的帮助我们完成如下一些任务:
1、在Android设备上运行Shell(命令行)
2、管理模拟器或设备的端口映射
3、在计算机和设备之间上传/下载文件
4、将电脑上的本地APK软件安装至Android模拟器或设备上
以下罗列一些Android常用adb命令,其实很多功能Eclipse已经提供,但是命令行模式可以更便捷的完成这些工作
1.adb install xxx 将apk文件装到手机或者模拟器中
2.adb devices 查看当前连接到电脑并且被成功识别的手机
3.adb uninstall [-k ]<软件名>
卸载指定软件,如果加 -k 参数,则可保留配置和缓存文件.
4.adb shell 登陆手机shell,如果手机root了,基本上你就可以随心所欲、为所欲为了。
5.adb push adb pull 从设备上拉取文件或者上传文件到设备,注意权限问题。
另外,一个经常遇到的场景是查看手机数据库文件,我们可以进入shell后试用 sqlite3命令来操作。常见的sqlite3命令有:
.databases 列出数据库文件名
.tables ?PATTERN? 列出?PATTERN?匹配的表名
.import FILE TABLE 将文件中的数据导入的文件中
.dump ?TABLE? 生成形成数据库表的SQL脚本
.output FILENAME 将输出导入到指定的文件中
.output stdout 将输出打印到屏幕
.mode MODE ?TABLE? 设置数据输出模式(csv,html,tcl…
.nullvalue STRING 用指定的串代替输出的NULL串
.read FILENAME 执行指定文件中的SQL语句
.schema ?TABLE? 打印创建数据库表的SQL语句
.separator STRING 用指定的字符串代替字段分隔符
.show 打印所有SQLite环境变量的设置
.quit 退出命令行接口
2.DDMS
DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等一些非常实用的功能。
DDMS为IDE和Emultor及真正的android设备架起来了一座桥梁。开发人员可以通过DDMS看到目标机器上运行的进程/现成状态,可以android的屏幕到开发机上,可以看进程的heap信息,可以查看logcat信息,可以查看进程分配内存情况,可以像目标机发送短信以及打电话,可以像android开发发送地理位置信息,也可以像GDB一样attach某一个进程调试。
DDMS底层其实也是使用了ADB来连接手机设备的。
下面就给大家具体介绍一些这些工具的使用方法:
2.1 DDMS devices
2.1.1 debug process(标注1)
3.程序运行到你这个断点这里,Eclipse不知道源码所在,会出现如下图所示,然后,你就可以点击Edit Source Lookup Path... 引入你的源码工程了,然后就可以和正常的debug整个工程一样,debug你自己的源码了。停掉debug可以点击devices选项卡上面的STOP按钮。
2.1.2 update heap
2.1.3 Dump HPROF file
这个工具在分析内存泄露的时候,可谓强大,我经常用它来检测Acitivity的内存泄露情况,提高App的用户体验。步骤如下。
1.同样的,先选择你的dump的进程,然后点击devices 上的 Dump HPROF file 按钮,耐心等待
2.会出现如下图所示对话框,选择默认的第一个,Finish
3.如果想更方便的查看,可以选择Memory Analysis perspective。这个估计需要安装新插件,地址参考http://download.eclipse.org/mat/1.2/update-site/
4.点击创建histogram,并按照Objects数据进行排序,如果排查Activity泄露,可以输入Activity进行过滤。对于有多个Object对象的Activity,高度怀疑内存泄露
5.对怀疑的内存泄露Activity,找到Activity到GC root的路径,选择Activity右键,选择“Merge Shortest Paths to GC Root”,再选择“with all reference”.
6.具体问题具体分析,查看该Activity到底持有什么对象没有释放。