文档章节

Android碎碎念 -- 性能测试,适用于Android Studio的代码审查和性能测试工具

淡定的米哥
 淡定的米哥
发布于 2015/12/16 16:43
字数 1507
阅读 323
收藏 7

      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可以打开该工具。

图 1-1 在android-studio中调用lint

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,而是你代码中可以进一步优化的部分)

图 1-2 使用android studio lint 优化代码

代码没有问题后,就可以将程序run起来,进行下一步的内存和CPU监测了。

二、Memory Monitor

      Memory Monitor 是android studio 提供的性能分析工具, 可以通过视图直观的看到android应用的内存,CPU占用情况。

      程序运行后,观察IDE底部的如下视图:


图 2-1  Memory Monitor 视图(1)


        现在可以再avd上或真机上对应用进行操作,Memory Monitor可以反映出当前操作带来的CPU和内存变化。

图 2-2  Memory Monitor 视图(2)

       作为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 。

图 3-1 Emmagee启动界面


     开始测试后,被测应用会自动启动。 这里可以对被测应用进行一些操作,然后返回Emmagee界面,选择结束应用。结果表单会被保存到指定目录。


图3-2 Emmagee 结束录制

     使用excel打开表单。

表3-3 Emmagee 输出 结果

     通过excel自带的表格工具可以对该表单进行分析,也可以进一步比对不同app的测试结果。

图3-4 使用excel直观观察 各指标检测结果


四、总结和展望

      Android应用性能指标是开发人员和用户所关注的重点,为了对今后的客户端开发工作进行技术储备,为团队提供先验知识,今天了解了适用于Android Studio的性能保证工具。包括:

1 android studio静态代码审查工具 lint;
2 android studio 内存,CPU实时监测工具Memory Monitor;
3 android应用数据统计工具Emmagee。

      这三种工具具有初步支持android开发者对程序性能进行关注的能力。同时,也存在一些不足,比如说Memory Monitor和Emmagee需要互补对方的缺点,如果有一个工具既能实时监控,又能输出表单(包括流量监控结果),就更好了。 另外,Emmagee工具虽然可以对整个应用的性能指标作出观测,但是具体由哪一个函数或服务引起了性能问题,则需要开发人员的进一步排查。 当需求不仅仅是性能控制,而是需要性能调优时,这种功能上的缺憾就不容忽视了。

本文转载自:http://www.bubuko.com/infodetail-991915.html

淡定的米哥
粉丝 37
博文 76
码字总数 14409
作品 0
朝阳
高级程序员
私信 提问
Android Espresso AppNotIdleException

最近在研究安卓单元测试,看到官方推荐用Espresso做UI层面的测试,就简单用了下。虽然Espresso很简单,但是适配到真实项目中还是走了不少弯路,踩了不少坑的。这里记录一下: 由于项目开发的...

H3c
2018/05/10
0
0
Cocos2d-x 3.4在AndroidStudio上编译配置

1.准备好以下文件   1) AndroidStudio: https://dl.google.com/dl/android/studio/install/1.1.0/android-studio-bundle-135.1740770-windows.exe   2) NDK:https://dl.google.com/and......

simpower
2015/07/31
0
0
AndroidStudio封装SDK的那些事

首先SDK是提供给别人调用的工具。所以常见的SDK都是以jar包,so库,aar包等方式导入APP项目中。然后提供一些公开的API供接入方调用。所以在Androidstudio中如果需要生成jar或者aar,就需要将...

尘封的落叶
2018/06/23
0
0
Android批量打包-如何一秒内打完几百个apk渠道包

在国内Android常用渠道可能多达几十个,如: 谷歌市场、腾讯应用宝、百度手机助手、91手机商城、360应用平台、豌豆荚、安卓市场、小米、魅族商店、oppo手机、联想乐商、中兴汇天地、华为、安...

SuShine
2017/10/23
0
0
android studio基本使用零碎整理

android studio进行单元测试:http://jingyan.baidu.com/article/454316ab7a5711f7a7c03a9a.html AndroidStudio怎样导入jar包:http://jingyan.baidu.com/article/e6c8503c7190b7e54f1a1893......

智能小松鼠
2015/07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
15
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
10
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
14
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
14
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部