为了账号安全,请及时绑定邮箱和手机立即绑定

Android给出错误“无法在单个dex文件中容纳请求的类”

Android给出错误“无法在单个dex文件中容纳请求的类”

汪汪一只猫 2021-05-04 15:29:37
我不知道为什么,但是今天早上无法在手机上启动我的应用程序。我收到此错误消息:无法将请求的类放入单个dex文件中。尝试提供main-dex列表。#方法:68061> 65536消息{种类=错误,文本=无法在单个dex文件中容纳所请求的类。尝试提供main-dex列表。#方法:68061> 65536,sources = [未知源文件],工具我真的是Android的新手,我不明白问题所在,该怎么办?为什么我现在而不是以前遇到这个问题?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

build.gradle文件中添加依赖项:

implementation 'androidx.multidex:multidex:2.0.1'

build.gradledefaultConfig部分中添加:

multiDexEnabled true

此处有更多详细信息:错误:无法在单个dex文件中容纳所请求的类。尝试提供main-dex列表。#方法:72477> 65536


查看完整回答
反对 回复 2021-05-26
?
潇湘沐

TA贡献1816条经验 获得超6个赞

Multidex并不总是解决问题的方法,它确实会生成更多的dex文件来满足您的方法数量,但请确保不要导入更多所需的方法,因为从长远来看,这将使您的构建速度比以前慢。

例如,如果您只需要使用播放服务中的位置库,则有两个选择

第一个是实现随位置附带的整个播放服务库

implementation 'com.google.android.gms:play-services:11.8.0'

这些库的总数可能超过40.000种以上的方法(仅是一种估计,我并不真正知道总数),接近达到65536种极限方法。

相反,您应该只将要使用的库作为目标,而不是整个库

在这种情况下

implementation 'com.google.android.gms:play-services-location:11.8.0'

可能只有50-100种方法可以使用,这比在您永远不会使用的整个库包中加载一大堆方法要好得多。

这只是避免出现的提示

无法将请求的类放入单个dex文件中。

对于android 5.0 API 20以上版本的minSdkVersion

Android 5.0及更高版本使用称为ART的运行时,它本身支持从应用程序APK文件加载多个dex文件。ART在应用程序安装时执行预编译,该预编译将扫描classes(.. N).dex文件并将其编译为单个.oat文件,以供Android设备执行。有关Android 5.0运行时的更多信息,请参见ART简介。

如果您定位的是较低端的设备(Android 4.1 API 16)或低于Android 5(API 20)

Android 5.0之前的平台版本使用Dalvik运行时来执行应用程序代码。默认情况下,Dalvik将每个APK的应用程序限制为单个classes.dex字节码文件。为了解决此限制,您可以使用multidex支持库,该库成为应用程序主DEX文件的一部分,然后管理对其他DEX文件及其包含的代码的访问。

在这最后一种情况下,您将需要使用multidex


查看完整回答
反对 回复 2021-05-26
  • 3 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号