Execution failed for task ':app:mergeDexDebug'. Firestore | Flutter

FlutterDartGoogle Cloud-Firestore

Flutter Problem Overview


Trying to use Firestore in my project. My project is a brand new one, but having problems running the app on my device without getting an error: Execution failed for task ':app:mergeDexDebug'.

My app is using AndroidX. I've added my google-services.json file, followed the steps etc.

Yaml file:

dependencies:
  cloud_firestore: ^0.13.3

android/build.gradle:

com.google.gms:google-services:4.3.3

Full error:

>FAILURE: Build failed with an exception.

> What went wrong: Execution failed for task ':app:mergeDexDebug'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

Flutter Solutions


Solution 1 - Flutter

The problem is with multidex builder. Actually, this often happens when you have imported a lot of packages in your yaml file which cannot fit into a single .dex built hence you have to enable multidex.

Go to android/app/build.gradle and add the following lines of codes:

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

Solution 2 - Flutter

Fixed the issue, but don't understand why. Why do I need to enable multiDex when I believe Firestore is using AndroidX?

Anyway, the fix. Add multiDexEnabled true to your 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
}

Solution 3 - Flutter

I just met with this error, and it turns out it can be fixed easily. Of course, other answers on this are really great and it tells you how to fix it. However, I was wondering why this even happened. It turns out this comes from the minSdkVersion used. If this is set to 20 or lower, you need to configure your app for multiDex support.

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

So, if you app is not intended to be used in Android version prior to 5.0, setting the minSdkVersion number to 21 will easily fix this issue. If not, follow the workaround to enable mutiDex support.

Read more from the official document: https://developer.android.com/studio/build/multidex#mdex-gradle

Solution 4 - Flutter

You can follow the guidelines mentioned here

https://developer.android.com/studio/build/multidex

or to cut the story short and directly go to answer

Find android/app/build.gradle file and add the following lines of codes:

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

Solution 5 - Flutter

When your app and the libraries it references exceed 65,536 methods, you encounter a build error that indicates your app has reached the limit of the Android build architecture: https://developer.android.com/studio/build/multidex

add multiDexEnabled true in app/build.gradle defaultConfig at last.

defaultConfig{ ... multiDexEnabled true }

Solution 6 - Flutter

If you are using AndroidX,

Add below lines to app/build.gradle

multiDexEnabled true // to the defaultConfig {}

implementation 'androidx.multidex:multidex:2.0.1' // to the dependencies

To the AndroidManifest.xml (Optional)

<application
    android:name="androidx.multidex.MultiDexApplication"

Please note that you have to extends MainActivity to the MultiDexApplication. If you change android:name.

Solution 7 - Flutter

in app/build.gradle make sure your minSdkVersion should be greater or equal to 21

defaultConfig {

    minSdkVersion 21

    targetSdkVersion 30

    versionCode flutterVersionCode.toInteger()

    versionName flutterVersionName

}

Solution 8 - Flutter

In 2022 : Execution failed for task ':app:mergeExtDexDebug'. Solved it by Changing:

android {
    compileSdkVersion 29

    compileOptions {
        sourceCompatibility kotlin_version
        targetCompatibility kotlin_version
    }

To

android {
    compileSdkVersion 29

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }

And Also Added:

multiDexEnabled true 

to

defaultConfig {

}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJonathonView Question on Stackoverflow
Solution 1 - FlutterlordvidexView Answer on Stackoverflow
Solution 2 - FlutterJonathonView Answer on Stackoverflow
Solution 3 - FlutterVivekView Answer on Stackoverflow
Solution 4 - FlutterVicky SalunkheView Answer on Stackoverflow
Solution 5 - FlutterMohd Danish KhanView Answer on Stackoverflow
Solution 6 - FlutterBlasankaView Answer on Stackoverflow
Solution 7 - FlutterKapil RabadeView Answer on Stackoverflow
Solution 8 - FlutterTrophy DevelopersView Answer on Stackoverflow