40

I get the error com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzau; when i run my app The gradle files are

app.gradle

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.android.support:cardview-v7:21.0.0'
compile 'com.google.android.gms:play-services:7.0.+'
compile 'com.android.support:mediarouter-v7:21.0.3'
compile 'com.squareup:otto:1.3.5'
compile 'com.squareup.picasso:picasso:2.3.4'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.github.ksoichiro:android-observablescrollview:1.4.0'
compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
compile 'com.facebook.android:facebook-android-sdk:4.1.0'
compile 'com.parse.bolts:bolts-android:1.+'
compile 'com.edmodo:rangebar:1.0.0'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile project(':library_viewpager')
compile project(':androidHorizontalListView')
compile project(':CastCompanionLibrary')
compile project(':mobihelp_sdk_android_v1.4')
compile fileTree(include: 'Parse-*.jar', dir: 'libs')
compile files('libs/Parse-1.9.2.jar')
compile files('libs/GoogleConversionTrackingSdk-2.2.2.jar')
}

CastCompanionLibrary

dependencies {
compile 'com.android.support:appcompat-v7:22.+'
compile 'com.android.support:mediarouter-v7:22.+'
compile 'com.google.android.gms:play-services-cast:7.5.0'
}

How do i fix this? i guess the error occurs because i use google play services in both the module and the app. but the versions are different. is that causing an issue?

Tchinmai
  • 620
  • 1
  • 6
  • 20
  • I have such a problem. How could I solve it? https://stackoverflow.com/questions/48630943/when-i-want-to-create-apk-in-the-android-studio-i-get-this-error – Isa C. Feb 05 '18 at 20:33

14 Answers14

30

I had similar problem and your question helped me solve mine and probably will help you solve yours. Problem is that you have defined:

dependencies {
...
  compile 'com.google.android.gms:play-services-cast:7.5.0'
}

and

dependencies {
...
  compile 'com.google.android.gms:play-services:7.0.+'
...
}

Since google services 7.5.0, if you're using single modules from play services you can't use whole play services as dependency simultaneously. Solution is to select only those services that you need instead of whole package e.g.:

instead of

dependencies {
...
  compile 'com.google.android.gms:play-services:7.0.+'
...
}

use

dependencies {
...
  compile 'com.google.android.gms:play-services-maps:7.0.+'
  compile 'com.google.android.gms:play-services-location:7.0.+'
  compile 'com.google.android.gms:play-services-gcm:7.0.+'
...
}

Also I'm not sure but probably it would be good idea to use the same version of google services in both gradle configs.

Krystian P.
  • 436
  • 4
  • 4
16

I had a similar problem after building using phonegap/cordova: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzsk;

I fixed it by editing build.gradle(module Android), as I had 2 libraries that should have the exact same version with different version numbers (8.4.0 and 9.2.1 in my case)

dependencies{
....
//make sure are both same version (8.4.0 or 9.2.1 in my case)
compile 'com.google.android.gms:play-services-gcm:9.2.1'
// this is the one I changed:  compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-location:9.2.1' // it was 8.4.0
....
}
rafahoro
  • 1,237
  • 13
  • 19
5

Firebase Android SDKs now have independent version numbers, allowing for more frequent, flexible updates.

Update all your Firebase dependencies to the latest version (as of 2 May 2018):

 Firebase Core          com.google.firebase:firebase-core:15.0.2
    Ads                 com.google.firebase:firebase-ads:15.0.0
  Analytics             com.google.firebase:firebase-analytics:15.0.2
 App Indexing           com.google.firebase:firebase-appindexing:15.0.0
 Authentication         com.google.firebase:firebase-auth:15.1.0
Cloud Firestore         com.google.firebase:firebase-firestore:16.0.0
Cloud Functions         com.google.firebase:firebase-functions:15.0.0
Cloud Messaging         com.google.firebase:firebase-messaging:15.0.2
Cloud Storage           com.google.firebase:firebase-storage:15.0.2
Crash Reporting         com.google.firebase:firebase-crash:15.0.2
Crashlytics             com.crashlytics.sdk.android:crashlytics:2.9.1
Invites                 com.google.firebase:firebase-invites:15.0.2
Performance Monitoring  com.google.firebase:firebase-perf:15.1.0
Realtime Database       com.google.firebase:firebase-database:15.0.0
Remote Config           com.google.firebase:firebase-config:15.0.2

