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

时间:2015-07-04 19:11:03

标签: android google-play-services

运行我的应用时出现错误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'
}

我该如何解决这个问题?我想错误的发生是因为我在模块和应用程序中都使用谷歌播放服务。但版本不同。是造成问题吗?

14 个答案:

答案 0 :(得分:29)

我有类似的问题,你的问题帮助我解决了我的问题,可能会帮助你解决问题。问题是你已定义:

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以来,如果您使用播放服务中的单个模块,则无法同时将整个播放服务用作依赖项。解决方案是仅选择您需要的服务而不是整个包,例如:

而不是

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配置中使用相同版本的Google服务可能是个好主意。

答案 1 :(得分: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
....
}

答案 2 :(得分: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

答案 3 :(得分:4)

手动将Firebase添加到我的应用后,我遇到了同样的问题 对我来说,解决方案正在改变:

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

为:

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

在根级 build.gradle 文件中。

答案 4 :(得分:4)

如果使用react-native-device-info进行此操作,则只能更改:

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

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

如下所述: https://github.com/rebeccahughes/react-native-device-info/blob/81b0c20fab8a10ccf0341dbd6710d7a5915b06a6/README.md#troubleshooting

答案 5 :(得分:3)

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

在app 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依赖性。当我匹配版本时,它有效。

答案 6 :(得分:2)

我最近遇到过这个问题,原因是版本差异:

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

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

所以请确保您拥有相同的版本。

答案 7 :(得分:1)

我遇到了同样的问题,但我的火灾是由最新版本2.0.0引起的。所以我降级到1.2.0并将以下行添加到Project level build.gradle文件中:

allprojects {
    repositories {
        jcenter()

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

答案 8 :(得分:1)

我的项目是一个cordova ionic1项目,我花了一整夜和早上来解决这个问题,这就是我所做的,因为我有firebase依赖和google服务: 转到此文件: 平台\机器人\科尔多瓦-插件-火力\科尔多瓦-插件-火力\ 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'
}

然后转到此文件: 平台\机器人\ 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.+

然后我评论了google服务,因为我们需要特定的依赖项,我还将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

答案 9 :(得分:0)

我遇到了这个问题,没有一个解决方案有效。对我有用的是添加这个插件

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

然后在/ platforms / android / cordova-plugin-fcm /和/ platforms / android / cordova-plugin-open / replace

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

使用:

ext.postBuildExtras = {
  apply plugin: com.google.gms.googleservices.GoogleServicesPlugin
}

答案 10 :(得分:0)

如果有人遇到与我相同的问题,我删除了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'
}

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

答案 11 :(得分:0)

如果其他人在Ionic删除并重新添加该平台时遇到此问题,那么:

> ionic cordova rm platform android
> ionic cordova add platform android

答案 12 :(得分:0)

对于想知道如何为 Apache Cordova插件修复此问题的任何人,我通过确保所有plugin.xml文件都包含主要和次要版本,但最新版本是<< / strong>,就像这样:

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

在使用上面的15.0.0时,由于某些原因引发了com.android.dex.DexException错误。通过使用+作为修订号(意味着最新),一切都可以在cordova 7.1.0和cordova-android 6.3.0上完美地工作。

在通过插件编辑plugin.xml后,请记住删除并重新添加android平台,否则您的更改将根本不会应用!

还:确保只有一个gradle文件正在应用此文件,以防万一:

dependencies {
    classpath 'com.android.tools.build:gradle:+'
    classpath 'com.google.gms:google-services:3.0.0'
}

答案 13 :(得分:0)

我也遇到了这个问题,我尝试了多种方法来解决此问题。对我有用的是从gradle中删除以下行。

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

起初,我同时拥有firebase-corefirebase-ml-vision(我只需要firebase-ml-vision),如下所示。

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

删除行后,我得到以下警告

  

警告:应用gradle文件必须依赖于   com.google.firebase:firebase-core,以便Firebase服务可以像   

但是,根据官方文档,核心依赖项可能不存在(https://firebase.google.com/docs/ml-kit/android/detect-faces),因此可以忽略。