当min sdk为5.0以下时启用multidex创建singledex但是当min sdk为5.0及以上时启用多个dex

时间:2017-10-06 09:52:19

标签: android gradle android-5.0-lollipop multidex

当min sdk为5.0以下时启用multidex创建singledex 但是当min sdk为5.0及以上时,它会创建多个dex文件。

重现的步骤:

  1. 创建项目并添加appcompat和RecyclerView库
  2. 将min sdk设置为14并构建项目
    输出:将在构建文件夹

  3. 中创建单个dex
  4. 将min sdk设置为21并构建项目
    输出:将在构建文件夹

  5. 中创建多个dex文件

    在5.0及以上版本达不到64k限制时,有没有办法避免创建多个dex?

1 个答案:

答案 0 :(得分:0)

您需要禁用InstantRun以禁用multidex,因为如果您的最小sdk设置为21或更高,则会自动配置它。

您可以从documentation

中阅读
  

针对Android 5.0及更高版本的Multidex支持
  Android 5.0(API级别21)及更高版本使用名为ART的运行时,它本身支持从APK文件加载多个DEX文件。 ART在app安装时执行预编译,扫描classesN.dex文件并将它们编译成单个.oat文件,以供Android设备执行。因此,如果您的minSdkVersion为21或更高,则不需要multidex支持库。

     

有关Android 5.0运行时的更多信息,请阅读ART和Dalvik。

     

注意:使用即时运行时,当您的应用minSdkVersion设置为 21 或更高时,Android Studio会自动为您的应用配置multidex 。由于Instant Run仅适用于应用程序的调试版本,因此您仍需要为multidex配置发布版本以避免64K限制。