【问题标题】:Execution failed for task ':app:mergeDexDebug'. Firestore | Flutter任务 ':app:mergeDexDebug' 执行失败。火库 |扑
【发布时间】:2020-06-04 05:51:00
【问题描述】:

尝试在我的项目中使用 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

完全错误:

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了解如何解决此问题

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

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

    进入android/app/build.gradle并添加以下代码行:

    dependencies {
      implementation 'com.android.support:multidex:2.0.1' //enter the latest multidex version
    }
    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    

    【讨论】:

    • 这可能会有所帮助.. stackoverflow.com/questions/49886597/…
    • 事实上,添加 multiDexEnabled true 解决了这个问题。不过不明白为什么,因为我认为firestore正在使用AndroidX。谢谢
    • 您可以在这里找到最新的 multiDex 版本:developer.android.com/jetpack/androidx/versions#multidex
    • 天哪,谢谢!!我添加的只是multiDexEnabled true,但不是依赖项,这解决了我的问题。
    • 经过多次尝试,这对我有用,谢谢@lordvidex
    【解决方案2】:

    解决了这个问题,但不明白为什么。当我认为 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
    }
    

    【讨论】:

      【解决方案3】:

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

         defaultConfig {
              applicationId "com.inspire.aaym"
              minSdkVersion 21
              targetSdkVersion 30
          }
      

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

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

      【讨论】:

        【解决方案4】:

        您可以遵循此处提到的指南

        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
            }
        }
        

        【讨论】:

          【解决方案5】:

          当您的应用及其引用的库超过 65,536 个方法时,您会遇到构建错误,表明您的应用已达到 Android 构建架构的限制: https://developer.android.com/studio/build/multidex

          最后在 app/build.gradle defaultConfig 中添加 multiDexEnabled true。

          defaultConfig{ ... multiDexEnabled true }

          【讨论】:

            【解决方案6】:

            如果您使用的是 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

            【讨论】:

              【解决方案7】:

              在 app/build.gradle 中确保您的 minSdkVersion 应大于或等于 21

              默认配置 {

                  minSdkVersion 21
              
                  targetSdkVersion 30
              
                  versionCode flutterVersionCode.toInteger()
              
                  versionName flutterVersionName
              
              }
              

              【讨论】:

                猜你喜欢
                • 2021-07-13
                • 2020-06-13
                • 2020-10-14
                • 2022-01-23
                • 1970-01-01
                • 1970-01-01
                • 2020-03-07
                • 2023-03-15
                • 1970-01-01
                相关资源
                最近更新 更多