Kev*_*inB 18 java android compiler-errors dex
我不知道为什么但今天早上在我的手机上启动我的应用是不可能的.我收到此错误消息:
无法在单个dex文件中容纳所请求的类.尝试提供main-dex列表.
#methods:68061> 65536消息{kind = ERROR,text =无法在单个dex文件中容纳请求的类.尝试提供main-dex列表.
#methods:68061> 65536,sources = [未知源文件],工具
我是Android新手,我不明白这个问题,我需要做什么?为什么我现在而不是之前得到这个问题?
Gok*_* KP 48
在build.gradle文件中添加依赖项:
implementation 'com.android.support:multidex:1.0.3'
Run Code Online (Sandbox Code Playgroud)
在build.gradle的defaultConfig部分添加:
multiDexEnabled true
Run Code Online (Sandbox Code Playgroud)
更多详细信息:错误:无法在单个dex文件中放入请求的类.请尝试提供main-dex列表.#methods:72477> 65536
Gaj*_*ara 31
运行RN 0.62,这对我成功构建有用。
classpath('com.android.support:multidex:1.0.3')
更新默认配置
multiDexEnabled true
在这 2 个更改之后,再次重新启动 gradle 构建。
Gas*_*lén 16
Multidex 并不总是问题的解决方案,确实它会生成更多 dex 文件以适应您的方法数量,但请确保不要导入更多您需要的方法,因为从长远来看,这会使您的构建比以前更慢。
例如,如果您只需要使用播放服务中的位置库,您有两种选择
第一个是实现随位置提供的整个游戏服务库
implementation 'com.google.android.gms:play-services:11.8.0'
Run Code Online (Sandbox Code Playgroud)
这些整个库可能有超过 40.000 多个方法(只是一个估计,我真的不知道总数),接近达到 65536 个限制方法。
相反,您应该只针对您将使用的库而不是整个库包
在这种情况下
implementation 'com.google.android.gms:play-services-location:11.8.0'
Run Code Online (Sandbox Code Playgroud)
可能只有 50 - 100 个方法可以使用,这在构建时比从整个库包中加载一大堆你永远不会使用的方法要好。
这只是避免获得的提示
无法在单个 dex 文件中容纳请求的类。
Android 5.0 及更高版本使用称为 ART 的运行时,该运行时本机支持从应用程序 APK 文件加载多个 dex 文件。ART 在应用程序安装时执行预编译,扫描类 (..N).dex 文件并将它们编译成单个 .oat 文件以供 Android 设备执行。有关 Android 5.0 运行时的更多信息,请参阅 ART 简介。
Android 5.0 之前的平台版本使用 Dalvik 运行时来执行应用程序代码。默认情况下,Dalvik 将应用程序限制为每个 APK 的单个 classes.dex 字节码文件。为了解决这个限制,您可以使用 multidex 支持库,它成为您应用的主要 DEX 文件的一部分,然后管理对其他 DEX 文件及其包含的代码的访问。
在最后一种情况下,您将需要使用 multidex
小智 8
在 build.gradle(app) 文件中:在依赖项中添加以下内容:
implementation 'com.android.support:multidex:1.0.3'
Run Code Online (Sandbox Code Playgroud)
并在 defaultConfig 中添加以下内容,
multiDexEnabled true
Run Code Online (Sandbox Code Playgroud)
希望你能找到解决办法。
在应用级 Build.Gradle 的默认配置中添加 multiDexEnabled 就足够了
multiDexEnabled true
请参阅图像以供参考