任务“:app:mergeDexDebug”执行失败。火店| 扑

Jon*_*hon 54 dart flutter google-cloud-firestore

尝试在我的项目中使用 Firestore。我的项目是一个全新的项目,但在我的设备上运行应用程序时出现问题,但没有出现错误: 任务“:app:mergeDexDebug”的执行失败。

我的应用正在使用 AndroidX。我已经添加了我的 google-services.json 文件,按照步骤等操作。

yaml文件:

dependencies:
  cloud_firestore: ^0.13.3
Run Code Online (Sandbox Code Playgroud)

android/build.gradle:

com.google.gms:google-services:4.3.3
Run Code Online (Sandbox Code Playgroud)

完整错误:

FAILURE:构建失败,出现异常。

出了什么问题:任务 ':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了解如何解决此问题

lor*_*dex 166

问题在于多索引构建器。实际上,当您在 yaml 文件中导入了大量无法放入单个 .dex 构建的包时,通常会发生这种情况,因此您必须启用 multidex。

转到 android/app/build.gradle 并添加以下代码行:

dependencies {
  implementation 'com.android.support:multidex:1.0.3' //enter the latest version
}
android {
    defaultConfig {
        multiDexEnabled true
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 天啊谢谢你!!我添加的只是“multiDexEnabled true”,但不是依赖项,这解决了我的问题。 (5认同)
  • 您可以在这里找到最新的 multiDex 版本:https://developer.android.com/jetpack/androidx/versions#multidex (4认同)
  • 经过这么多次尝试,这对我有用,谢谢@lordvidex (4认同)

Jon*_*hon 16

修复了问题,但不明白为什么。当我认为 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
}
Run Code Online (Sandbox Code Playgroud)


Viv*_*vek 12

我刚刚遇到了这个错误,事实证明它可以轻松修复。当然,关于这个的其他答案真的很棒,它告诉你如何解决它。但是,我想知道为什么会发生这种情况。事实证明,这来自于minSdkVersion使用过的。如果设置为20或更低,您需要配置您的应用程序以支持 multiDex。

   defaultConfig {
        applicationId "com.inspire.aaym"
        minSdkVersion 21
        targetSdkVersion 30
    }
Run Code Online (Sandbox Code Playgroud)

因此,如果您的应用不打算在 5.0 之前的 Android 版本中使用,则将minSdkVersion数字设置为21可以轻松解决此问题。如果没有,请按照解决方法启用 mutiDex 支持。

从官方文档中阅读更多内容:https : //developer.android.com/studio/build/multidex#mdex-gradle


Vic*_*khe 8

您可以遵循此处提到的准则

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
    }
}
Run Code Online (Sandbox Code Playgroud)