"multiDexEnabled true"是什么意思?

she*_*nde 48 android android-studio android-gradle-plugin android-sdk-build-tools

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

Int*_*iya 51

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

您应阅读有关使用超过64K方法构建应用程序的官方指南

  • 为什么默认情况下不启用? (12认同)
  • @fobbymaster看看这里http://stackoverflow.com/questions/6226290/default-value-of-boolean-in-java (2认同)

Roh*_*ngh 22

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

但我永远不会写65536方法!

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

您编写的方法+ 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应用程序,那么您的应用程序已经拥有16.7k方法.

如何启用multidex支持

这取决于你的应用程序的minSdkVersion

如果minSdkVersion> = 21,则可以通过编写multidexEnabled = true来启用它,
如果minSdkVersion <21,那么您必须在gradle中包含Multidex Compatibily库.
详细了解如何启用multidex支持

multiDex的优点

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

有关.dex文件的更多信息

Android应用程序被编译成.dex文件/文件,然后压缩为单个.apk文件..dex文件具有Dalvik虚拟机(DVM)使用的字节码.
您可以在.dex和DVM上阅读更多内容