导言:

Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进行软件选用的决策。

眼下,已经有非常多能够监控android app 性能的工具能够供开发者使用。如:基于Eclipse插件体系的MAT,其通过生成.hprof文件对内存泄露情况进行排查;内存检測工具APT:提供CPU利用率实时曲线图,方便对照測试内存泄露问题[图0-1]

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图 0-1  通过APT实时监測android应用的内存和CPU使用情况

眼下最成熟的android性能监測工具往往是发迹于eclipse-ADT时代。而在android-studio日益稳定的现在,android开发者已经有了更好的选择(遥想3年前用的第一个版本号的android studio,跟现在比已经不可同日而语),从 google官网已经不再提供adt集成开发境的下载能够看出,android-studio已经是大势所趋。本文由浅入深的总结几个适用于android-studio的android质量控制工具

一 lint for android studio工具

在性能測试之前,首先要对project源代码进行排错和调优。Android Lint 能够通过扫描和检查对Androidproject可能存在的问题进行审查。其是一种静态測试工具。通过发现代码中可能存在的问题来在应用公布前保证程序质量。 早期的lint工具能够与Eclipse集成。现在android-studio已经内置这一工具。

通过在project标题上右键->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和内存变化。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图 2-2  Memory Monitor 视图(2)

作为Android刚開始学习的人感觉android-studio内置的监控工具已经很直观和强大,不知道以后会不会接触到更加优秀的开源性能測试项目。 作为美中不足,android-studio的监控功能不可以输出,所以也不方便统计和横向对照。 同一时候。流量的监控也不被包含当中。

以下介绍一种可以输出表单的,直接执行于真机/模拟器的开源项目:Emmagee

三 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 。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图 3-1  Emmagee启动界面

開始測试后,被測应用会自己主动启动。 这里能够对被測应用进行一些操作,然后返回Emmagee界面,选择结束应用。

结果表单会被保存到指定文件夹。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图3-2   Emmagee 结束录制

使用excel打开表单。

表3-1  Emmagee 输出结果

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

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

四 总结和展望

Android应用性能指标是开发者和用户所关注的重点。为了对今后的client开发工作进行技术储备。为团队提供先验知识,今天了解了适用于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

Android性能測试 一些适用于Android Studio的代码审查和性能測试工具的更多相关文章

  1. 适用于 Android 的 Visual Studio 模拟器

    适用于 Android 的 Visual Studio 模拟器 https://visualstudio.microsoft.com/zh-hans/vs/msft-android-emulator/ ...

  2. 【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份

    Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monke ...

  3. 【Android开发-6】了解内情,我们须要一些调试和測试手段

    前言:人生不可能十全十美,总会有些遗憾存在,经历过遗憾,我们才懂的什么是生活. 程序也一样.追求完美,就必定会有经历bug存在的时候. 经历过不断的bug磨练.我们技术才会不断的成长.对于调试bug, ...

  4. PLDroidPlayer 是七牛推出的一款免费的适用于 Android 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。 https://developer.qiniu.com/pili/sdk/…

    PLDroidPlayer PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单.快捷的接口,帮助开发者在 ...

  5. Android高效开发环境(Genymotion,Gradle,Andriod Studio)

    临近十一,项目接近上线,终于有些碎片时间可以查看一些博客. 这篇博客是Android开发大牛Cyril Mottier在去年写的博客,我把它翻译一下共享给国内志同道合的朋友,同时也是对自己一个很好的锻 ...

  6. Android APK瘦身之Android Studio Lint (代码审查)

    ******** ******** 第一部分: 瘦身内容介绍 ******** ******** 项目新版本的迭代接近尾声, 因为历史累积问题, 导致有很多无效的资源让已经臃肿的APK变得更肿, 因此 ...

  7. Android NDK and OpenCV Development With Android Studio

    Android NDK and OpenCV Development With Android Studio Hujiawei 172 2014年10月22日 发布 推荐 0 推荐 收藏 4 收藏,5 ...

  8. 【Android Studio安装部署系列】三十七、从Android Studio3.2升级到Android Studio3.4【以及创建Android Q模拟器】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 保持Android Studio开发环境的最新版本. 下载Android Studio3.4 使用Android Studio自带的 ...

  9. android一个倾斜的TextView,适用于标签效果

    描述: android一个倾斜的TextView,适用于标签效果 应用截图: 使用说明: <com.haozhang.lib.SlantedTextView android:layout_wid ...

随机推荐

  1. 微信小程序---账号注册与开发工具

    (1)申请帐号 进入小程序注册页 根据指引填写信息和提交相应的资料,就可以拥有自己的小程序帐号. 在这个小程序管理平台,你可以管理你的小程序的权限,查看数据报表,发布小程序等操作. 登录 小程序后台  ...

  2. pom.xml配置引用项目时不生效

    1 在项目pom.xml配置中引用项目A,但是编译时,取提数引起是B: 2 原因是:[Java Build Path - Projects] 引用的还是老的项目B,删除该引用即可解决.

  3. laravel学习笔记2--表单

    一.Controller 1.Request 1.1.取值:input // 1.取值 echo $request->input('name'); // 2.取不到值时打印默认值 echo $r ...

  4. centos6 磁盘与文件系统管理

    一.磁盘管理 磁盘构成 1.圆形磁盘 2.磁盘读取头 3.机械手臂 4.主轴马达 运作原理 数据存储在具有磁性物质的圆形磁盘上,读写操作主要是通过机械手臂上的磁盘读取头来达成,实际运作时,主轴马达让磁 ...

  5. assert.notDeepStrictEqual()详解

    assert.notDeepStrictEqual(actual, expected[, message]) 深度地严格不相等比较测试,与 assert.deepStrictEqual() 相反. c ...

  6. Python之面向对象新式类和经典类

    Python之面向对象新式类和经典类 新式类和经典类的继承原理: 在Python3中,就只有新式类一种了. 先看Python3中新式类: 类是有继承顺序的: Python的类是可以继承多个类的,也就是 ...

  7. 当java web项目部署到服务器上时,无法将图片等媒体文件保存到服务器的最终奥义

    今天,我在部署web项目至云服务器上(Tomcat8.0)时,突然发现我的应用,无法上传图片,视频等多媒体文件了,一再检查自己的代码逻辑没有问题之后,逐一排查,首先想到的就是看一下控制台打印的日志,日 ...

  8. LeetCode(33)Search in Rotated Sorted Array

    题目 Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 m ...

  9. JS逻辑运算符&&与||的妙用

    JS逻辑运算符&&与||的妙用   /* 文章写的不错 就此分享 */ &&中第一个表达式为假就不会去处理第二个表达式,直接放回结果. || 中就刚很好相反.如果第一个 ...

  10. jquery动态绑定元素

    按照正常给静态元素绑定事件的写法换成给动态元素绑定事件会不管用,要用下面的方式: 简单说就是给要绑定元素的父元素绑定事件,参数中指明要绑定该父元素下面的哪个元素就行,这样就不管你这个元素是不是新增的, ...