Android 学习之旅—面对“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.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
Error:Execution failed for task ‘:xxx:transformClassesWithDexForDebug’. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException

产生原因

上面的错误显示一个共同的数字:65536。这个数字是重要的,它代表了引用的总数,可以在单个调用的代码Dalvik可执行(Dex)字节码文件。如果你的Android应用发生这个错误,恭喜你,你的代码已经达到了一定的量.
Android应用程序(APK)在Dalvik可执行文件的形式包含可执行的字节码文件(DEX)文件,其中包含已编译的代码来运行你的应用程序。Dalvik可执行规格限制一个Dex文件包含65536个方法:包括Android框架方法、Library方法的总数、和你自己的代码方法总数。因为65536等于64×1024,这一限制被称为“64k引用限制”。
这个极限就要求我们配置应用程序的构建过程,需要生成多个DEX文件,所以称为multidex 配置。

以上的说明来自链接,详细的细节我也不是很清楚,留作以后学习

解决方法

在这里,我们需要更改gradle文件(module和project的都要更改)

第一步

修改project的gradle配置:
buildscript中的仓库中添加:

maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/' }
 maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}

allprojects中的仓库中添加:

maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/' }
 maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}

添加之后project的gradle文件显示如下:

buildscript {
    repositories {
      	//这里是你自己的添加的链接
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}


    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
    }
}

allprojects {
    repositories {
   		 //这里是你自己的添加的链接
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
    }
}

以上的步骤相当于把阿里云的仓库取出来,放入自己的项目中。有的时候可以不需要阿里云,但是一开始在没有把阿里云的镜像maven库导入的时候sync一直失败…(明明我也搭梯子了的说)

第二步

修改module的gradle配置:
defaultConfig中添加

multiDexEnabled true

dependencies中添加

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

第三步

sync整个项目即可

第四步(可选)

大部分其他的教程都说要修改manifest文件Application的配置,这一步我没有实现但是我的AS也可以跑了
有关这一部分,大家可以参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值