Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,由于QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进行软件选用的决策。
目前,已经有很多可以监控android app 性能的工具可以供开发人员使用,如:基于Eclipse插件体系的MAT,其通过生成.hprof文件对内存泄露情况进行排查;内存检测工具APT:提供CPU利用率实时曲线图,方便对比测试内存泄露问题[图0-1]
图 0-1 通过APT实时监测android应用的内存和CPU使用情况
目前最成熟的android性能监测工具往往是发迹于eclipse-ADT时代,而在android-studio日益稳定的如今,android开发人员已经有了更好的选择(遥想3年前用的第一个版本的android studio,跟现在比已经不可同日而语),从 google官网已经不再提供adt集成开发境的下载可以看出,android-studio已经是大势所趋。本文由浅入深的总结几个适用于android-studio的android质量控制工具
在性能测试之前,首先要对工程源码进行排错和调优。Android Lint 可以通过扫描和检查对Android工程可能存在的问题进行审查,其是一种静态测试工具,通过发现代码中可能存在的问题来在应用发布前保证程序质量。 早期的lint工具可以与Eclipse集成,如今android-studio已经内置这一工具。通过在工程标题上右键->Analyze->Inspect Code可以打开该工具。
图 1-1 在android-studio中调用lint
Android Lint可以检查出的错误包括:
双击错误信息,可以看到错误的详情介绍和在代码中的位置。(这里的错误往往不是异常或error,而是你代码中可以进一步优化的部分)
图1-2 使用android studio lint 优化代码
代码没有问题后,就可以将程序run起来,进行下一步的内存和CPU监测了。
Memory Monitor 是android studio 提供的性能分析工具, 可以通过视图直观的看到android应用的内存,CPU占用情况。
图 2-1 Memory Monitor 视图(1)
现在可以再avd上或真机上对应用进行操作,Memory Monitor可以反映出当前操作带来的CPU和内存变化。
图 2-2 Memory Monitor 视图(2)
作为Android初学者感觉android-studio内置的监控工具已经非常直观和强大,不知道以后会不会接触到更加优秀的开源性能测试项目。 作为美中不足,android-studio的监控功能不能够输出,所以也不方便统计和横向对比。 同时,流量的监控也不被包括其中。下面介绍一种可以输出表单的,直接运行于真机/模拟器的开源项目:Emmagee
Emmagee的功能包括:
改项目的真正流弊之处还在于,它不是一种嵌入式工具,而是一个单独的app。所以完全不依赖于开发环境。
Git 地址: https://github.com/kevinkong/Emmagee
Apk地址:http://code.google.com/p/emmagee/downloads/list
使用方式:
Emmagee 界面如下图所示,我选择监控自己的一个app:alicom-in 。
图 3-1 Emmagee启动界面
开始测试后,被测应用会自动启动。 这里可以对被测应用进行一些操作,然后返回Emmagee界面,选择结束应用。结果表单会被保存到指定目录。
图3-2 Emmagee 结束录制
表3-1 Emmagee 输出结果
通过excel自带的表格工具可以对该表单进行分析,也可以进一步比对不同app的测试结果。
图3-3 使用excel直观观察各指标检测结果
Android应用性能指标是开发人员和用户所关注的重点,为了对今后的客户端开发工作进行技术储备,为团队提供先验知识,今天了解了适用于Android Studio的性能保证工具。包括:
1 android studio静态代码审查工具 lint
2 android studio 内存,CPU实时监测工具Memory Monitor
3 android应用数据统计工具Emmagee
这三种工具具有初步支持android开发者对程序性能进行关注的能力。同时,也存在一些不足,比如说Memory Monitor和Emmagee需要互补对方的缺点,如果有一个工具既能实时监控,又能输出表单(包括流量监控结果),就更好了。 另外,Emmagee工具虽然可以对整个应用的性能指标作出观测,但是具体由哪一个函数或服务引起了性能问题,则需要开发人员的进一步排查。 当需求不仅仅是性能控制,而是需要性能调优时,这种功能上的缺憾就不容忽视了。
实际上,今天也了解到另一个工具:Traceview , 其可通过在关键代码前后设置监视断点来统计各个函数对应用性能带来的影响,这将对提高应用性能起到关键作用,也是我下一步学习的重点。
1 《性能测试 - Android篇》http://www.atatech.org/articles/36920
2《Android系统性能调优工具介绍》http://www.atatech.org/articles/16013
3《Android性能测试工具Emmagee介绍 》http://blog.163.com/rettar@126/blog/static/121650342201312551147909/
4《Android性能测试工具:Emmagee》http://www.open-open.com/lib/view/open1367026451078.html