怎样减少 android 应用包 60% 的大小?
对于移动应用来说,应用安装包的大小当然是越小越好。特别是对于一些欠发达地区,你不希望用户因为手机 「存储空间不足」 而卸载你的应用。本文就介绍了几个小技巧来有效减少 apk 的大小: 我要减肥 首先,我们先用 android st dio 提供的 apk analyser 工具来分析下我们的 apk 文件: apk 可以看到占空间最多的主要是三个部分:classes.dex, res 和 reso rces.arsc。 classes.dex:包含有 java 代码的字节码文件。 res:包含了资源文件,比如图片、布局文件等等。 reso rces.arsc:包含所有的值资源文件,如 strings, dimensions, styles, integers 等等。 classes.dex 文件的大小完全取决于程序中方法数的多少。在上面展示的例子中,包含了 4392 个类和  个方法。这个结果是默认没有使用 prog ard 的。我们有两个默认的 prog ard 文件可以使用: prog ard-android-optimize.txt prog ard-android.txt 从名字上就可以看出,prog ard-android-optimize.txt 是更加激进的 prog ard 配置,包括和 prog ard-android.txt 相同的 prog ard 规则,但还包括其他在字节码一级(方法内和方法间)执行分析的优化,以进一步减小 apk 大小和帮助提高其运行速度。 可以像这样来使用: release { enable the prog ard minifyenabledtr e prog ardfiles getdefa ltprog ardfile( prog ard-android-optimize.txt ),"prog ard-r " other parameters deb ggablefalse jnideb ggablefalse renderdeb ggablefalse signingconfig playstoreconfigadd yo r own signing config pse dolocalesenabledfalse zipalignenabledtr e} 左右滑动查看图片 通过设置 minifyenabled 属性为 tr e,会告诉 prog ard 删除所有未使用的方法和指令,进一步的减少 .dex 文件的大小。 .dex 方法数从  减少到了 ,大小从 3.1mb 减少到了 1.98 mb。 res 对于 res 文件夹,通常占空间最大的就是图片了。如果你的 android st dio 为 2.3,并且项目的 minim m version 为 18 或以上,应该使用 webp 而不是 png 图片。webp 图片有更小的体积,图片质量还没有什么损失。 我们可以选中 drawable 和 mipmap 文件夹,右键后选择 convert to webp,将图片转为 webp 格式。 webp 转换的结果: res 我们还可以在 b ild.gradle 中设置 shrinkreso rces 属性为 tr e,这会在打包时删除未使用的资源: release{ ... ... shrinkreso rcestr e ...} 另外如果你的应用不需要支持国际化,那么可以设置 resconfigs 为 "zh","en",即只支持中英文: defa ltconfig{ ... ... ... resconfigs"zh","en"} 这么做是因为对于官方的 s pport library,默认是支持国际化的,也就是包含了很多不同语言的资源文件,我们就可以通过这样设置来移除用不到的语言资源文件。 通过上面的设置,这个 app 的安装包大小从 3.19mb 减少到了 1.89mb。当然还有很多其他的减少 apk 大小的技巧,但这里介绍的技巧是完全可以作为你项目的默认设置。