关于MultiDex的文章很多。有时,我遇到了一些错误已解决,包括multiDexEnabled true
在defaultConfig
我的build.gradle部分中。
但是,此功能到底是什么?有什么使用场景?
关于MultiDex的文章很多。有时,我遇到了一些错误已解决,包括multiDexEnabled true
在defaultConfig
我的build.gradle部分中。
但是,此功能到底是什么?有什么使用场景?
Answers:
引用文档:
Android应用程序(APK)文件包含Dalvik可执行(DEX)文件形式的可执行字节码文件,其中包含用于运行您的应用程序的已编译代码。Dalvik Executable规范将单个DEX文件中可以引用的方法总数限制为65,536,包括Android框架方法,库方法和您自己代码中的方法。超过此限制要求您将应用程序构建过程配置为生成多个DEX文件,称为multidex配置。
因此,该功能是:它允许您复杂的应用程序进行编译。使用它的情况是您的应用由于达到64K DEX方法参考限制而无法编译时。这显示为构建错误,例如:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
一个.dex文件可以有65,536个方法(引用),因此,如果引用数超过65,536,则应使用multidex。
android应用程序被编译成.dex文件,然后将其压缩为单个.apk文件。
DVM(Dalvik虚拟机)使用.dex文件执行字节码。
是什么导致引用数量超过65,536个限制?
您编写的方法+ Android Framework方法+第三方库(例如Volley,Retrofit,Facebook SDK等)方法。
我已阅读“某处”
App Compat 24.2.1包含16.5k方法
Google Play Services GCM 9.6.1包含16.7k方法
因此,如果您创建了一个具有App Compat 24.2.1的简单Hello world应用程序,则您已经是1/4方式穿越单一DEX方法限制
Dex代表Dalvik Executable,它是Google的虚拟机处理器(Dalvik)用于处理Android应用程序的工具。Android的构建考虑到了小型和简单的应用程序,并且对单个Dalvik Executable的约束将代码引用的屋顶固定为65,536种方法。由于这个问题以及Dalvik机器处理代码执行的方式,因此存在一些编译和调用问题,直到Monkey Patch或MultiDex集成为止。Android Studio中的MultiDex集成使Android开发人员能够使用65,536种以上的方法来编译和执行代码库!
正在吸引Android开发人员的官方网站。
If your minSdkVersion is set to 21 or higher, multidex is enabled by default and you do not need the multidex support library.