Android性能优化之包体积优化

 Android中的包体积还是比较让人烦心的, 用户看见这么大的APK或者每次更新的时候都要花费巨大的流量去更新就想把你的APK给卸载掉,这里就记录下APK体积优化的方案

分析工具

首先我们可以使用Android Studio的Analyze APK去进行检测,我们可以通过Analyze APK看到APK到底哪些地方占用了空间。

Android性能优化之包体积优化_第1张图片
Android性能优化之包体积优化_第2张图片

用一套资源文件

正常来说去做一些适配的时候让UI剪切不同大小的图片来进行适配,但是我们可以让UI就剪切一套图片资源,放在xhdpi中,我们的项目也是一直都这么处理的,在不同分辨率手机上的展示感觉也没什么区别

开启代码混淆

通过开启代码混淆,然后配置一些资源压缩能够减少包体积的大小,我现有的项目44M,开启混淆,后能到39M

buildTypes {
    release {
  	  minifyEnabled true
    }
}

去除无用的资源

通过开启shrinkResources将那些没有任何父类调用的资源用更小的东西去替代,达到减小包体积的效果

buildTypes {
        release {
            shrinkResources true
        }
    }

清理无用的资源

用Android studio工具自带的Remove Unused Resources,可以完全清理掉,这里不像上面使用shrinkResources一样是用小东西替代的,而是全部清理掉的

慎用!会将一些反射或者字符串拼接获取方式的也给清理掉

删除无用的语言

通过resConfigs 配置设置语言支持,如果没有国外的需求,我们只要有中国的语言就好了

defaultConfig {
        resConfigs "zh"
    }

图片压缩

通过工具将资源图片进行压缩,或者采用一些jpeg,webp格式的图片,

so文件只采用armable

so文件我们用armable、armable-x86两种即可,基本是都适配,如果有特定的需求那就把其他的几种也加上

使用微信资源压缩打包工具

使用微信AndResGuard开源工具对资源进行压缩,他会将资源文件名进行混淆

使用provided编译

我们在集成一些第三方时,可能会出现一个问题,不同地区的定制化开发,比如A地区需要视屏会议功能,其他的地区又不要,那么其他的地区我们就不应该将视屏会议这个功能打进去,但是如果不打进去,跳转代码等等又会报错,这时候我们就可以用provided去依赖,保证编译通过

在Gradle.properties文件中建立一个参数为isMetting=true

然后在build.gradle中去判断该参数去分别依赖

	if(isMeeting.toBoolean()){
        implementation project(':mettinglibrary')
    }else{
        provided project(':mettinglibrary')
    }

使用shap背景

能够使用shap完成的图片就别让美工再出资源

避免重复的库

避免重复的库,比如说我,为了快速开发,引用了两个三级联动的库,纯粹是浪费空间,好好检查一下每个引用进来的库的真正用处,用在哪,是否多余

清除第三方库和冗余的代码

在快速开发中肯定会产生一些无用的代码,尽量去清理掉他,有时候来了一个需求,等你做好了后,他又说不要了,然后写的一大堆的的代码又给废弃了,有时候你还真不确定他说的不要是否是真的不要,短时间内又不敢删,所以我们可以定期两个月删一次无用代码

支持插件化

插件化是将APP业务分离出来,将代码单纯提出来,打包的时候不会打进包里去,可以说是减少包体积大小最有效的办法了,他不在乎你的其他资源是否压缩,需要的时候再去下载就好了,但是国内的插件化都会有适配风险,而去现在谷歌也不支持这种

参考博客:https://blog.csdn.net/u012124438/article/details/54958757

感谢大佬的博客,让我学到了很多,本人上面所写都是本人检验过,或者正在用的方案,真实有效。

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