【问题标题】:Duplicate Entry for ':app:transformClassesWithJarMergingForDebug'':app:transformClassesWithJarMergingForDebug' 的重复条目
【发布时间】:2017-08-04 13:17:39
【问题描述】:

我正在从 Eclipse 导入我的项目,同时构建一个我发现以下错误的 APK。

错误:任务执行失败

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:com/google/android/gms/plus/PlusOneButton$OnPlusOneClickListener.class

错误:任务 ':gruhini:transformClassesWithJarMergingForDebug' 执行失败。

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:com/google/android/gms/games/Game.class

错误:任务 ':gruhini:transformClassesWithJarMergingForDebug' 执行失败。

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:com/google/android/gms/auth/GoogleAuthException.class

错误:任务“:gruhini:processDebugGoogleServices”执行失败。

请通过更新 google-services 插件的版本(有关最新版本的信息可在 https://bintray.com/android/android-tools/com.google.gms.google-services/ 获得)或将 com.google.android.gms 的版本更新为 9.0.0 来解决版本冲突。

我的 build.gradle:

   apply plugin: 'com.android.application'

   android {
           compileSdkVersion 24
           buildToolsVersion "24.0.3"
           useLibrary 'org.apache.http.legacy'

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/**'
}

defaultConfig {
    applicationId "com.gruhini"
    minSdkVersion 15
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}



buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
dexOptions {
    incremental true
    preDexLibraries false
    //javaMaxHeapSize "1G" // 2g should be also OK
      }
      }

     dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile project(':eclipseProject')
compile files('libs/activation.jar')
compile files('libs/additionnal.jar')
compile files('libs/google-play-services.jar')
compile files('libs/httpclient-4.1.jar')
compile files('libs/httpcore-4.1.jar')
compile files('libs/httpmime-4.1.jar')
compile files('libs/itextpdf-5.2.1.jar')
compile files('libs/mail.jar')
compile files('libs/mpandroidchartlibrary-1-7-4.jar')
compile 'com.android.support:support-v4:24.2.1'
testCompile 'junit:junit:4.12'
compile 'com.google.android.gms:play-services:10.2.0'
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'

  }

【问题讨论】:

  • 为你的代码试试这个 android{ 配置 { all*.exclude group: 'com.android.support', module: 'support-annotations' } ]
  • 您添加 google-play-services.jar 以及 com.google.android.gms:play-services:10.2.0
  • 我试图隐藏编译文件的代码('libs/google-play-services.jar')。它仍然反映了同样的错误。

标签: android android-studio android-gradle-plugin build.gradle gradle-plugin


【解决方案1】:

com.android.build.api.transform.TransformException: java.util.zip.ZipException:重复条目: com/google/android/gms/plus/

问题

compile files('libs/google-play-services.jar') // Remove this line
compile 'com.google.android.gms:play-services:10.2.0' //10.0.1 or 9.6.0

两者都是一样的。调用其中一个。 然后清理重建并运行

试试这个应用级别 build.gradle

    apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"

    dexOptions {
        javaMaxHeapSize "4g"
    }
    defaultConfig {
        applicationId "com.gruhini"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 12
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        useLibrary 'org.apache.http.legacy'
        multiDexEnabled true


    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'

    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
        testCompile 'junit:junit:4.12'
        compile project(':eclipseProject')
        compile files('libs/activation.jar')
        compile files('libs/additionnal.jar')
        compile files('libs/httpclient-4.1.jar')
        compile files('libs/httpcore-4.1.jar')
        compile files('libs/httpmime-4.1.jar')
        compile files('libs/itextpdf-5.2.1.jar')
        compile files('libs/mail.jar')
        compile files('libs/mpandroidchartlibrary-1-7-4.jar')
        compile 'com.android.support:support-v4:25.1.0'
        compile 'com.google.android.gms:play-services:10.0.1'
        compile 'com.android.support:appcompat-v7:25.1.0'
        compile 'com.android.support:design:25.1.0'

}

项目级别 build.gradle

   // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2' //2.2.3
        classpath 'com.google.gms:google-services:3.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

【讨论】:

  • 我删除了该行,清理项目,重建项目并在生成 apk 时发现相同的错误:(
  • @KevalShukla 重启你的IDE
  • @KevalShukla 致电9.6.0
  • 通过添加 gms playservice (9.6.0) 发现另一个错误。我将在问题标签中添加。
  • 当我添加这一行时:应用插件:'com.google.gms.google-services' 我发现一个错误。我在问题标签中添加了该错误。
【解决方案2】:

像这样在你的 gradle 文件中在 Android 内部做。

   android{
    configurations {
            all*.exclude group: 'com.android.support', module:'support-annotations'
    }
}

而不是你在 dex 选项里面写。

你的 gradle 文件看起来像..

应用插件:'com.android.application'

     android {
               compileSdkVersion 24
               buildToolsVersion "24.0.3"
               useLibrary 'org.apache.http.legacy'
configurations {
                all*.exclude group: 'com.android.support', module:'support-annotations'
        }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/**'
    }

    defaultConfig {
        applicationId "com.gruhini"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }



    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    dexOptions {
        incremental true
        preDexLibraries false
        //javaMaxHeapSize "1G" // 2g should be also OK
          }
          }

         dependencies {
         compile fileTree(dir: 'libs', include: ['*.jar'])
         androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

    })
    compile project(':eclipseProject')
    compile files('libs/activation.jar')
    compile files('libs/additionnal.jar')
    compile files('libs/google-play-services.jar')
    compile files('libs/httpclient-4.1.jar')
    compile files('libs/httpcore-4.1.jar')
    compile files('libs/httpmime-4.1.jar')
    compile files('libs/itextpdf-5.2.1.jar')
    compile files('libs/mail.jar')
    compile files('libs/mpandroidchartlibrary-1-7-4.jar')
    compile 'com.android.support:support-v4:24.2.1'
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services:10.2.0'
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'

      }

【讨论】:

    【解决方案3】:

    它通过从 Gradle 中删除以下行来正常工作。编译 fileTree(dir: 'libs', include: '*.jar')

    【讨论】:

      【解决方案4】:

      您的包中使用的 play-services 版本不匹配(即一个包使用版本 x,另一个包使用版本 y)。

      其他答案都没有解释为什么您应该使用播放服务版本x.y.z 或如何检查哪个适用。您可以通过 ./gradlew :app:dependencies

      进行检查

      你会得到类似的输出

      |    \--- com.google.android.gms:play-services-tasks:10.2.6 --> (11.0.1)(*)
      +--- com.google.android.gms:play-services-basement:11.0.1 (*)
      

      ```

      从此输出中,您可以看到您的项目中使用了最新版本的 play-services(在上面的示例中为 11.0.1)。 在您的 build.gradle 文件中,您应该为所有播放服务指定此版本(它们都必须是相同的版本)。

      【讨论】:

        猜你喜欢
        • 2016-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-22
        • 1970-01-01
        • 2017-11-02
        • 2016-06-26
        相关资源
        最近更新 更多