Reputation: 1601
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
Upvotes: 95
Views: 164846
Reputation: 1
just by adding multiDexEnabled true under "android/app/build.gradle" i have fixed this issue. after adding this do flutter pub get for flutter project or run gradle build for android native project
example:
android {
defaultConfig {
multiDexEnabled true
}
}
Upvotes: 0
Reputation: 21
This error happens when test Device was changed! Clear Build folder from project and rebuild.
//it's depends on your version
//npm run clean
ns clean
//rebuild
//tns platform remove android
tns platform add android
tns build android
tns run android
Upvotes: 0
Reputation: 2636
If you're coming from React Native and using react-native-firebase, try :
buildscript {
ext {
buildToolsVersion = "33.0.0"
minSdkVersion = 24 }
minSdkVersion 21 wouldn't work, replace it with 24.
Remove dex enabled configurations if you added any.
Source : https://github.com/invertase/react-native-firebase/discussions/7489
Upvotes: 2
Reputation: 419
at android/build.gradle test different versions of minSdkVersion. Mine worked with minSdkVersion = 22.
Upvotes: 1
Reputation: 4098
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 code:
dependencies {
implementation 'com.android.support:multidex:2.0.1' //enter the latest multidex version
}
android {
defaultConfig {
multiDexEnabled true
}
}
Upvotes: 268
Reputation: 315
android {
compileSdkVersion 29
compileOptions {
sourceCompatibility kotlin_version
targetCompatibility kotlin_version
}
android {
compileSdkVersion 29
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
And Also Added:
multiDexEnabled true
to
defaultConfig {
}
Upvotes: 2
Reputation: 1
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
}
Upvotes: 0
Reputation: 494
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
Upvotes: 25
Reputation: 22437
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
.
Upvotes: 1
Reputation: 11005
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
}
}
Upvotes: 9
Reputation: 1101
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 }
Upvotes: 2
Reputation: 1601
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
}
Upvotes: 27