我是如何通过 nimbledroid 做android app性
简介
目前我负责开发的360 hola weather项目, 收到了360 OS的一个性能要求反馈, 一是要求apk size < 10 MB, 目前是12.2MB, 二是要求内存占用 < 42MB.
NimbleDroid 是美国哥伦比亚大学的博士创业团队研发出来的分析Android app性能指标的系统,分析的方式有静态和动态两种方式,
其中静态分析可以分析出APK安装包中大文件排行榜,各种知名SDK的大小以及占代码整体的比例。
动态分析可以给出冷启动时间, 列出block UI的具体方法, 内存占用, 以及Hot Methods, 从这些分析报告中, 可以定位出具体的优化点.
使用方法其实很简单, 只需要上传你apk, 网站后台会自动分析, 并给出直观化的分析报告.
屏幕快照 2018-03-21 上午11.03.06.png
apk文件大小优化
首先, 查看apk中的文件大小排行榜.
从中, 可以非常明显的看到一些图片png文件的使用是不当的.
非常简单的通过tinypng网站进行处理后, 就可以得到非常好的优化效果.
屏幕快照 2018-03-21 上午11.24.44.png
初步优化后的apk文件大小已经满足了360OS的要求.
屏幕快照 2018-03-21 下午6.45.02.png
这是从资源文件的角度入手, 从代码角度优化, 可以查看报告中的方法数报告. 从中可以快速定位出项目使用各个SDK的情况, 从中寻找优化空间.
屏幕快照 2018-03-21 上午11.09.15.png冷启动优化
屏幕快照 2018-03-21 上午11.11.00.png这里给出了 8 个导致冷启动慢的原因点. 优秀app的冷启动时间应该控制在2秒内, 目前是2.8秒, 超出了800毫秒.
Real Time 2.8 seconds0.80 seconds longer than max recommended time.
查看详情报告, 可以看到block UI的具体方法名.
屏幕快照 2018-03-21 上午11.11.16.png之前在浏览器部门, 阅读chrome源码, google用到了
Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
@Override
public boolean queueIdle() {
return false;
}
});
来优化页面的启动速度. 这里正好可以用到. 把一些方法抽取出来. 在页面绘制后, 等到UI线程空闲的时候, 再去执行这些耗时方法.
屏幕快照 2018-03-21 下午6.59.35.png
优化后的结果
屏幕快照 2018-03-21 下午7.35.24.png 屏幕快照 2018-03-21 下午7.36.25.png冷启动优化了300ms出来.
---DONE.---