Android studio执行失败的任务':app:packageAllDebugClassesForMultiDex'

时间:2015-08-23 09:38:52

标签: android android-studio google-play-services

我有这个错误:

Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: com/google/android/gms/internal/zzrf.class

我想将google play服务添加到我的项目中,所以我把这行放在build.gradle文件中:

compile 'com.google.android.gms:play-services:7.8.0'

所以我必须启用multidex并且我遵循android doc,在build.gradle中添加它:

compile 'com.android.support:multidex:1.0.1'

multiDexEnabled true

我在android manifest中添加了这个:

<application 
...
android:name="android.support.multidex.MultiDexApplication">

但我有上面写的错误。我发现了很多与此问题相关的问题(app:packageAllDebugClassesForMultiDex),但没有发现(重复条目:com / google / android / gms / internal / zzrf.class)。

我尝试了一些解决方案,例如删除一些谷歌库,但我不知道内部/ zzrf.class是什么。

这是我的gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "fr.djey.testgoogleplus"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.google.android.gms:play-services:7.8.0'
    compile 'com.android.support:multidex:1.0.1'
}

3 个答案:

答案 0 :(得分:10)

我遇到了同样的问题。在我的情况下,我使用了我的Android应用程序使用的自制Android库。这意味着1个项目有2个独立的模块,而app模块依赖于库模块。 两者都支持multidex。根本原因是谷歌播放服务版本之间的不一致。在应用程序模块中,我使用了7.8。+,在库中我使用了8.1。+。所以我刚刚更新到相同的8.1。+,这对我来说是固定的。所以我的答案是检查你所依赖的所有库,其中一个可能使用你下面的谷歌播放服务版本。

答案 1 :(得分:1)

删除该项目的build文件夹下的所有文件。就我而言,整个google play的jar文件只与广告服务的jar文件冲突。

答案 2 :(得分:0)

正如我在评论中所说的那样:我创建了另一个项目并且做了同样的事情:放谷歌游戏服务和multidex,问题不再出现了。