【问题标题】:What does "multiDexEnabled true" mean?“multiDexEnabled true”是什么意思?
【发布时间】:2016-08-19 18:12:35
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

的官方指南

【讨论】:

【解决方案2】:

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

但我永远不会写65536个方法!

当我们说方法的数量时,它的意思是

你写的方法+Android框架方法+第三方 库(例如 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 方法。

如何启用多索引支持

这取决于你的应用的 minSdkVersion

如果 minSdkVersion >= 21 那么你可以通过编写 multidexEnabled = true 来启用它
如果 minSdkVersion Multidex Compatibily library。
查看更多关于enabling multidex support

multiDex的优势

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

关于 .dex 文件的更多信息

Android 应用程序被编译成 .dex 文件/文件,这些文件又被压缩成单个 .apk 文件。 .dex 文件具有 Dalvik 虚拟机 (DVM) 使用的字节码。
你可以阅读更多.dex and DVM

【讨论】:

  • 每个.dex 仍然有 64k 的限制 - 但顾名思义,它是多 dex(多个 dex 文件)。
  • 建一个方法超过64k的应用有什么问题
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2011-04-14
    • 2020-02-15
    相关资源
    最近更新 更多