我不知道为什么,但今天早上无法在手机上启动我的应用程序。我收到以下错误消息:无法在单个dex文件中容纳请求的类。尝试提供一个主索引列表。
我对android真的是个新手,我不明白这个问题,我需要做什么?为什么我现在遇到这个问题而不是以前?
bkkx9g8r1#
在中添加依赖项 build.gradle 文件:
build.gradle
implementation 'androidx.multidex:multidex:2.0.1'
在里面 build.gradle 的 defaultConfig 第节增补:
defaultConfig
multiDexEnabled true
此处的更多详细信息:错误:无法在单个索引文件中容纳请求的类。请尝试提供主索引列表。#方法:72477>65536
62o28rlo2#
运行rn 0.62,这对我成功构建起了作用。更新build.gradleclasspath('com.android.support:multidex:1.0.3') 更新defaultconfigmultiDexEnabled true 在这两次更改之后,再次重新启动gradle构建。
classpath('com.android.support:multidex:1.0.3')
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及更高版本使用一个名为art的运行时,该运行时本机支持从应用程序apk文件加载多个dex文件。art在应用程序安装时执行预编译,扫描类(…n).dex文件,并将它们编译成单个.oat文件,供android设备执行。有关android 5.0运行时的更多信息,请参阅介绍艺术。
android 5.0之前的平台版本使用dalvik运行时执行应用程序代码。默认情况下,dalvik将应用程序限制为每个apk的单个classes.dex字节码文件。为了绕过此限制,您可以使用multidex支持库,该库成为应用程序主dex文件的一部分,然后管理对附加dex文件及其包含的代码的访问。在最后一种情况下,您需要使用multidex
s4n0splo4#
内置.gradle(应用程序)文件:在依赖项中添加以下内容:
implementation 'com.android.support:multidex:1.0.3'
并在defaultconfig中添加以下内容:,
希望你能找到解决办法。
3xiyfsfu5#
在应用程序级别build.gradle的默认配置中添加multidexenabled就足够了多索引启用真请参见图片以供参考
tjjdgumg6#
当您的应用程序及其引用的库超过65536个方法时,您会遇到一个生成错误,表明您的应用程序已达到android生成体系结构的限制。更多信息,请参见此处
只需将multi-dex支持库添加到 buid.gradle (Module: app) 文件
buid.gradle (Module: app)
dependencies { def multidex_version = "2.0.1" implementation 'androidx.multidex:multidex:$multidex_version' }
dgenwo3n7#
此错误在使用时出现 deprecated npm 以及 correct npm 出于同样的目的
deprecated npm
correct npm
7条答案
按热度按时间bkkx9g8r1#
在中添加依赖项
build.gradle
文件:在里面
build.gradle
的defaultConfig
第节增补:此处的更多详细信息:错误:无法在单个索引文件中容纳请求的类。请尝试提供主索引列表。#方法:72477>65536
62o28rlo2#
运行rn 0.62,这对我成功构建起了作用。
更新build.gradle
classpath('com.android.support:multidex:1.0.3')
更新defaultconfigmultiDexEnabled true
在这两次更改之后,再次重新启动gradle构建。wvyml7n53#
multidex并不总是问题的解决方案,它确实会生成更多的dex文件来满足您的方法计数,但请确保不要导入您需要的更多方法,因为从长远来看,这将使您的构建速度比以前慢。
例如,如果您只需要使用play services中的位置库,则有两个选项
第一个是实现将随位置一起提供的全剧服务库
这些库可能有超过40000个方法(只是一个估计,我不知道总数),接近65536个极限方法。
相反,您应该只针对将要使用的库,而不是整个库包
在这种情况下
可能只有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
s4n0splo4#
内置.gradle(应用程序)文件:在依赖项中添加以下内容:
并在defaultconfig中添加以下内容:,
希望你能找到解决办法。
3xiyfsfu5#
更新2021 android-x和android studio 4.xx:
在应用程序级别build.gradle的默认配置中添加multidexenabled就足够了
多索引启用真
请参见图片以供参考
tjjdgumg6#
android x的推荐解决方案
为什么会出错
当您的应用程序及其引用的库超过65536个方法时,您会遇到一个生成错误,表明您的应用程序已达到android生成体系结构的限制。更多信息,请参见此处
解决方案
只需将multi-dex支持库添加到
buid.gradle (Module: app)
文件dgenwo3n7#
此错误在使用时出现
deprecated npm
以及correct npm
出于同样的目的