Android 包体积优化

1.精简支持语言:

我司应用的用户几乎都是中国人,所以我们去掉了多语言的支持,只保留了中英文两种配置,甚至可以把应用中使用字符串全写在values/string.xml中,只保留英文一种。对应的配置是

resConfigs "en", "zh-rCN"

 

2.精简支持的cpu架构:

目前大部分手机都支持arm-v7a,所以应用中只保留了一种架构支持,其他应用可根据实际情况,灵活选择。对应的配置是

ndk {
    abiFilters ‘armeabi-v7a‘
}

 

3.只使用一套设计图:

一般情况下项目中可以只保留一套设计图比如xxhdpi, 如果某些地方适配不好,单独为它添加图片

 

4.proguard代码混淆

开启代码混淆也是降低apk体积的重要手段,可以删除没有使用的代码,并且可以对代码进行压缩。

 
5.资源动态加载

可以将一些不必要资源放入网络中,等需要时再下载,比如:

  • emoji表情
  • 换肤资源
  • 动态添加插件化模块
6.去除无用资源

通过Android Studio提供的 Remove Unused Resource功能物理移除无用资源;

gradle配置 shrinkResources 打包过程中去掉无用的资源文件。

但是使用的时候需要谨慎,如果代码中存在getIdentifier方式获取资源文件,切记不要删除,需要写入raw/keep.xml文件中,避免被删除,特别要注意第三方库的资源文件。

7.资源混淆工具

腾讯的AndResGuard和字节跳动的AabResGuard

 

8.其他

  • 将项目中的图片通过AndroidStudio工具转成webp格式
  • 将项目中的png图片使用tinypng进行压缩
  • 一些可以用代码实现,也可以用图片实现的,需要做一下权衡。能用shape就绝不用图片,对于纯色或渐变的图片,能用shape渲染的就优先使用shape。
  • 尽量少使用gif图,gif体积较大
  • 尽量避免使用Lottie,它会在asset中引入json文件



作者:yi_zhe
链接:https://www.jianshu.com/p/c76a032b0f4c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Android 包体积优化

上一篇:Android公共技术收集


下一篇:YARN调度架构中的AppMaster