Android开发常用工具

本文介绍了Android开发中常用的工具,如ADB、DDMS、Lint、Monkey等,并详细阐述了如何利用这些工具进行代码调试、内存分析、性能优化以及自动化测试。通过实际案例,展示了如何在开发过程中提高效率,确保应用的稳定性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    
这里介绍的几个工具都以Devices这个选项卡为出发点。先介绍第一个

2.1.1 debug process(标注1)

    如果你管理了开发工程的所有代码,那么这个功能可能对你用处不大,但是,当遇到需要协同工作,无法拿到整个工程的源码时,那么当你需要debug的时候,这个功能可谓强大。
应用场景如下:
1.你只有一个完整工程的部分代码,分模块开发比较常见。
2.你有完整工程打出的apk包,并知道这个包的完整包名字。
接下来就可以操作了
1.首先确保你当前workspace里有一个叫这个包名称的工程,没有的话不要紧,创建一个叫这个包名称的空工程就可以。作用是让Eclipse知道我可以再当前workspace debug这个进程,如果没有这个包名的工程的话,点击1是会报下图所示的错。如果你所获得的那份代码拷贝的包名就是整体包的包名称的话,这一步可以省略。


2.进行完第一步以后,应该看到如下图所示,你就可以开始debug你的工程了,但是Eclipse并不知道你的源码所在。这时候,你需先在你的源码可以执行到的某处加上一个断点。然后运行手机上的程序。


 3.程序运行到你这个断点这里,Eclipse不知道源码所在,会出现如下图所示,然后,你就可以点击Edit Source Lookup Path... 引入你的源码工程了,然后就可以和正常的debug整个工程一样,debug你自己的源码了。停掉debug可以点击devices选项卡上面的STOP按钮。




 




2.1.2 update heap

    devices选项卡第二个按钮,可以允许你查看进程堆栈使用情况,这在分析你的对象分配,内存试用情况,内存泄露的情况的时候格外有用,具体用法为:
1.先选择你需要查看的进程,然后点击update heap,
2.接着,找到heap选项卡,点击Cause GC,重复点击可以刷新数据
3.点击列表中的具体类型可以通过柱状图的形式显示特定对象内存试用情况。

 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到底持有什么对象没有释放。

2.1.4 UPDATE Threads

    该功能用于查看App中执行的线程情况,对处理线程死锁的情况的时候,可以提供一些信息。具体用法如下
1.同样选择要监控的进程,然后点击UPDATE Threads按钮。

2.在Threads选项卡中查看进程中的线程状态,点击某个线程,点击refresh,还可以查看具体线程中函数执行情况。

2.1.5 Start Method Profiling

Traceview和dmtracedump相关,这个功能十分强大,以图形化的展示了进程执行情况,监控到方法级的性能执行情况,方便性能调优。因为内容较多,这里不再介绍,参考 http://www.cnblogs.com/sunzn/p/3192231.html

2.1.6 Screen Capture

这个没啥好介绍的,屏幕截屏,方便实用。

2.1.7 Dump View Hierarchy for UI Automator

View Hierarchy 工具同样强大而常用,它可以用来查看一个Activity布局的层次,显示每个布局绘制的时间,指导程序员如果高小的布局,减少布局层次,提高绘制效率,增强用户体验。其功能很多,这里只做简单介绍:
1.点击Dump view Hierarchy for UI automator 按钮,然后得到分析文件如下图

2.1.8 其他

DDMS还提供了很多其他强大的工具,
1.分析内存分配的Allocation Tracker,
2监控网络IO的NetWork Statistics,
3.查看系统目录接口,pull,push文件的File Explorer
4.控制模拟器打电话,发短信,模拟GPS信息,提供快慢网络模拟Emulator Control
5.以及监控系统状态的System Infomation等
这些功能都非常的强大且实用,可以为程序员开发出高性能,健壮的App提供帮助,在平常开发与测试中经常使用可以大大提高工作效率。

2.2 Lint

    Lint工具可以分析应用程序及其资源,并提出关于如何改进和优化的建议。
    可以通过两个途径试用Lint工具,分别是Eclipse菜单栏以及项目->右键->Android Tools

Lint最常用的功能包括
1.检查XML布局性能,提出性能改进意见,常见的如嵌套的Weight试用,Imageview添加contentDescription等。
2.检查未使用的资源文件,随着工程迭代,人工很难统计未用到的资源文件,lint很好的解决了这个问题,注意一点,检查后删除了没用的资源文件后,再执行一遍Lint,往往还能发现未用到的资源文件。
3.国际化问题
Lint可以检查的问题远远不止这些,具体可以查看Preferences下,Android中的Lint Error Checking选项,并可以修改问题的提醒级别(从重大错误到忽略)来高亮一些错误或屏蔽一些不想修改的错误。


2.3 Draw9Patch

   适配是Android的一大难题,对于一个背景图,如何才能填充满一个大小可能随时变化的View而不失真是程序员经常面对的问题。常见的做法是通过切图,将不变的部分和拉伸的部分区分开来,这样做可以达到效果,但是比较麻烦。Android提供了.9图来解决这个问题。

    .9图就是普通的PNG图,只是在外围多了一个像素的边框来指定拉伸以及保留区域。左边和上边指定的交叉区域为可拉伸部分,其余的部分为保留不变的部分。而右面与下面的交叉部分,这相当于添加一个padding的效果,这个如果不好理解的话,其实可以不用,只指定左边和上边的边线。


编辑.9图有两种方式,一种是SDK tools目录下找Draw9Patch,或者在Eclipse中选择一个你要拉伸的png图,右键,open with->other->Android Draw 9-patch Editor


2.4 Monkey

Monkey 和Monkey Runner是测试工具,可以用来在一个UI视图中测试应用程序的稳定性。
Mokey要在ADB shell中试用,他随意分发一些系统UI事件(点击,滑动,长按等等)给应用程序,给应用程序进行压力测试。帮助你了解一些你可能没想到的边缘情况下的对UI非常规使用可能导致的问题。
一个典型的monkey命令如下
$ adb shell monkey -p your.package.name -v 500

p指定你的程序包名,v指示随机分发的事件数。

monkey runner 则可以自定义一些事件,它是一个Python脚本API,允许发送特殊的UI指令,也可以安装,卸载,截图等。他可以以从应用程序外部控制设备。以一种可以预测以及重复的方式执行UI测试,功能测试和单元测试。详见以下链接
http://www.cnblogs.com/findyou/p/3420936.html

2.5 ProGuard

  该工具可以用来缩减和迷糊代码,使你的工程难以被破解。具体内容待补充
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值