我不知道为什么,但是今天早上无法在手机上启动我的应用程序。我收到此错误消息:
无法在单个dex文件中容纳请求的类。尝试提供一个 main-dex列表。
#方法:68061> 65536消息{种类=错误,文本=不能在单个dex文件中容纳所请求的类。尝试提供main-dex列表。
#方法:68061> 65536,sources = [未知源文件],工具
我真的是Android的新手,我不明白问题所在,该怎么办?为什么我现在而不是以前遇到这个问题?
答案 0 :(得分:21)
运行RN 0.62,这对我成功建立了工作。
classpath('com.android.support:multidex:1.0.3')
更新defaultConfig
multiDexEnabled true
在这2个更改之后,重新启动gradle构建。
答案 1 :(得分:16)
在build.gradle
文件中添加依赖项:
implementation 'com.android.support:multidex:1.0.3'
在build.gradle
的{{1}}部分中添加:
defaultConfig
答案 2 :(得分:3)
在build.gradle(app)文件中: 在依赖项中添加以下内容:
public override func dragStateDidChange(_ dragState: UICollectionViewCell.DragState) {
switch dragState {
case .none:
self.layer.opacity = 1
case .lifting:
self.layer.opacity = 0
case .dragging:
self.layer.opacity = 1
}
}
并在defaultConfig中添加以下内容,
implementation 'com.android.support:multidex:1.0.3'
希望您会找到解决方案。
答案 3 :(得分:2)
在应用级 Build.Gradle 的默认配置中添加 multiDexEnabled 就足够了
multiDexEnabled 为真
查看图片以供参考
答案 4 :(得分:1)
当您的应用及其引用的库超过65,536个方法时,您会遇到一个构建错误,表明您的应用已达到Android构建体系结构的限制more information here
只需将多dex支持库添加到buid.gradle (Module: app)
文件中的依赖项中即可
dependencies {
def multidex_version = "2.0.1"
implementation 'androidx.multidex:multidex:$multidex_version'
}
答案 5 :(得分:0)
multidex并不总是解决问题的方法,它确实会生成更多的dex文件来满足您的方法数量,但请确保不要导入更多所需的方法,因为从长远来看,这将使您的构建速度比以前。
例如,如果您只需要使用Play服务中的位置库,则有两种选择
第一个是实现随位置附带的整个播放服务库
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文件。艺术 在应用程序安装时执行预编译,该程序会扫描 classes(.. N).dex文件并将其编译为单个.oat文件,以用于 由Android设备执行。有关Android的更多信息 5.0运行时,请参见ART简介。
Android 5.0之前版本的平台使用Dalvik运行时 用于执行应用程序代码。默认情况下,Dalvik将应用程序限制为单个 每个APK的classes.dex字节码文件。为了解决这个问题 局限性,您可以使用multidex支持库, 应用的主要DEX文件的一部分,然后管理对 其他DEX文件及其包含的代码。
在这种情况下,您将需要使用multidex
答案 6 :(得分:-1)
当您同时使用deprecated npm
和correct npm
出于同一目的时,就会出现此错误