- 图片资源的优化
- 资源压缩
- 其他优化
图片资源优化
图片选择顺序
- VD:使用矢量图片例如:SVG格式的,不管适配什么屏幕,只需要一份图片即可
- WebP:WebP体积更小,4.2.1+支持透明度
- PNG:有透明度,渐变,阴影的情况下选择png
- JPG:
WebP转换方式
Android Studio 选中图片-右键 -convert to webp 即可
如果图片比较多,就采用工具批量转换
- 下载WebP转换工具,进行图片统一压缩
- https://developers.google.com/speed/webp/docs/precompiled
PNG压缩
如果项目是Android 4.2.1版本以后的,用webP 即可,不需要使用png了。如果项目是4.2.1之前的。不能使用WebP的话那就对PNG进行压缩。
采用压缩工具对png进行压缩
- 可以采用ImageOptim或者Pngyu对png进行压缩
- AAPT会使用内置的压缩算法来优化res/drawable/目录下的PNG图片,但也可能会导致本来已经优化过的图片体积变大,这里禁用aapt优化png图片
aaptOptions {
cruncherEnabled = false
}
其他图片优化
- 纯色图片代码实现
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp"/>
<solid android:color="#ff0000"/>
</shape>
- 减少图片资源防治份数
放置xhdpi,xxhdpi 如果只放一份会有什么问题? - 能用代码实现的图片尽量采用代码实现
圆形图片,环形,渐变等都可以采用代码实现
开启资源压缩
开启代码混淆与去除无用资源
android {
.....
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
进一步资源压缩
- 微信开源的AndResGuard工具,对资源进一步混淆
详情参考:AndResGuard集成笔记
其他优化
- 冗余代码的优化
什么是冗余代码:
1、完全一致的代码或者只修改来空格和评论
2、结构上和句法上一致的代码,例如只是修改来变量名
3、插入和删除了部分代码
4、功能和逻辑上一致的代码,语义上的拷贝 - 冗余代码的检测
1、使用工具,例如PMD
2、PMD下载地址:https://pmd.github.io/
Lint Android最常用的一个优化
- 未使用资源
1、检测未使用资源并删除
2、Android Studio -> Analyze -> Run inspection by Name ->(输入)unused resource - 无用代码优化
Android Studio -> Analyze -> Run inspection by Name -> unused declaration -> Moudule app -> OK - 其他的Lint优化,可优化内容很多可以多了解一下
语言资源优化
- 在build配置中配置resConfigs指定需要的语言类型
defaultConfig {
resConfigs "zh","en"
}
其他优化
- 重复String ,color优化
- 减少Enum使用
每减少一个Enum文件可以减少1k左右的大小
采用常量定义