0. 前言
APK的大小对APP的加载速度,使用内存大小和消耗功率多少有一定影响。如何减小APK的大小对于Android开发者是一个永恒的话题。
查阅了很多相关资料,并将其做了删减以及总结。本文原创,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52199151
首先就来了解一下APK的组成结构。
1. APK的组成结构
META-INF:包含CERT.SF和CERT.RSA签名文件,和MANIFEST.MF清单文件。
assets:包含APP的assets资源,代码中可以通过AssetManager对象访问。
res:包含没有编译到resources.arsc中的资源。
lib:包含为特定处理器编译的代码。这个目录包含不同平台类型的子目录,如armeabi,armeabi-v7a,arm64-v8a,x86,x86_64和mips。
resources.arsc:包含被编译的资源。这个文件包含来自res/values目录下所有配置的XML内容。打包工具提取XML内容,将它们编译为二进制的形式,并且打包。这些内容包含语言字符串和样式,和在resources.arsc文件不包含的内容的路径,如布局文件和图片。
classes.dex:包含被编译的类,以DalvikART虚拟机能理解的dex文件格式。
AndroidManifest.xml:核心的Android清单文件。这个文件罗列了APP名称,版本,访问权限,和APP引用的库文件。这个文件使用Android的二进制XML格式。
2. 减小APK的大小的方式汇总
2.1 Lint工具
在Android Studio中的一个静态代码工具lint,检测在你的res目录下代码没有引用的资源,并没有扫描assets目录下的资源。当lint工具在你的项目中发现一个潜在的未使用的资源,它会打印一条如下示例的消息。只提醒,不主动移除。
2.2 ShrinkResourcesGradle以及MinifyEnabled
添加到代码中的库可能包含未使用的资源。在APP的build.gradle文件中启动shrinkResourcesGradle,它能自动替你删除这些资源。