我可以在Androiddebugging版本中启用multidex吗?

Dears,我读过许多博客文章,multidex应用程序的启动速度比正常的应用程序慢。 我的应用程序使用了很多超过64k方法的库,所以我使用multidex。 但是当我在发布版本中使用proguard时,最终的apk变得less于64k的方法

所以我的问题是:我可以在Androiddebugging版本中启用multidex,所以我没有运行时错误? 并在发布版本中禁用多个dex,因为我不需要它?

如果是的话,怎么样?

如果没有,Android是否足够聪明,加快启动,因为它应该认识到,应用程序没有超过64k,即使它是多个dex应用程序?

Solutions Collecting From Web of "我可以在Androiddebugging版本中启用multidex吗?"

是的你可以。 当您声明您的buildTypes仅包含multidex仅用于debugging时:

buildTypes { release { multiDexEnabled false   } debug { multiDexEnabled true } } 

而不是启用multidex仅用于debugging,你可以改变你的min sdk版本为21只为了debugging,所以gradle可以加速ART的dexing:

 android { productFlavors { // Define separate dev and prod product flavors. dev { // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin // to pre-dex each module and produce an APK that can be tested on // Android Lollipop without time consuming dex merging processes. minSdkVersion 21 } prod { // The actual minSdkVersion for the application. minSdkVersion 14 } } ... buildTypes { release { runProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile 'com.android.support:multidex:1.0.0' } 

http://developer.android.com/tools/building/multidex.html

随着android工作室变得“足够聪明”,build议的方法不再需要了。 实际上,当你使用minSdkVersion 21(旧的方法)来加速dex的编译时,它会给你一个警告:

在开发过程中,您不再需要使用开发模式来启用多分类,这可以减lessAPI版本检查…

过去,我们的文档build议创build一个具有21的minSdkVersion的开发产品风格,以便在开发过程中使多重分解加速构build。 这个解决方法不再是必要的,它有一些严重的缺点,比如破坏API访问检查(因为真正的minSdkVersion不再是已知的)。在IDE和Gradle插件的最新版本中,IDE自动将API级别用于部署的连接设备,如果该设备至less是API 21,则自动开启多重分解,这意味着您可以获得与开发产品相同的速度优势,但是没有缺点。