android 应用 cpu和内存简要分析

最近公司测试工程师在对自己做的app进行全方位的测试,我们团队之前做的一个应用也在测试范围之类,反馈了一些问题如apk安装包大小低于30M,应用后台时cpu占用率不能超过1%, 应用前台、后台运行时内存占用也有规定(前台时 < 256M, 后台时非cached < 20M)。 这些问题应该在以后的开发过程中也会遇到,所以此处记录一下。

1、安装apk后检查占用的ROM

ROM的大小等于app安装包+apk.odex,odex一般在ota目录。
关于odex介绍如下:

ODEX是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化过程将其优化生成一个.odex文件单独存放,原APK中的classes.dex文件会保留。

使用adb指令找到apk安装路径:

adb shell pm list packages -f | grep "package_name"
  • 这里说明一下我的电脑的window,没有grep指令,但是可以使用findstr指令取代。

这里写图片描述

由于我的测试机上面确实没有什么第三方的应用,所以就查找的settings的安装包。

找到apk的安装路径之后,进入到该路径,使用ls -all就能看到apk的大小。在执行du -h就能看到odex文件的大小,但是如果提示权限不足的话,那就只能在到ota目录下查看odex文件的大小了。进入ota目录: oat/arm/base.odex 或者 oat/arm64/base.odex 中使用du -h来查看base.odex的大小。
apk占用rom的大小= 安装包大小 + odex大小
apk占用rom的大小主要是安装包的大小,所以如果占用rom过多就需要精简安装包里面的资源,主要的资源涉及到drawable、mipmap、assert这三个文件夹。使用的图片、铃声、gif图等等资源的大小最好调整小一点,可以降低分辨率、复用多个资源等等方式。

2、应用后台时占用cpu

应用后台占用cpu指的是进入应用使用一段时间之后,点击home,然后再进入其他应用使用几分钟,这时再去查询之前使用的应用的cpu使用情况。

adb shell top -d 1 | grep "package_name"

这时就会列出来cpu的使用情况。每秒刷新一次。 其中看到的0%的那一列就是CPU的使用率。

这里写图片描述

cpu的使用率的优化主要考虑是否进程中还有一些操作还在处理。这个就需要分析代码了。

3、应用占用内存

应用占用内存分前台和后台,前台时占用内存应该会比较多,但是后台时,就应该基本上不会占用内存,除非有后台service在运行。

adb shell dumpsys meminfo

adb shell dumpsys meminfo命令是分析手机的ram情况,如果想要分析某个应用的情况直接在后面加上包名或者进程号。

其实adb shell dumpsys 还有很多功能,可以自行挖掘一下。除了可以看ram占用外还可以看cpu、电池、wifi等等信息。
这里列出一下选项:

名字          功能
account     显示accounts信息
activity    显示所有的activities的信息
cpuinfo     显示CPU信息
window      显示键盘,窗口和它们的关系
wifi        显示wifi信息
batteryinfo $package_name  电量信息及CPU 使用时长
package packagename   获取安装包信息
usagestats  每个界面启动的时间
statusbar   显示状态栏相关的信息
meminfo     内存信息(meminfo $package_name or $pid 使用程序的包名或者进程id显示内存信息)
diskstats   磁盘相关信息
battery     电池信息
alarm       显示Alarm信息

这里写图片描述

内存的分析就比较多了,可以看看前人的经验

后续如果有更深入的分析再更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值