当前位置: 首页 > 知识库问答 >
问题:

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

轩辕海
2023-03-14

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

无法在单个dex文件中容纳请求的类。尝试提供一个主索引列表。

#方法: 68061

#方法: 68061

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

共有3个答案

蒋哲
2023-03-14

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

例如,如果您只需要使用play services中的位置库,则有两个选项

第一个是实现整个游戏服务库,这将伴随着位置

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及更高版本使用名为ART的运行时,它本机支持从应用程序APK文件加载多个dex文件。ART在应用程序安装时执行预编译,扫描类(...n). dex文件,并将其编译成单个. oat文件,供Android设备执行。有关Android 5.0运行时的详细信息,请参阅介绍ART。

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

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

孙博艺
2023-03-14

运行RN 0.62,这对我来说是成功的构建。

classpath('com.android.support:multidex:1.0.3')

更新defaultConfig

重启用true

在这两次更改之后,再次重新启动gradle构建。

萧英睿
2023-03-14

build中添加依赖项。渐变文件:

implementation 'androidx.multidex:multidex:2.0.1'

build.gradledefaultConfig部分添加:

multiDexEnabled true

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

 类似资料: