android studio方法总数超过64K报错Error:The number of method references in a .dex file cannot exceed 64K.

开发中记录点滴

Error:The number of method references in a .dex file cannot exceed 64K.

上面的错误显示一个共同的数字:65536。这个数字是重要的,它代表了引用的总数,可以在单个调用的代码Dalvik可执行(Dex)字节码文件。如果你的Android应用发生这个错误,恭喜你,你的代码已经达到了一定的量!本文解释了如何解决这个限制并继续构建应用程序。

关于64 k引用限制

Android应用程序(APK)在Dalvik可执行文件的形式包含可执行的字节码文件(DEX)文件,其中包含已编译的代码来运行你的应用程序。Dalvik可执行规格限制一个Dex文件包含65536个方法:包括Android框架方法、Library方法的总数、和你自己的代码方法总数。因为65536等于64×1024,这一限制被称为“64k引用限制”。 
这个极限就要求我们配置应用程序的构建过程,需要生成多个DEX文件,所以称为multidex 配置。

 

1.问题描述

Error:The number of method references in a .dex file cannot exceed 64K.

Error:Execution failed for task ':app:transformClassesWithDexForRelease'.

> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException:            java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:  org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_77\bin\java.exe'' finished with non-zero exit value 2‘’?

2.解决方案

方案1:使用插件化框架  比如: https://github.com/singwhatiwanna/dynamic-load-apk

方案2:分割Dex

(1)在model添加依赖

implementation 'com.android.support:multidex:1.0.1'

android studio方法总数超过64K报错Error:The number of method references in a .dex file cannot exceed 64K._第1张图片

(2)在 model 中的defaultConfig 下添加

            multiDexEnabled true

android studio方法总数超过64K报错Error:The number of method references in a .dex file cannot exceed 64K._第2张图片

(3)自定义MyApplication继承MultiDexApplication,重写attachBaseContext函数
@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

(4)在 AndroidManifest.xml 中的  application 标签中添加  

android studio方法总数超过64K报错Error:The number of method references in a .dex file cannot exceed 64K._第3张图片

 

你可能感兴趣的:(android)