【问题标题】:In Android Studio grade, duplicate entry: com/google/android/gms/ads/AdActivity.class在 Android Studio 等级中,重复条目:com/google/android/gms/ads/AdActivity.class
【发布时间】:2016-09-04 10:02:48
【问题描述】:

我正在使用 Android Studio 开发 Android 应用。

我正在使用 google-play-services,但是当我在我的 Android 设备上运行我的应用程序时,我遇到了以下错误。

build.gradle

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "net.myApp"
        minSdkVersion 14
        targetSdkVersion 21

        multiDexEnabled true
    }

    packagingOptions{
        exclude 'com/google/android/gms/ads/AdActivity'
    }

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

dependencies {
    compile project(':facebookSDK')
    compile 'com.jpardogo.materialtabstrip:library:1.1.0'
    compile 'com.android.support:support-v4:23.4.0'
    compile 'joda-time:joda-time:2.1'
    compile files('libs/google-play-services.jar')
    compile files('libs/twitter4j-core-4.0.2.jar')

    android {
        useLibrary 'org.apache.http.legacy'
    }
}

错误

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':myApp:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/ads/AdActivity.class

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':myApp:transformClassesWithJarMergingForDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/ads/AdActivity.class
    at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:54)
    at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:57)
    at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:47)
    at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:173)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:244)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:231)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 14 more
Caused by: com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/ads/AdActivity.class
    at com.android.build.gradle.internal.transforms.JarMergingTransform.transform(JarMergingTransform.java:117)
    at com.android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.java:178)
    at com.android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.java:174)
    at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:55)
    ... 23 more
Caused by: java.util.zip.ZipException: duplicate entry: com/google/android/gms/ads/AdActivity.class
    at com.android.build.gradle.internal.transforms.JarMerger.addJar(JarMerger.java:161)
    at com.android.build.gradle.internal.transforms.JarMerger.addJar(JarMerger.java:121)
    at com.android.build.gradle.internal.transforms.JarMergingTransform.transform(JarMergingTransform.java:107)
    ... 26 more
    enter code here

我不知道为什么 com/google/android/gms/ads/AdActivity.class 重复。

你能告诉我如何解决这个问题吗?

【问题讨论】:

  • 一般这种问题可以通过在项目中执行./gradlew clean或者使缓存失效并重启Android Studio来解决。如果这不起作用,那么您可以尝试手动删除重复的类。另外,请确保您在项目中使用的播放服务库具有相同的版本,因为有时会导致这些错误。有关更多信息,您可以查看此相关 SO 问题33487780

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


【解决方案1】:

出现此错误是因为您的项目中有多个 AdActivity.class。

您可以在 build.gradle 文件中忽略其中一个。

将此添加到您的 build.gradle:

packagingOptions{
    exclude 'com/google/android/gms/ads/AdActivity.class'
}

然后构建 -> 清理,重新构建项目。

【讨论】:

  • 感谢您的回复。我添加了上面的代码,但是效果不佳。同样的错误仍然发生。
  • 你在哪里添加上面的代码?您应该将其添加为 android {} 的子项,就像:android { ... packagingOptions{...} }
  • 我在我的问题中添加了上面的代码。我想我正确地添加了。对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多