开篇语前阵子老大交给了我一个任务,主要是帮我们开发的直播应用做 Android 端的安装包瘦身,花了大概一周的时间把安装包从 18MB 减小到了 12.5MB。原本完全可以优化到 10MB 之下,但由于其他原因的限制,所以目前阶段只到 12.5MB 为止。在此记录一下优化的思路和用到的工具,方便自己以后 Review ,有需要的童鞋也可供参考。 瘦身的目的从目的导向来看,我们是不会无缘无故去做一件事情的,那我们对应用瘦身的目的是为了什么?答案是:提高下载转化率。什么是下载转化率?举个栗子:你的应用大小是 18MB ,有100个潜在用户想要去下载尝试使用,结果有20个用户嫌弃安装包太大直接扬长而去,有20个用户在等待下载的过程中取消下载,最终只有60个用户真正下载安装,那么应用的下载转化率就是 60/100 = 60% 。 简单的小结便是:安装包越小,用户下载等待的时间越短,对手机存储配置小的设备体验愈佳,应用的下载转化率也就越高。记得以前在腾讯大讲堂听微信大牛说过,微信第一个版本只有差不多 400KB ,瞬间膜拜。 安装包的组成要对安装包做瘦身,首先需要了解安装包的组成结构,这里简单的梳理了一下组成各个部分及其作用: 其中,在安装包中占比较大的包括:dex文件、res文件夹、assets文件夹、lib文件夹以及resource.arsc文件。所以,接下来的瘦身优化就是让这些文件变小,以此达到瘦身的目的。 在 Android Studio 2.2.3 开始,就加入了浏览 APK 结构的功能,我们直接把安装包拖入 IDE ,就可以直接浏览其组成和对应大小,这样能够很方便的对比分析出每一步优化后的结果。 资源瘦身了解完 APK 的组成,我们可以开始着手优化的工作了,因为资源文件在 APK 中的占比最高,所以优先从资源瘦身开始着手。
开发目录下会有个 drawable 或者 mipmap 目录用于适配不同 dpi 的屏幕,下面是不同命名目录所适配的 dpi 范围 目前市面上绝大部分机型都处于 xxhdpi 的适配范围,所以可以考虑只保留 xxhdpi 目录下一份图片资源,具体保留哪个目录下的资源和保留几份资源还得依照应用自身的实际机型分布决定。
用 JPG 代替 PNG,由于 JPG 没有 Alpha 通道,所以文件更小,适用于不需要透明度的图片可以考虑。
由于 WebP 效果好,且相同效果下, WebP 文件比 PNG 文件要小得多 ,所以,网上很多人说使用 WebP 代替 PNG,对此,我保持异议。理由如下:
从下面这篇官方文档 https://developer.android.com/guide/topics/media/media-formats.html 可以看到 Android 平台支持的音视频格式,下面列出有损和无损常用的格式(不要认为有损编码就是音质很差):
实际开发中需要使用音频文件尽量采用 MP3、Ogg 这种有损格式,尽量不要用 WAV、PCM 这种无损音频。
这里的移除无用资源文件主要分为两个部分:不打包没有使用的资源和删除没有使用的资源。
|
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|