Release note: https://firebase.google.com/support/release-notes/android

Gurjap singh
  • 853
  • 8
  • 8
  • Correct me if wrong, but using the latest version in gradle wouldn't require the user to have installed the very latest **Google Play Services** version on the device as well? – andreszs Jul 02 '18 at 01:54
  • you may be right. but the version of other dependencies of Google Play Services shouldn't be greater. – Gurjap singh Jul 04 '18 at 18:32
4

I encountered the same issue after manually adding Firebase to my app.
For me the solution was changing:

classpath 'com.google.gms:google-services:3.2.0'

to:

classpath 'com.google.gms:google-services:3.0.0'

in the root-level build.gradle file.

Roses
  • 350
  • 5
  • 13
4

If this is happening with react-native-device-info, you can only change from:

compile(project(':react-native-device-info'))

to

compile(project(':react-native-device-info')) {
  exclude group: 'com.google.android.gms'
}

As described here: https://github.com/rebeccahughes/react-native-device-info/blob/81b0c20fab8a10ccf0341dbd6710d7a5915b06a6/README.md#troubleshooting

Estevão Lucas
  • 4,440
  • 34
  • 37
3

Had the same issue while integrating firebase. For my case, it was caused by version mismatch.

on the app gradle, i had:

ext {
    PLAY_SERVICES_VERSION = '10.2.0'
}
dependencies {
    compile "com.google.android.gms:play-services-maps:$PLAY_SERVICES_VERSION"
    compile "com.google.android.gms:play-services-location:$PLAY_SERVICES_VERSION"
    compile "com.google.android.gms:play-services-places:$PLAY_SERVICES_VERSION"
    compile 'com.google.firebase:firebase-database:10.0.1'
}

the firebase dependancy was added through the integrated firebase plugin in Android studio. When i matched the versions, it worked.

Irshu
  • 8,248
  • 8
  • 53
  • 65
2

I had this issue recently, the reason was the version difference:

'com.google.firebase:firebase-ads:9.0.6'

'com.google.firebase:firebase-crash:11.0.2'

so make sure you have the same version.

Ege Kuzubasioglu
  • 5,991
  • 12
  • 49
  • 85
1

I had the same problem but mine was cause by firebase-ui newest version 2.0.0. So I downgraded to 1.2.0 and added the following line to Project level build.gradle file:

allprojects {
    repositories {
        jcenter()

        // Add the following code
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
}
Darush
  • 11,403
  • 9
  • 62
  • 60
1

My project is a cordova ionic1 project, I spent a full night and morning to solve this issue, this is what I did beacuse i was having firebase dependencies and google services: Go to this file : platforms\android\cordova-plugin-firebase\cordova-plugin-firebase\app-build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        // classpath 'com.google.gms:google-services:3.0.0'
        // i changed the above line from 3.0.0 to 3.1.1
        classpath 'com.google.gms:google-services:3.1.1'
    }
}
repositories {
    mavenCentral()
}
dependencies {
    compile 'me.leolin:ShortcutBadger:1.1.4@aar'
    //compile 'com.google.firebase:firebase-crash:+'
    // i changed the above line from + to 11.0.2
    compile 'com.google.firebase:firebase-crash:11.0.2'
}

Then Go to this file: platforms\android\project.properties Originally i was having this

target=android-26
android.library.reference.1=CordovaLib
cordova.gradle.include.1=cordova-plugin-firebase/app-build.gradle
cordova.system.library.1=com.google.gms:google-services:+
cordova.system.library.2=com.google.firebase:firebase-core:+
cordova.system.library.3=com.google.firebase:firebase-messaging:+
cordova.system.library.4=com.google.firebase:firebase-crash:+
cordova.system.library.5=com.google.firebase:firebase-config:+
cordova.system.library.6=com.android.support:support-v4:24.1.1+
cordova.system.library.7=com.google.android.gms:play-services-auth:11.+
cordova.system.library.8=com.google.android.gms:play-services-identity:11.+

