谈谈对优化apk体积的实践

本文探讨了如何有效减小Apk体积,包括使用Proguard、Android Lint检查未使用资源、清理Assert文件夹、用代码替代图片、压缩图片、so库优化、第三方库定制和动态加载技术等策略,旨在降低用户下载量和提高安装成功率。
摘要由CSDN通过智能技术生成

引言

随着Android移动开发的需求越来越复杂,我们不可避免的遇到发布出去的apk体积越来越大的问题,

目前超过10MB、20MB的apk已经是很常见的事情了,但是依然能够看到一些apk的体积控制的很小。apk体积增大源于:

  • 新需求不断的提出
  • 需要支持高分辨率的屏幕而加入了高分图片
  • 依赖了更多的第三方库
  • 本文将从我自己的经历项目中探讨如何有效减小apk的体积。减小Apk体积是一件很有用处的android优化手段,降低了用户需要下载的比特数,同时也降低了分发安装时失败的概率。
将apk解压后发现,体积占大头的分辨是lib文件夹、res文件夹和dex文件。所以我们的降低apk体积的策略也应当从如何缩减so文件、资源图片、控制代码质量上来入手。

 使用Progruard
Proguard是Android很早就使用的代码混淆工具,除了用于混淆代码提高安全性以外,他在代码编译的时候也会通过遍历代码的方式来发现没有被调用的代码,从而将其在打包成apk时剔除,最终一定程度上降低了apk的大小。
但是Proguard使用时候是要注意的,因为代码中利用反射机制的地方会被Proguard工具破坏,所以要慎重的编写混淆例外文件,同时对于混淆后打包出来的apk要重新充分回归测试下。
 使用Android Lint
Proguard提供了代码的缩减方式,而Lint对于res下面的资源进行了充分的优化,他会提供一份报告给你,从而通知你哪些资源没有被用到,显然剔除这些资源是可以减少apk体积的。这些资源包括res文件夹下所有的内容,比如图片、字串、尺寸等等。现在Android Lint已经集成到了Android Studio中,用法很简单。
  • 进入Android Studio的菜单中选择Analyze->Inspecting Code即可
  • 分析完毕后在Inspection选项卡中会有一份详细的报告,找到Android Lint项目
  • 拉到下面Unused resource这一栏打开,即是未被使用的资源列表,用户可以参照来手动删除资源
清理Assert文件夹
Assert文件夹经常会放置一些不被编译的资源,时间久了,里面可能一些文件或者资源已经不用了,然而这个文件夹也是会被打包到apk里面的。所以定期清理这个里面的内容也是减小apk体积的重要一步。
用代码代替图片
开发的时候有些地方能用代码做出来的就尽量不用图片来渲染,这样子可以减少图片资源的数量从而减少体积,这里举几个例子。
  • 用shape代替背景图
  • 用RotateDrawable代替仅仅是方向不同的“内容相同”的图片
  • 用layer-list来制作多层图片从
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值