多个dex文件定义了Lcom/google/android/gms/ads/identifier/AdvertisingIdClient$Info;。

3
我在尝试在Android Studio编译我的项目时遇到了这个错误。
app:transformClassesWithDexForDebug FAILED
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/ads/identifier/AdvertisingIdClient$Info;
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.

    `com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-openjdk-i386/bin/java'' finished with non-zero exit value 2`

以下是我的build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        applicationId "paritosh.d9.groceries"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.android.support:design:23.1.1'
    compile 'com.facebook.android:facebook-android-sdk:4.11.0'
    compile 'com.facebook.android:audience-network-sdk:4.7.0'
    compile 'com.google.android.gms:play-services-location:8.4.0'
    compile 'com.google.android.gms:play-services-auth:8.4.0'
}

我已经花了好几个小时来解决这个问题。我尝试过删除我的Play服务依赖项,但这并没有解决问题。请帮助我解决这个问题。谢谢。


1
https://dev59.com/2l8d5IYBdhLWcg3woDUZ - Ankush Bist
1个回答

3

您的依赖项存在重复 - 两个类是相同的。您应该了解哪个库包含您应该排除的内容。为此,您需要在控制台中运行下一行命令:

./gradlew app:androidDependencies

此外,在Android Studio中,您也可以使用Gradle插件来实现相同的功能: enter image description here 输出结果将如下所示:
+--- com.android.support:multidex:1.0.1
+--- io.realm:realm-android-library:1.0.0
|    \--- com.getkeepsafe.relinker:relinker:1.2.1
+--- com.android.support:appcompat-v7:23.3.0
|    +--- com.android.support:animated-vector-drawable:23.3.0
|    |    \--- com.android.support:support-vector-drawable:23.3.0
|    \--- com.android.support:support-vector-drawable:23.3.0
+--- com.android.support:design:23.3.0
|    +--- com.android.support:appcompat-v7:23.3.0
|    |    +--- com.android.support:animated-vector-drawable:23.3.0
|    |    |    \--- com.android.support:support-vector-drawable:23.3.0
|    |    \--- com.android.support:support-vector-drawable:23.3.0
|    \--- com.android.support:recyclerview-v7:23.3.0

寻找gms库的重复,并按以下方式排除它:
 compile(group: 'com.google.android.gms', name: 'play-services-gcm', version: "8.4.0") {
        exclude(group: 'com.google.android.gms', module: 'play-services-base')
        exclude(group: 'com.google.android.gms', module: 'play-services-basement')
    }

如果您仍无法解决问题,请向我展示以下输出:
./gradlew app:androidDependencies

嗨Val...!! 谢谢你的帮助。我现在能够成功编译我的项目了。两个Google服务库之间存在版本差异。再次感谢您的帮助。 - Paritosh Chaudhary
@Val 嘿,我得到了非常长的输出,我无法理解!请帮忙! - Rucha Bhatt Joshi
@Val 我解决了这个问题,但还是谢谢你提供的详细描述。我通过以下链接解决了我的问题:http://stackoverflow.com/questions/42244653/multiple-dex-files-define-lcom-google-android-gms-auth-api-signin-internal-zzf - Rucha Bhatt Joshi

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