尝试在我的项目中使用Firestore。我的项目是一个全新的项目,但是在我的设备上运行该应用程序时出现错误,但没有出现错误: 任务':app:mergeDexDebug'的执行失败。
我的应用正在使用AndroidX。我已经添加了google-services.json文件,并遵循了步骤等。
Yaml文件:
dependencies:
cloud_firestore: ^0.13.3
android / build.gradle:
com.google.gms:google-services:4.3.3
完整错误:
失败:构建失败,并出现异常。
出了什么问题: 任务':app:mergeDexDebug'的执行失败。 执行com.android.build.gradle.internal.tasks.Workers $ ActionFacade时发生故障 com.android.builder.dexing.DexArchiveMergerException:合并dex归档文件时出错: .dex文件中方法引用的数量不能超过64K。 在https://developer.android.com/tools/building/multidex.html
了解如何解决此问题
答案 0 :(得分:65)
问题出在multidex生成器上。实际上,当您在yaml文件中导入了很多无法装入单个.dex的包时,通常会发生这种情况,因此必须启用multidex。
转到android / app / build.gradle并添加以下代码行:
dependencies {
compile 'com.android.support:multidex:1.0.1' //enter the latest version
}
android {
defaultConfig {
multiDexEnabled true
}
}
答案 1 :(得分:7)
解决了问题,但不明白为什么。当我相信Firestore使用AndroidX时,为什么需要启用multiDex?
无论如何,解决方法。将 multiDexEnabled true 添加到您的 app / build.gradle
defaultConfig {
// TODO: Specify your own unique Application ID
(https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.poll"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
//This line here...
multiDexEnabled true
}
答案 2 :(得分:5)
您可以按照此处提到的指南
https://developer.android.com/studio/build/multidex
或者简而言之,直接回答
找到android/app/build.gradle
文件并添加以下代码行:
dependencies {
compile 'com.android.support:multidex:1.0.3'
//find latest version from here https://developer.android.com/studio/build/multidex
}
android {
defaultConfig {
multiDexEnabled true
}
}
答案 3 :(得分:0)
当您的应用程序及其引用的库超过65,536个方法时,您会遇到一个构建错误,表明您的应用程序已达到Android构建体系结构的限制: https://developer.android.com/studio/build/multidex
最后在app / build.gradle defaultConfig中添加multiDexEnabled true。
defaultConfig{ ... multiDexEnabled true }
答案 4 :(得分:0)
如果您使用的是AndroidX,
将以下几行添加到 app / build.gradle
multiDexEnabled true // to the defaultConfig {}
implementation 'androidx.multidex:multidex:2.0.1' // to the dependencies
到AndroidManifest.xml(可选)
<application
android:name="androidx.multidex.MultiDexApplication"
请注意,您必须将MainActivity
扩展到MultiDexApplication
。如果您更改android:name
。
答案 5 :(得分:0)
我刚刚遇到此错误,事实证明可以轻松修复。当然,关于此的其他答案确实很棒,它告诉您如何解决。但是,我想知道为什么会这样。事实证明,这来自所使用的 /v1/12345678912345/my_files/mypicture01.jpg
。如果将其设置为 minSdkVersion
或更低,则需要配置您的应用以支持multiDex。
20
因此,如果您不打算在5.0之前的Android版本中使用您的应用,则将 defaultConfig {
applicationId "com.inspire.aaym"
minSdkVersion 21
targetSdkVersion 30
}
数字设置为minSdkVersion
可以轻松解决此问题。如果没有,请按照变通办法启用mutiDex支持。
从官方文档中了解更多信息: convolution
答案 6 :(得分:0)
在 app/build.gradle 中确保你的 minSdkVersion 应该大于或等于 21
defaultConfig {
minSdkVersion 21
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}