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

我不知道为什么,但是今天早上无法在手机上启动我的应用程序。我收到此错误消息:

无法将请求的类放入单个dex文件中。尝试提供main-dex列表。

#方法:68061> 65536消息{种类=错误,文本=无法在单个dex文件中容纳所请求的类。尝试提供main-dex列表。

#方法:68061> 65536,sources = [未知源文件],工具

我真的是Android的新手,我不明白问题所在,该怎么办?为什么我现在而不是以前遇到这个问题?


汪汪一只猫
浏览 208回答 3
3回答

守着星空守着你

在build.gradle文件中添加依赖项:implementation 'androidx.multidex:multidex:2.0.1'在build.gradle的defaultConfig部分中添加:multiDexEnabled true此处有更多详细信息:错误:无法在单个dex文件中容纳所请求的类。尝试提供main-dex列表。#方法:72477> 65536

潇湘沐

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以上版本的minSdkVersionAndroid 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java