Android 界面优化,APP性能优化,APK包压缩,如何减少安装包体积

关于APP性能优化的文章比比皆是,但是大多都是规规整整的用专业术语去描述,去介绍各种情况,反正我是记不住,不忘初心,这篇文章就用我自己在实战过程中如何去优化做一个记录。

1.场景:为啥感觉安装包越来越大了啊,能不能减少个几M呢?

答:你这个APP本来就复杂,用得到代码和图标更不计其数,还在乎那几M的大小?真是***。
 
 实际:去代码中想方设法去删掉用不到的文件,代码就不建议去删了,除非删一半,要不然根本没有太大效果,还容易使稳定的项目出错,恶心心,这里建议去删一些没有用到的图片或者将图片换成体积小一点的,因为图片多大,打出的包就会多出多大。
 
 怎么去找出不用图片或者很大的图片呢?AndroidStudio 提供了一个工具 -
 Build - Analyze APK ,把你打好的安装包选中,就会出现安装包的内存情况和占内存比例的文件。
Android 界面优化,APP性能优化,APK包压缩,如何减少安装包体积_第1张图片
打开之后就会显示各个文件占地比例和内存,其他的就别删了,除非你很有把握,就删一些没有用到的占内存比较大的图片,或者找UI给你换小一点内存的图片,这样图片少多少内存,APK安装包直接少多少内存,非常漂亮!
 Android 界面优化,APP性能优化,APK包压缩,如何减少安装包体积_第2张图片
接下来就是如何进行性能优化了。

问: 线上版本多种多样,有个客户的机型老是动不动就程序无响应,也没有捕获到相关的日志,咋办回事呢?

答:就个别机型出现这个问题,还是偶发性的,我这边都没有复现,还处理啥啊,万一处理不好还可能加大线上bug率,真是***。

实际:去考虑为什么会出现这种原因,出现这种原因的可能性,目前没有任何有用的信息,但是该APP搞了一个事件埋点,通过埋点发现在某个界面时才会出现这种现象,并且该界面里有定时刷新,嘶,就它了。

一开始怀疑是内存泄漏,泄的不厉害,导致APP没有闪退而是无响应,首先使用 LeakCanary 来检测一下APP的泄漏问题,关于 LeakCanary 不在此文章介绍了,自行百度,或者 - 传送门,加上之后,嘶,无响应必现了! 通过日志去给泄漏的地方加一些措施,但是效果不大,还是会出现。

除了APP本身,无非就是手机本身硬件问题了,通过leak日志筛选 error 发现每次复现会有 CPU 负载这个错误-新方向!!!

在手机开发者选项中有 GPU 过度绘制这个选项,打开之后进入相应的界面就会显示该节目的绘制情况。

Android 界面优化,APP性能优化,APK包压缩,如何减少安装包体积_第3张图片
Android 界面优化,APP性能优化,APK包压缩,如何减少安装包体积_第4张图片
Android 界面优化,APP性能优化,APK包压缩,如何减少安装包体积_第5张图片
通过上图可以直观的看出界面情况,去对应的的界面去减少相关的绘制,尽量让该界面绘制层级低,比如减少一些不必要的 setBackground()、setBackgroundColor()…等等 ,去QQ等应用去看,他们的层级都很低,当然很多都采用 H5 界面了,所以只有一级,嘤嘤嘤。

当然开发者工具不可能就只给这一个,还有个 GPU 呈现模式分析。

Android 界面优化,APP性能优化,APK包压缩,如何减少安装包体积_第6张图片
Android 界面优化,APP性能优化,APK包压缩,如何减少安装包体积_第7张图片
这样也会很直观的显示当前界面的GPU使用情况 如何去解决呢,如果你发现这个界面黄色太高了,说明GPU此时太忙了,要减少一下GPU压力,比如把一些不必要的放到子线程里去,还要尽可能把这些线条条控制在圈中绿线线以内。

以上情况要是都优化完美的话,你的APP可能会从兰博比尼基的速度直接变成兰博基尼的速度,嗷嗷的好用。

至此 内存优化,界面优化,性能优化,在开发过程中具体可以通过以上方式进行开发。

你可能感兴趣的:(Android,Android,性能优化,包体优化)