内推
【长期有效】欢迎加入字节跳动我的团队:内推链接
随着应用的长久迭代,各种功能模块的加入,APK包体越来越大,减小包体是必要的。
所以,从最简单的来。
1.删除无用资源
应用迭代就了,功能增删,总会有无用资源残留,所以,定期删除无用资源是必要的。(尤其是图片那些)
使用Lint扫描无用资源。(一个Android优化工具,可百度或官方文档:https://developer.android.com/studio/write/lint.html)
Android Studio下,检索无用资源可使用以下方式:
在Android Studio中打开“Analyze” 然后选择"Inspect Code…",范围为Whole project(整个项目),然后点击"OK"。
其他如Eclipse的使用,或者命令行的使用,可自行百度。
这里说一点注意:Lint扫描下,不一定是全部准确的。如果你的项目使用了Context.getResources().getIdentifier(imageName, "drawable", sContext.getPackageName());
这种通过文件名的方式去拿项目下的资源,Lint会判别为资源未使用,别误删了。
当然,getIdentifier这个方法本身是不建议使用的,因为这个方法去获取资源id效率很低,直接以R.drawable.xxx的方式指定资源id当然是最好的。
注意到以上一些问题,建议使用Lint扫描后手动删除,不确定的情况下,可以全局搜索文件名的方式检索资源有没有被使用再删除。
2.图片优化
图片一直是APK“纳税”第一大户,所以对图片的优化也显得尤为重要。
首先,可以上TinyPNG(https://tinypng.com/)这个网站对应用使用的一些图片进行压缩(png或jpeg),这个压出来后质量损失很小,压缩比也比较可观。
3.ProGuard优化
使用ProGuard打混淆,能启到优化作用。但要注意配置。这点大部分商业化项目一般都会做吧,详细可见百度。
4.去除无用的库
现在Android应用普遍可以提升到Android 4.0以上,API 14以下的support库可以删除。
5.更强大的压缩
可以参见微信团队的压缩方案 AndResGuard(https://github.com/shwenzhang/AndResGuard),这个开源项目会对资源文件混淆,别且用7z代替原来默认的zip压缩,压缩比很高,不过要注意配置。详见官方。