安装包性能优化

作者: 慕涵盛华 | 来源:发表于2017-02-07 16:39 被阅读67次

    安装包性能优化:

    1.减小APK大小

    2.提高APK运行速率

    APK为什么越来越大?

    1.随着Android系统版本的碎片化发展和手机类型的极大丰富,每个APP要支持的主流dpi分类越来越多。

    2.随着Android生态系统的不断发展,逐渐变得成熟,出现了很多好用的三方库,使用非常方便,由于引入了三方库,就不可避免的引入一些无用的或重复的代码和资源文件。

    3.为了提高用户体验,对APP的UI产生了更高的要求,APP提供的资源细节越来越丰富。占用的体积也就越来越大。

    从APK文件结构说起

    apk解压后的目录

    assets:该目录主要存放需要打包到Android应用程序中的静态文件,例如:图片文件,JOSN配置文件,渠道配置文件,数据库文件等。该目录下的文件不会生成对应的资源ID。

    lib:该目录主要存放的是应用程序依赖的不同的ABI类型的.so文件。

    META-INF:该目录存放的是APK签名相关的密钥文件。用于验证APK包的完整性以及保证系统的安全。

    res:该目录存放的是应用的资源文件,包括图片资源、布局资源、尺寸资源、字符串资源等;该目录下的资源文件都会生成对应的资源ID,存放在R.java文件中。

    AndroidMainifest.mxl:清单文件,用来控制应用的名称,桌面图标,访问权限等全局属性;此外还有Android 四大组件的生命配置等。

    classes.dex:应用程序的可执行文件。Android 代码都打包在该文件中。单个dex文件中的方法数不能超过“64K”;

    resources.arsc:资源索引表,资源的描述文件,用来描述具有ID值的资源的对应关系。

    根据APK包的组成,影响APK大小的文件可以分为三种类型,分别如下:

            i.Java代码文件:classes*.dex;

           ii.Native(本地)代码文件:lib目录下的.so文件

          iii.资源文件:包括aeests目录、res目录以及resources.arsc文件

    综上所述,通过以下几个方面对APK文件进行瘦身:

    1.优化图片--图片压缩

    目前Android平台原生支持的图片格式有:JPEG、PNG、GIF、BMP、Web

    可以通过图片压缩工具对原始图片进行压缩,可以大大较小图片的大小,从而节省空间。

    图片压缩工具:tinypng.com/

    图片压缩转换工具:isparta.github.io/

    2.使用AS自带的Lint工具删除无用资源

    Lint不仅能检测内存泄漏,还能检测出没有用到的资源,该工具只是提出建议优化的地方,并不是100%靠谱。

    Lint代码检测

    3.资源动态加载--插件化开发

    插件化开发也是减少一个App体积的可行的途径,某些模块功能代码不必内置APK中,在程序运行的时候动态加载。

    4.Proguard(混淆)

    通过代码混淆不仅能够提高APK的反编译,还能较小APK大小;混淆可以删除注释和无用的代码;可以将Java文件,变量,方法名登改为短名,这样就可以缩减字符所占的空间,但并不是所有的文件都可以混淆;比如res下的文件,文件res下的资源文件在R.java 文件中都会有对应的ID,如果直接将文件名改了,资源和ID就不对应了。导致程序崩溃。

    代码混淆

    5.资源“混淆”

    上面提到,res下的资源文件不能混淆,如果我们可以将res下的资源文件名也改成短名,并且ID对应关系也改成对应的;这样就可以实现资源文件的“混淆了”,通过对应的工具代码:将资源文件名和对应关系改掉,resources.arsc文件就是资源的描述文件,所以需要对该文件进行读写操作;

    resources.arsc文件格式

    6.重构和优化代码

    保持良好的编码习惯,对你的代码进行持续的优化或者重构,减少代码的重复,实现代码的复用。

    最后附上代码:

    安装包优化工具代码:github.com/guofudong/ResProguard.git

    相关文章

      网友评论

        本文标题:安装包性能优化

        本文链接:https://www.haomeiwen.com/subject/jwfmittx.html