Android gradle 中的“multiDexEnabled true”是什么意思。我们为什么要使用这个?如果启用有什么效果?
3 回答
Android 应用程序 (APK) 文件包含 Dalvik Executable (DEX) 文件形式的可执行字节码文件,其中包含用于运行您的应用程序的编译代码。Dalvik Executable 规范将单个 DEX 文件中可以引用的方法总数限制为 65,536 个,包括 Android 框架方法、库方法和您自己代码中的方法。超过此限制要求您将应用程序构建过程配置为生成多个 DEX 文件,称为 multidex 配置。
您应该阅读有关使用超过 64K 方法构建应用程序的官方指南
默认情况下,Android 应用程序支持 SingleDex,这将您的应用程序限制为只有 65536 个方法(参考)。所以 multidexEnabled = true 仅仅意味着现在你可以在你的应用程序中编写超过 65536 个方法(引用)。
但是我永远不会写65536个方法!
当我们说方法的数量时,它的意思是
您编写的方法 + Android 框架方法 + 第三方库(例如 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方法。
如何启用多索引支持
这取决于您的应用程序的 minSdkVersion
如果 minSdkVersion >= 21,那么您可以通过编写 multidexEnabled = true
如果 minSdkVersion <21 来启用它,那么您必须在您的 gradle 中包含Multidex Compatibily 库。
查看有关启用多索引支持的更多信息
multiDex的优势
multidex 允许您的应用程序拥有更多的第三方库。
更多关于 .dex 文件
Android 应用程序被编译成一个 .dex 文件/文件,这些文件又被压缩成一个 .apk 文件。.dex 文件具有 Dalvik 虚拟机 (DVM) 使用的字节码。
你可以阅读更多关于.dex 和 DVM
它允许您使用超过 64k 的方法构建应用程序。有关更多信息,请参见此处http://developer.android.com/intl/es/tools/building/multidex.html