- App临发布前需要做一次瘦身工作,下面就简单记录下我的app瘦身的实践过程。
- 开发中项目就只使用了一套资源,xxhdpi目录下放的1080X1920的图片资源,打包后Apk大小:29.4M
瘦身前29.4M,开始瘦身
1. 删除不用的资源文件(drawable资源,string资源,dimenx资源,raw资源)
-
自动删除:选中res——右键——Refactor——Remove Unused Resources
-
注意:不要选中Delete uuused @id,以防出现找不到资源id的莫名错误,而且资源id本身没有多大
-
手动删除:自动删除只能把项目中从未引用的资源文件删除掉,还存在一些被引用过但实际未使用的,例如我的raw下的.wav文件,我记得后来是不用这个音频文件了
-
选中改文件,右键——Find Usages,或者Alt+F7,查看使用到该音频文件的地方
-
mediaConnected使用到该音频文件,再看mediaConnected在哪使用了,光标放在mediaConnected变量上,同样右键——Find Usages,或者Alt+F7,发现还是只有这一处使用了mediaConnected变量,那么mediaConnected就是一个未被真正使用的变量,注释起来也不影响,然后再手动删除connected.wav文件。
2. 使用三方工具(如tinypng)压缩项目中的所有png图片,从而进一步减小apk体积。
- 打开tinypng网站https://tinypng.com/,将项目中的png图片拖拽网页中,自动进行压缩;
- 压缩完成后,Download all—下载所有经过压缩的图片,替换项目中对应的png图片;
- 总结:这种方式能够极大的压缩图片大小,至少能减小50%左右,效果非常棒,墙裂推荐。
3. 配置build.gradle文件,开启minifyEnabled,shrinkResources
buildTypes {
release {
minifyEnabled true //开启dex字节码压缩,舍去未使用的jar和class文件
debuggable false
zipAlignEnabled true //减少应用在运行时的内存消耗
shrinkResources true //启用res资源过滤,会将项目中未使用到的图片变成1x1的小图,从而减少体积
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
debuggable true
}
}
瘦身后大小:22.1M
- 项目中的so包已经占用了14M,瘦身前29.4M,只有15.4M的可优化空间
- 压缩比:(29.4-22.1)/15.4 = 47%