Then i commented out the google services as we need specific dependencies and I also put the versions for firebase and gms to the same version number of 11.0.2 so after my file looks like this

target=android-26
android.library.reference.1=CordovaLib
cordova.gradle.include.1=cordova-plugin-firebase/app-build.gradle
# cordova.system.library.1=com.google.gms:google-services:+
cordova.system.library.2=com.google.firebase:firebase-core:11.0.2
cordova.system.library.3=com.google.firebase:firebase-messaging:11.0.2
cordova.system.library.4=com.google.firebase:firebase-crash:11.0.2
cordova.system.library.5=com.google.firebase:firebase-config:11.0.2
cordova.system.library.6=com.android.support:support-v4:24.1.1+
cordova.system.library.7=com.google.android.gms:play-services-auth:11.0.2
cordova.system.library.8=com.google.android.gms:play-services-identity:11.0.2
Nyola Mike
  • 11
  • 1
1

If anyone had the same issues as mine, I removed the firebase-core dependency and it worked like a charm.

dependencies{
    implementation 'com.google.firebase:firebase-core:15.0.0'
    implementation 'com.google.android.gms:play-services-ads:15.0.0'
    implementation 'com.google.firebase:firebase-crash:15.0.0'
    implementation 'com.google.firebase:firebase-messaging:15.0.0'
}

to

dependencies{
    implementation 'com.google.android.gms:play-services-ads:15.0.0'
    implementation 'com.google.firebase:firebase-crash:15.0.0'
    implementation 'com.google.firebase:firebase-messaging:15.0.0'
}
Irshad P I
  • 2,394
  • 2
  • 14
  • 23
0

I was having this issue and none of the solutions worked. What worked for me was adding this plugin

 cordova plugin add cordova-android-play-services-gradle-release --save

and then in both /platforms/android/cordova-plugin-fcm/ and /platforms/android/cordova-plugin-open/ replace

apply plugin: com.google.gms.googleservices.GoogleServicesPlugin

with:

ext.postBuildExtras = {
  apply plugin: com.google.gms.googleservices.GoogleServicesPlugin
}
marshy101
  • 594
  • 7
  • 19
0

If anyone else comes across this issue in Ionic removing and re-adding the platform worked for me:

> ionic cordova rm platform android
> ionic cordova add platform android
ajcurtis
  • 63
  • 6
0

For anyone wondering how to fix this for Apache Cordova plugins, I fixed this problem by ensuring all plugin.xml files include the same major and minor version, but latest revision, like this:

<framework src="com.google.firebase:firebase-auth:15.0.+" />
<framework src="com.google.firebase:firebase-messaging:15.0.+" />

When using 15.0.0 above, the com.android.dex.DexException error was raised for some reason. By using + for the revision number (which means, latest), everything worked perfectly with cordova 7.1.0 and cordova-android 6.3.0.

Remember to remove and re-add the android platform after editing plugin.xml from plugins, otherwise your changes won't be applied at all!

Also: Ensure only ONE gradle file is applying this, just in case:

dependencies {
    classpath 'com.android.tools.build:gradle:+'
    classpath 'com.google.gms:google-services:3.0.0'
}
andreszs
  • 2,896
  • 3
  • 26
  • 34
0

I was also having this issue, I tried many ways to solve this issue. What worked for me was removing following line from my gradle.

compile 'com.google.firebase:firebase-core:16.0.3'

At first I have both firebase-core and firebase-ml-vision (what I need was only firebase-ml-vision) like following.

compile 'com.google.firebase:firebase-ml-vision:17.0.0'
compile 'com.google.firebase:firebase-core:16.0.3'

After I remove the line I got following warning,

Warning: The app gradle file must have a dependency on com.google.firebase:firebase-core for Firebase services to work as intended.

But, according to official docs the core dependency can be absent (https://firebase.google.com/docs/ml-kit/android/detect-faces), so it can be ignored.

Rurouni
  • 963
  • 10
  • 31