最近在做android应用性能优化,查阅了网上很多资料,为了加深理解以及便于后面查阅,因此在博客中记录下来。
应用性能优化将会有一系列文章,本篇主要说下android应用安装包大小的优化。
首先来了解下android应用安装包的构成。通过android sdk工具,将android应用工程中的所有数据以及资源文件打
包成apk文件(编译打包流程可看http://blog.csdn.net/chen381051010/article/details/55657036)。.apk文件是一种压缩文件,解压缩后目录结构如下:
目录中文件有些是某个应用才有的,有些是android应用共有的,下面主要讲下所有应用共有的文件:
1、assets
该目录根据应用需要可以存放任何文件夹架构的文件,如资源文件,配置文件等等。在应用中可以通过
AssetManager类来获得该目录下的文件。经常会有人问到该目录与res/raw的区别,关于两者区别网上有很多相关文
章,在此不做说明。
2、lib目录
该目录主要存放应用所依赖的native库文件,根据cpu类型,该目录下可以包含4个子目录,分别是armeabi、armeabi-v7a、x86以及mips,但不是必须包含4个子目录。
3、res
相信大家对该目录肯定都很熟悉了,在此也就不做过多说明了。
4、META-INF
该目录用于保存应用的签名信息。
5、AndroidManifest.xml
应用程序的配置文件。
6、classes.dex以及classes2.dex
java可执行程序,如果一个应用程序方法总数超过65K,则会进行分包出现classes2.dex,classes3.dex...等文件。
7、resources.arsc
该文件用于记录资源文件与资源ID之间的映射关系。
在上述这些文件中classes.dex、res以及lib是比较大的,因此优化主要从这三个文件入手:
1、代码混淆
通过proGuard进行代码混淆:移除无效的类、属性、方法;移除没用的结构;把类名、属性名、方法名替换成一
到两个字母。
具体如何进行代码混淆可以参照网上教程或者android官方文档。
2、资源优化
(1)通过lint检查,删除无用冗余资源,具体操作自己百度;
(2)资源文件最少化,尽量使用一套切图片资源(若遇到不同手机分辨率差不较大的情况下可以针对某些图片切多
套图片资源);采用轻量级的第三方库,移除没用的第三方库;
(3)图片优化,针对图片做压缩处理,如Zopfli、PNGoo等压缩工具;采用更合适的图片格式,如在闪屏介绍页采用jpg格式的图片;
3、lib优化
移除无用的库文件;根据不同需求,有些lib目录下的子目录可以去除。
4、其他优化
插件化编程,相关知识可自行百度~。
应用包的大小对应用本身的使用并无影响,然而为了提高用户的下载意愿,在项目上线部署时也是一个需要考虑的
优化方面。本章简要的介绍了下android应用安装包大小优化,欢迎各位看官批评指正。