“multiDexEnabled true”是什么意思?

时间:2016-04-26 05:36:52

标签: android android-studio android-gradle android-sdk-build-tools

Android gradle中的“multiDexEnabled true”是什么意思。我们为什么要用这个?如果启用它会产生什么影响?

3 个答案:

答案 0 :(得分:45)

  

Android应用程序(APK)文件包含可执行的字节码文件   Dalvik可执行文件(DEX)文件的形式,包含已编译的文件   用于运行您的应用的代码。 Dalvik可执行规范限制   单个DEX中可引用的方法总数   文件到65,536,包括Android框架方法,库方法,   和你自己的代码中的方法。超过此限制需要这样做   您配置应用程序构建过程以生成多个DEX   文件,称为multidex配置。

您应该阅读有关 Building Apps with Over 64K Methods

的官方指南

答案 1 :(得分:15)

默认情况下,Android应用程序具有SingleDex支持,这限制了您的应用程序只有65536个方法(引用)。所以multidexEnabled = true只是意味着你现在可以在你的应用程序中编写超过65536个方法(引用)。

但我永远不会写65536方法!

当我们说出方法的数量时,就意味着

  

你编写的方法+ Android Framework方法+第三方   库(例如Volley,Retrofit,Facebook SDK等)方法。

我在帖子中的某个地方读到过 App Compat 24.2.1包含16.5k方法
Google Play服务GCM 9.6.1包含16.7k方法 因此,如果您刚刚编写了一个包含App Compat 24.2.1的简单Hello world应用程序,那么您的应用程序已经具有 16.7k 方法。

如何启用multidex支持

  

这取决于您应用的minSdkVersion

如果minSdkVersion> = 21,那么您可以通过编写multidexEnabled = true来启用它 如果minSdkVersion< 21那么你必须在你的gradle中加入Multidex Compatibily library 有关enabling multidex support

的更多信息,请参阅

multiDex的优势

multidex允许您的应用程序拥有更多第三方库。

有关.dex文件的更多信息

将Android应用程序编译成.dex文件/文件,然后将其压缩为单个.apk文件。 .dex文件具有Dalvik虚拟机(DVM)使用的字节码 您可以在.dex and DVM

上阅读更多内容

答案 2 :(得分:1)

它允许您使用超过64k的方法构建应用程序。有关详细信息,请参阅此处http://developer.android.com/intl/es/tools/building/multidex.html