目前公司的智能家居项目是一个2017年开始的产品,属于祖传项目。去年又经历了一次 AndroidX的升级,以及一次小范围的UI样式改版。因为是智能家居相关项目,涉及到的设备比较多,随着设备接入越来越多,且产品和UI对于不同设备之间的相关提示图片等做不到通用,导致图片资源也越来越多。以及一些冗余代码等也没有及时的优化等,导致包体积越来越大,对包体积的优化就越来越重要了。
记录下包体积优化前的安装包大小:
1.图片资源的优化
早期的适配方案是采用在不同文件夹(hdpi、xhdpi、xxhdpi等)放上不同分辨率的图片,ImageView的宽高设置为自适应(wrap_content)。而且又经历了一次UI改变,导致同个一些页面用的是新加入的图片,而原本旧的图片又不能删除。目前这个问题只能等待使用旧图片的页面做完改版后,才能将这部分图片删除。
既然图片不能删除,就只能从图片的大小进行压缩,从而降低apk体积的大小。目前图片压缩,采用的是:最优图像优化 - Recompressor
TinyPNG – 智能压缩您的WebP、JPEG和PNG图片
对图片资源进行压缩后,安装包体积大小如下:
可以很明显的看到,通过图片的压缩,足足减少了17M。
2.dimens 资源的优化
由于用的是最小宽度屏幕适配(Android 屏幕适配_鹭岛猥琐男的博客-CSDN博客_android 开发屏幕适配),每个屏幕宽度引入的尺寸资源为412个,屏幕宽度尺寸总共为27个,即尺寸资源总共为11124个。在引入的尺寸资源中,有一些是负值和一些带小数点的尺寸(如3.5dp等),这部分是可以去除的。每个尺寸去除32个资源,总共可以去除32x27=864个尺寸资源。
将这些资源删除后,安装包大小为:
和前面相比,省下了43598字节,即省下 42.58kb。
3. AndroidStudio 删除无用资源
在 Anaylze 中选择 Run Inspection by Name,在弹出的对话框中输入unused resource,搜索对应的资源,可以筛选出无用的图片资源。