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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。