简评:应用的大小也是用户体验的一个重要方面,而减小 Android 应用安装包大小其实一点也不复杂。android
对于移动应用来讲,应用安装包的大小固然是越小越好。特别是对于一些欠发达地区,你不但愿用户由于手机「存储空间不足」而卸载你的应用。web
本文就介绍了几个小技巧来有效减小 apk 的大小:bash
首先,咱们先用 Android Studio 提供的 APK Analyser 工具来分析下咱们的 apk 文件:
app
classes.dex 文件的大小彻底取决于程序中方法数的多少。在上面展现的例子中,包含了 4392 个类和 29897 个方法。这个结果是默认没有使用 proguard 的。咱们有两个默认的 proguard 文件可使用:ide
从名字上就能够看出,proguard-android-optimize.txt 是更加激进的 proguard 配置,包括和 proguard-android.txt 相同的 ProGuard 规则,但还包括其余在字节码一级(方法内和方法间)执行分析的优化,以进一步减少 APK 大小和帮助提升其运行速度。工具
能够像这样来使用:布局
release {
//Enable the proguard
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), "proguard-rules.pro"
//Other parameters
debuggable false
jniDebuggable false
renderscriptDebuggable false
signingConfig playStoreConfig //Add your own signing config
pseudoLocalesEnabled false
zipAlignEnabled true
}复制代码
经过设置 minifyEnabled 属性为 true,会告诉 proguard 删除全部未使用的方法和指令,进一步的减小 .dex 文件的大小。
gradle
对于 res 文件夹,一般占空间最大的就是图片了。若是你的 Android Studio 为 2.3,而且项目的 minimum version 为 18 或以上,应该使用 webp 而不是 png 图片。webp 图片有更小的体积,图片质量尚未什么损失。优化
咱们能够选中 drawable 和 mipmap 文件夹,右键后选择 convert to webp,将图片转为 webp 格式。
ui
咱们还能够在 build.gradle 中设置 shrinkResources 属性为 true,这会在打包时删除未使用的资源:
release{
//...
//...
shrinkResources true
//...
}复制代码
另外若是你的应用不须要支持国际化,那么能够设置 resConfigs 为 "zh","en",即只支持中英文:
defaultConfig {
//...
//...
//...
resConfigs "zh","en"
}复制代码
这么作是由于对于官方的 support library,默认是支持国际化的,也就是包含了不少不一样语言的资源文件,咱们就能够经过这样设置来移除用不到的语言资源文件。
经过上面的设置,这个 App 的安装包大小从 3.19MB 减小到了 1.89MB。固然还有不少其余的减小 apk 大小的技巧,但这里介绍的技巧是彻底能够做为你项目的默认设置。
知乎专栏:极光日报
原文连接:How you can decrease application size by 60% (In only 5 minutes)?
极光日报,极光开发者 的 Side Project,天天导读三篇国外技术类文章,欢迎关注。