Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,由于QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进行软件选用的决策。
目前,已经有很多可以监控android app 性能的工具可以供开发人员使用,如:基于Eclipse插件体系的MAT,其通过生成.hprof文件对内存泄露情况进行排查;内存检测工具APT:提供CPU利用率实时曲线图,方便对比测试内存泄露问题。
目前最成熟的android性能监测工具往往是发迹于eclipse-ADT时代,而在android-studio日益稳定的如今,android开发人员已经有了更好的选择(遥想3年前用的第一个版本的android studio,跟现在比已经不可同日而语),从 google官网已经不再提供adt集成开发境的下载可以看出,android-studio已经是大势所趋。本文由浅入深的总结几个适用于android-studio的android质量控制工具。
一、lint for android studio工具
在性能测试之前,首先要对工程源码进行排错和调优。Android Lint 可以通过扫描和检查对Android工程可能存在的问题进行审查,其是一种静态测试工具,通过发现代码中可能存在的问题来在应用发布前保证程序质量。 早期的lint工具可以与Eclipse集成,如今android-studio已经内置这一工具。通过在工程标题上右键->Analyze->Inspect Code可以打开该工具。
![](https://i-blog.csdnimg.cn/blog_migrate/f0836d8ceddc2bddf2bb35d922b3222e.png)
Android Lint可以检查出的错误包括:
1. Missing translations (and unused translations) 没有翻译的文本
2. Layout performance problems (all the issues the old layoutopt tool used to find, and more) 布局性能
3. Unused resources未使用的冗余资源
4. Inconsistent array sizes (when arrays are defined in multiple configurations)在多个配置中的数组大小不一致文件
5. Accessibility and internationalization problems (hardcoded strings, missing contentDescription, etc)
6. Icon problems (like missing densities, duplicate icons, wrong sizes, etc)
7. Usability problems (like not specifying an input type on a text field)
8. Manifest errors
双击错误信息,可以看到错误的详情介绍和在代码中的位置。(这里的错误往往不是异常或error,而是你代码中可以进一步优化的部分)
![](https://i-blog.csdnimg.cn/blog_migrate/e968fa949728f796952353413df1fdd0.png)
代码没有问题后,就可以将程序run起来,进行下一步的内存和CPU监测了。
二、Memory Monitor
Memory Monitor 是android studio 提供的性能分析工具, 可以通过视图直观的看到android应用的内存,CPU占用情况。
程序运行后,观察IDE底部的如下视图:
![](https://i-blog.csdnimg.cn/blog_migrate/96abec5921cd7e2d8836b37120821bc7.png)
现在可以再avd上或真机上对应用进行操作,Memory Monitor可以反映出当前操作带来的CPU和内存变化。
![](https://i-blog.csdnimg.cn/blog_migrate/c148df8d0f30f9d8c1301a273f101e2e.png)
作为Android初学者感觉android-studio内置的监控工具已经非常直观和强大,不知道以后会不会接触到更加优秀的开源性能测试项目。 作为美中不足,android-studio的监控功能不能够输出,所以也不方便统计和横向对比。 同时,流量的监控也不被包括其中。
三、Android性能测试工具:Emmagee
Emmagee的功能包括:
- 检测被测应用占用的CPU使用率和总体使用量
- 检测被测应用的内存占用量及百分比
- 检测流量消耗
改项目的真正流弊之处还在于,它不是一种嵌入式工具,而是一个单独的app。所以完全不依赖于开发环境。
Git 地址: https://github.com/kevinkong/Emmagee
Apk地址:http://code.google.com/p/emmagee/downloads/list
使用方式:
- 启动Emmagee
- 选择被监控程序
- 对被监控程序进行操作
- 返回Emmagee界面,结束监控
- 导出结果表单
Emmagee 界面如下图所示,我选择监控自己的一个app:alicom-in 。
![](https://i-blog.csdnimg.cn/blog_migrate/7585a194d85bcb1b4236f89f756769db.png)
开始测试后,被测应用会自动启动。 这里可以对被测应用进行一些操作,然后返回Emmagee界面,选择结束应用。结果表单会被保存到指定目录。
![](https://i-blog.csdnimg.cn/blog_migrate/20b16ad95ed207c428c303cf3a38c4ee.png)
使用excel打开表单。
![](https://i-blog.csdnimg.cn/blog_migrate/e74b3a68ea65a838ad340ff24a0da0c0.png)
通过excel自带的表格工具可以对该表单进行分析,也可以进一步比对不同app的测试结果。
![](https://i-blog.csdnimg.cn/blog_migrate/99b2c13d5633567ac77269ef225b53ed.jpeg)
四、总结和展望
Android应用性能指标是开发人员和用户所关注的重点,为了对今后的客户端开发工作进行技术储备,为团队提供先验知识,今天了解了适用于Android Studio的性能保证工具。包括: 1 android studio静态代码审查工具 lint;
2 android studio 内存,CPU实时监测工具Memory Monitor;
3 android应用数据统计工具Emmagee。
这三种工具具有初步支持android开发者对程序性能进行关注的能力。同时,也存在一些不足,比如说Memory Monitor和Emmagee需要互补对方的缺点,如果有一个工具既能实时监控,又能输出表单(包括流量监控结果),就更好了。 另外,Emmagee工具虽然可以对整个应用的性能指标作出观测,但是具体由哪一个函数或服务引起了性能问题,则需要开发人员的进一步排查。 当需求不仅仅是性能控制,而是需要性能调优时,这种功能上的缺憾就不容忽视了。