多个dex文件定义了Lcom/google/android/gms/internal/zzau

40

当我运行我的应用程序时,我收到错误消息com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzau;。Gradle文件如下:

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

我该如何解决这个问题?我猜测错误是因为我在模块和应用程序中都使用了谷歌播放服务,但版本不同。这会引起问题吗?


我有这样一个问题。我该怎么解决它?https://stackoverflow.com/questions/48630943/when-i-want-to-create-apk-in-the-android-studio-i-get-this-error - Isa C.
14个回答

30
我遇到了类似的问题,你的问题帮助我解决了我的问题,也可能会帮助你解决。问题是你定义了:
dependencies {
...
  compile 'com.google.android.gms:play-services-cast:7.5.0'
}

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

自 Google 服务版本7.5.0开始,如果您正在使用Play服务的单个模块,则不能同时将整个Play服务作为依赖项使用。解决方案是仅选择您需要的那些服务,而不是整个软件包,例如:

而不是

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

使用

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.+'
...
}

我不确定,但可能在两个Gradle配置中使用相同版本的谷歌服务是一个好主意。


5
问题可能出现在不同版本的"com.google.android.gms"和"com.google.firebase"中。 - Юрій Мазуревич
我有类似的问题,我正在更改“platforms/android/build.gradle”文件中的依赖项,但在通过“sudo ionic cordova build android”构建后,我的更改被还原了。如何解决这个问题? - Abhitesh khatri

16

我在使用phonegap / cordova构建后遇到了类似的问题:

com.android.dex.DexException:多个dex文件定义了Lcom / google / android / gms / internal / zzsk;

通过编辑build.gradle(Android模块)来解决此问题,因为我有2个库应该具有相同版本但具有不同版本号(在我的情况下为8.4.0和9.2.1)

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

我使用了9.2.1和9.4.0。 - Paresh Dudhat

5
Firebase Android SDK现在拥有独立的版本号,可以更频繁、灵活地更新。请将所有Firebase依赖项更新到最新版本(截止2018年5月2日)。
 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

更新说明:https://firebase.google.com/support/release-notes/android


请纠正我,但是在gradle中使用最新版本不需要用户在设备上安装最新的Google Play服务版本,对吗? - andreszs
你可能是对的。但是 Google Play 服务的其他依赖版本不应该更高。 - Gurjap singh

4
我遇到了手动添加Firebase到我的应用后同样的问题。
对我来说,解决方案是更改:
classpath 'com.google.gms:google-services:3.2.0'

to:

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

在根级别的build.gradle文件中。


4
如果这是与react-native-device-info发生了,您只能从以下位置进行更改:
compile(project(':react-native-device-info'))

to

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

根据这里的描述


3

在集成Firebase时遇到了同样的问题。对于我的情况,这是由版本不匹配引起的。

在应用程序gradle文件中,我有:

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

通过Android Studio集成的Firebase插件添加了firebase依赖项。当我匹配版本时,它可以正常工作。


2

我最近遇到了这个问题,原因是版本不同:

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

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

所以请确保您使用的是相同版本。


1
如果有人遇到和我一样的问题,我删除了 firebase-core 依赖项,问题得到了解决。
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'
}

1

我的项目是一个 Cordova Ionic1 项目,我花了一个晚上和早上的时间来解决这个问题,因为我有 Firebase 依赖和 Google 服务: 打开以下文件: 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'
}

然后打开这个文件: platforms\android\project.properties 最初我遇到了这个问题

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.+

然后我注释掉了谷歌服务,因为我们需要特定的依赖项,我还将Firebase和GMS的版本号设置为11.0.2,所以我的文件看起来像这样

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

我在我的ionic cordova项目中遇到了相同的问题 - 这是我如何解决它的方法。 - Kinglish

1
我曾经遇到过同样的问题,但是我的问题是由于firebase-ui最新版本2.0.0引起的。因此,我将其降级为1.2.0,并在项目级build.gradle文件中添加了以下行:
allprojects {
    repositories {
        jcenter()

        // Add the following code
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接