“multiDexEnabled true”是什么意思?

问题描述 投票:39回答:3

Android gradle中的“multiDexEnabled true”是什么意思。我们为什么要用这个?如果启用了什么效果?

android android-studio android-gradle android-sdk-build-tools
3个回答
49
投票

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

你应该阅读关于Building Apps with Over 64K Methods的官方指南


16
投票

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

But I will never write 65536 methods!

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

您编写的方法+ 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上阅读更多内容


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.