MultiDex你真的有了解过吗?

android studio 教程 | 2018-09-30 17:57

✤✤✤  前言 ✤✤✤

在项目中我们经常会遇到一些引用包冲突问题关于MultiDex的异常,百度一下会发现很多结果都是在配置文件中build.gradle 增加multiDexEnabled true 属性。问题是解决了,但其实它可能会影响应用的性能。那就了解下他的作用~

✤✤✤  重点  ✤✤✤

首先MultiDex是谷歌用来解决64K的问题的。64k问题是因为Android Dalvik虚拟机可执行文件.dex中的java方法数引用超过65536,所以当我们项目功能越来越多引用的第三方库越多就容易遇到这样的问题。我们可以通过Android Studio查看到APK里面包含classes.dex文件,它是可执行的Dalvik字节码文件。

从图片中可以看到不止一个.dex文件,为了解决单个dex文件带来的64K问题,所以拆分成多个.dex文件,所以就出现了MultiDex Support Library函数库用来拆分单个的.dex文件。然后应用启动时,先加载classes.dex,应用启动后依次加载其他dex文件。所以这会有一定的耗时,会有一点降低应用的性能。我们如何避免做这样的操作?

1、尽量多检查应用用到的第三方依赖。考虑第三方依赖库的体积、方法数、性能。可以剔除多余的方法,尽量避免加载一个库只用到其中一个功能,造成功能冗余;

2、使用Proguard移除无用的代码。它的压缩功能是通过分析字节码检测并移除无用的类、方法、和属性。

配置MultiDex:

1、在build.gradle中

2、添加依赖

compile 'com.android.support:multidex:1.0.1'3、引入MultiDexApplication

如果你自定义了Application就需要继承MultiDexApplication。如果没定义可以在AndroidManifest.xml文件中添加

MultiDexApplication的源码

✤✤✤  结束  ✤✤✤

所以以后可以尽量的多考虑引用的第三方库。选择也是很重要的哦~

好啦~ 本节知识点内容来自《Android高级进阶》 64K方法数限制原理与解决方案 国庆节日快乐~