应用安装包大小对应用使用没有影响,但应用的安装包越大,用户下载的门槛越高,特别是在移动网络情况下,用户在下载应用时,对安装包大小的要求更高,因此,减小安装包大小可以让更多用户愿意下载和体验产品。
在Android Studio工具栏里,打开build–>Analyze APK, 选择要分析的APK包 ,可以看到apk的相关信息,如下所示:
Android的apk主要有以下信息构成:
- assets文件夹。存放一些配置文件、资源文件,assets不会自动生成对应的 ID,而是通过 AssetManager 类的接口获取。
- res。res 是 resource 的缩写,这个目录存放资源文件,会自动生成对应的 ID 并映射到 .R 文件中,访问直接使用资源ID。
- META-INF。保存应用的签名信息,签名信息可以验证 APK 文件的完整性。
- AndroidManifest.xml。这个文件用来描述 Android 应用的配置信息,一些组件的注册信息、可使用权限等。
- classes.dex。Dalvik 字节码程序,让 Dalvik 虚拟机可执行,一般情况下,Android 应用在打包时通过Android SDK 中的 dx 工具将 Java 字节码转换为 Dalvik 字节码。
- resources.arsc。记录着资源文件和资源 ID 之间的映射关系,用来根据资源 ID 寻找资源。
基于上面的组成部分,那么优化也可以从以下几个方面着手:
- 代码混淆。使用proGuard 代码混淆器工具,它包括压缩、优化、混淆等功能。
- 资源优化。比如使用 Android Lint 删除冗余资源,资源文件最少化等。
- 图片优化。比如利用 AAPT 工具对 PNG 格式的图片做压缩处理,降低图片色彩位数等。
- 避免重复功能的库,使用 WebP图片格式等。
插件化,比如功能模块放在服务器上,按需下载,可以减少安装包大小。