Google Messaging Service 8.3带来ZipException错误

时间:2015-11-23 11:00:50

标签: android google-cloud-messaging multidex

我正在试图弄清楚如何解决这个突发的重复条目问题:

Error:Gradle: Execution failed for task ':app:packageDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry:com/google/android/gms/internal/zzqq$zza.class

我刚刚将Google Cloud Messaging版本从 8.1 增加到 8.3

dependencies {
    compile 'com.google.android.gms:play-services-gcm:8.3.0'
}

任何指针?

由于

更新

我的build.gradle

android {
    compileSdkVersion project.properties['compileSdkVersion'].toInteger()
    buildToolsVersion project.properties['buildToolsVersion']

    defaultConfig {
        minSdkVersion project.properties['minSdkVersion']
        targetSdkVersion project.properties['targetSdkVersion'].toInteger()
        versionCode project.properties['versionCode'].toInteger()
        versionName project.properties['versionName']
        multiDexEnabled true

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

dependencies {
    compile("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.google.android.gms:play-services-gcm:8.3.0'
}

更新2

类似的事情也发生在8.4,

Error:Gradle: Execution failed for task ':app:transformClassesWithJarMergingForFabricStagingDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: 
duplicate entry: com/google/android/gms/internal/zzat.class

1 个答案:

答案 0 :(得分:0)

原来,冲突是由我项目中的一个库引起的。它使用play-services-ads:8.1,并且显然是使用Proguard进行缩小/混淆,它结束时包含一个zzat.class文件,类似于play-services-basement:8.4.0中包含的文件。 我试图解决此问题,迫使play-services-ads在我的build.gradle中使用较新版本进行此更改:

configurations.all {
  resolutionStrategy {
    force 'com.google.android.gms:play-services-ads:8.4.0'
  }
}

这可能会在特定情况下产生副作用,但是,现在,它似乎是唯一的解决方案。