最近在做apk优化,了解了一下不同的资源文件对apk,主要研究的是无效代码,资源文件,原生文件对apk大小的影响,具体情况如下:

  • 代码方面(主要是查看无效import语句):

Android 文件size格式 安卓文件大小分析_Android 文件size格式


可以看到该类中包含了许多无用的import语句,编译、打包查看apk文件大小。

Android 文件size格式 安卓文件大小分析_打包apk_02

可以看到我们的apk的大小是:49899字节;

然后我们删除无效的import语句:

Android 文件size格式 安卓文件大小分析_资源文件_03

编译、打包:

Android 文件size格式 安卓文件大小分析_打包apk_04

可以看到49897字节,可以看到大小还是有变换的,当然这是因为项目无效import语句少的缘故,我在我们项目中使用,apk大小从:

  • 12146518 –> 12143113 字节,减少了3405字节,当然是有影响的,但是比较少而已。

这里推荐一个android studio的设置,可以避免引用无效的import语句:

Android 文件size格式 安卓文件大小分析_Android 文件size格式_05


将复选框全部选中,在java源文件中引用包名的时候就可以删除无用的import语句了。

  • 资源文件方面

还是以刚刚的项目为例,大小为49897字节,我们添加一个图片资源但是不引用:

Android 文件size格式 安卓文件大小分析_文件大小_06


编译、打包:

Android 文件size格式 安卓文件大小分析_Android 文件size格式_07


可以发现apk文件的大小增大不少,也就是说我们添加的资源文件即使不适用的话,IDE在打包apk的时候也会将其打包进入apk安装包中。

  • 原生文件方面

还是以刚刚的项目为例,原本的大小为49897字节,我们在assets目录下添加一个原生文件:

Android 文件size格式 安卓文件大小分析_打包apk_08

编译、打包:

Android 文件size格式 安卓文件大小分析_Android 文件size格式_09

可以发现apk文件的大小也发生了变化,说明原生文件也会打包进入apk中,即使没有使用。

好了,到此我们可以知道了:

  • 无效代码,没有引用的资源文件,原生文件都会被打包进入apk文件中所以我们平时编码过程中要注意细节一些没有使用的代码,资源文件都需要删除。