我是如何做到在 -5- 分钟之内将应用大小减少 -60%- 的?,零基础学 android 编程
proguard-android-optimize.txt
proguard-android.txt
就像文件名写的那样,“proguard-android-optimize.txt”是更积极的混淆选项。我们将这个作为默认的混淆配置。你可以在 /app 目录下的 proguard-rules.pro 里添加自定义的混淆配置。
release {//Enable the proguardminifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), "proguard-rules.pro"
//Other parametersdebuggable falsejniDebuggable falserenderscriptDebuggable falsesigningConfig playStoreConfig //Add your own signing configpseudoLocalesEnabled falsezipAlignEnabled true}
通过设置 minifyEnabled 为 true,混淆将会移除所有未使用的方法、指令以减小 classes.dex 文件。
这是启用了 minify 之后的 APK。
)
你可以看到在为每个模块启用了混淆之后我们的 classes.dex 大小减小了几乎 50%。同时你可以看到方法数从 29897 降到了 15168(几乎 50%)。恭喜……????
体积从 3.1MB 降到了 1.98MB。(缩小约 50%)
减小 res:
下一大块就是 res 文件夹,它包括了所有的图片,raw 文件和 XML。你不能添加/删除/修改你的 XML,因为它们包含了你的布局。但是我们可以减小图片文件。
“shrinkResources” 属性将会移除所有在工程中没有用到的资源。在 build.gradle 中像下面这样启用它:
release{//...//...shrinkResources true//...}
“resConfigs” 属性将会在构建过程中移除所有本地化资源。app “Anti-Theft Screen Lock” 只需要支持英语。而很多的支持库都可能有其它语言的本地化文件夹。这些是我不需要的。所以,添加下面的这些代码让应用只支持英语。
defaultConfig {//...//...//...
//strip other than english resourcesresConfigs "en"}
如果你在用 Android Studio 2.3,并且你的应用的最低支持版本大于 18,你可以使用 [webp](
) 替代 png。webp 图片比 png 体积更小但质量一样。而且 Android 支持 webp。所以你可以在 ImageView 中像加载其它光栅图片一样加载 webp 图片。这不需要改变你的布局。
你可以在工程选择 drawable 和 mipmap 文件夹,右击并选择 convert to webp。这将会打开下面这样的配置弹框。
点击 ok,将会将所有 png 图片转成 webp。如果 webp 图片比 png 更大,Android Studio 将会自动跳过这个文件。
让我们看下最终效果:
喔!!!res 文件夹从 710KB 降到了 597KB。
体积减小了 105KB。(降低了 16%)
你也可以将图片转为矢量图。但是这样你需要对它的向后兼容性进行一些处理。
TL;DR:
通过在你的 release build type 中加上下面这些代码启用混淆。
启用 shrinkResources。
通过在 “resConfigs” 里添加需要的资源名移除所有不需要的本地化资源。
将所有图片转为 webp 或者矢量图。
总结:
通过使用上面这些简单的技巧我将应用体积从 3.19MB 降至了 1.89MB。
这些只是最简单的方式,还有很多减小应用体积的方法。但是,你应该始终使用上面这些简单的方法来保证已经尽可能的减小了应用体积。
最后
如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
希望读到这的您能转发分享和关注一下我,以后还会更新技术干货,谢谢您的支持!
转发+点赞+关注,第一时间获取最新知识点
Android 架构师之路很漫长,一起共勉吧!
评论