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

0sgqnhkj  于 2021-08-20  发布在  Java
关注(0)|答案(7)|浏览(549)

我不知道为什么,但今天早上无法在手机上启动我的应用程序。我收到以下错误消息:
无法在单个dex文件中容纳请求的类。尝试提供一个主索引列表。

方法:68061>65536消息{kind=error,text=无法在单个dex文件中容纳请求的类。尝试提供一个主索引列表。

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

我对android真的是个新手,我不明白这个问题,我需要做什么?为什么我现在遇到这个问题而不是以前?

bkkx9g8r

bkkx9g8r1#

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

implementation 'androidx.multidex:multidex:2.0.1'

在里面 build.gradledefaultConfig 第节增补:

multiDexEnabled true

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

62o28rlo

62o28rlo2#

运行rn 0.62,这对我成功构建起了作用。
更新build.gradle
classpath('com.android.support:multidex:1.0.3') 更新defaultconfig
multiDexEnabled true 在这两次更改之后,再次重新启动gradle构建。

wvyml7n5

wvyml7n53#

multidex并不总是问题的解决方案,它确实会生成更多的dex文件来满足您的方法计数,但请确保不要导入您需要的更多方法,因为从长远来看,这将使您的构建速度比以前慢。
例如,如果您只需要使用play services中的位置库,则有两个选项
第一个是实现将随位置一起提供的全剧服务库

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

这些库可能有超过40000个方法(只是一个估计,我不知道总数),接近65536个极限方法。
相反,您应该只针对将要使用的库,而不是整个库包
在这种情况下

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

可能只有50-100个方法可以使用,这在构建时比从整个库包中加载一大堆你永远不会使用的方法要好。
这只是一个建议,以避免
无法在单个dex文件中容纳请求的类。

适用于android 5.0 api 20以上版本+

android 5.0及更高版本使用一个名为art的运行时,该运行时本机支持从应用程序apk文件加载多个dex文件。art在应用程序安装时执行预编译,扫描类(…n).dex文件,并将它们编译成单个.oat文件,供android设备执行。有关android 5.0运行时的更多信息,请参阅介绍艺术。

如果您的目标是低端设备(安卓4.1 api 16)或安卓5(api 20)之前的设备

android 5.0之前的平台版本使用dalvik运行时执行应用程序代码。默认情况下,dalvik将应用程序限制为每个apk的单个classes.dex字节码文件。为了绕过此限制,您可以使用multidex支持库,该库成为应用程序主dex文件的一部分,然后管理对附加dex文件及其包含的代码的访问。
在最后一种情况下,您需要使用multidex

s4n0splo

s4n0splo4#

内置.gradle(应用程序)文件:在依赖项中添加以下内容:

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

并在defaultconfig中添加以下内容:,

multiDexEnabled true

希望你能找到解决办法。

3xiyfsfu

3xiyfsfu5#

更新2021 android-x和android studio 4.xx:

在应用程序级别build.gradle的默认配置中添加multidexenabled就足够了
多索引启用真
请参见图片以供参考

tjjdgumg

tjjdgumg6#

android x的推荐解决方案

为什么会出错

当您的应用程序及其引用的库超过65536个方法时,您会遇到一个生成错误,表明您的应用程序已达到android生成体系结构的限制。更多信息,请参见此处

解决方案

只需将multi-dex支持库添加到 buid.gradle (Module: app) 文件

dependencies {
    def multidex_version = "2.0.1"
    implementation 'androidx.multidex:multidex:$multidex_version'
}
dgenwo3n

dgenwo3n7#

此错误在使用时出现 deprecated npm 以及 correct npm 出于同样的目的

相关问题