We have a fairly large and complex(multi modules, multi variants) project 
with multidex enabled(with android gradle plugin 0.14.0 and later 0.14.2), 
and it works fine for the past weeks. Today we wanted to integrate Google 
Play service into our project, but now are stucked with this exception:

Executing task ':app-xyz:packageAllXYZDebugClassesForMultiDex' (up-to-date 
> check took 0.009 secs) due to:
>   No history is available.
> :app-vanilla-android-tube:packageAllFireTubeDebugClassesForMultiDex FAILED
> :app-vanilla-android-tube:packageAllFireTubeDebugClassesForMultiDex 
> (Thread[main,5,main]) completed. Took 2.81 secs.
> FAILURE: Build failed with an exception.
> * What went wrong:
> Execution failed for task 
> ':app-vanilla-android-tube:packageAllFireTubeDebugClassesForMultiDex'.
> > java.util.zip.ZipException: duplicate entry: com/google/ads/AdSize.class
> * Try:
> Run with --debug option to get more log output.
> * Exception is:
> org.gradle.api.tasks.TaskExecutionException: Execution failed for task 
> ':app-vanilla-android-tube:packageAllFireTubeDebugClassesForMultiDex'.
> ......
> at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
> Caused by: org.gradle.internal.UncheckedException: 
> java.util.zip.ZipException: duplicate entry: com/google/ads/AdSize.class
> at 
> org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:39)
> at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:66)
> at 
> org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218)
> at 
> org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211)
> at 
> org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200)
> at 
> org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579)
> at 
> org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562)
> at 
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
> at 
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
> ... 47 more
> Caused by: java.util.zip.ZipException: duplicate entry: 
> com/google/ads/AdSize.class
> at java_util_jar_JarOutputStream$putNextEntry.call(Unknown Source)
> at 
> com.android.build.gradle.internal.tasks.multidex.JarMergingTask.processJarFile(JarMergingTask.groovy:121)
> at 
> com.android.build.gradle.internal.tasks.multidex.JarMergingTask.createJar(JarMergingTask.groovy:59)
> at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
> ... 54 more
>
> BUILD FAILED


At first I thought we do put some duplicated entries through some external 
dependencies into our project, and dumped the dependency for our 
project(listed below, by './gradlew -q dependencies' command). But after a 
careful look into these entries, there is no hint of duplicated jar files 
there. I even manually expand all the jars in Android Studio(see the 
screenshot), but still can not find there is any duplication of the 
complained ones.

- ## Internal use, do not manually configure ##
> +--- com.android.support:multidex:1.0.0
> +--- project :android-vtube-common
> |    +--- com.android.support:multidex:1.0.0
> |    +--- com.google.android.gms:play-services:6.1.71
> |    |    \--- com.android.support:support-v4:20.0.0
> |    |         \--- com.android.support:support-annotations:20.0.0
> |    +--- org.teleal.cling:cling-core:1.0.6-SNAPSHOT
> |    +--- org.teleal:teleal-common:1.0.13
> |    +--- net.ioncannnon:ap4j:0.0.5-SNAPSHOT
> |    |    \--- javax.jmdns:jmdns:3.4.1
> |    +--- commons-io:commons-io:2.4
> |    +--- org.apache.commons:commons-lang3:3.1
> |    +--- de.mindpipe.android:android-logging-log4j:1.0.3
> |    +--- log4j:log4j:1.2.16
> |    +--- com.google.code.gson:gson:2.2.2
> |    +--- com.nostra13.universalimageloader:universal-image-loader:1.8.4
> |    +--- com.google.apis:google-api-services-youtube:v3-rev116-1.19.0
> |    |    \--- com.google.api-client:google-api-client:1.19.0
> |    |         +--- com.google.oauth-client:google-oauth-client:1.19.0
> |    |         |    \--- com.google.http-client:google-http-client:1.19.0
> |    |         \--- com.google.guava:guava-jdk5:13.0
> |    +--- com.google.http-client:google-http-client-gson:1.19.0
> |    |    +--- com.google.http-client:google-http-client:1.19.0
> |    |    \--- com.google.code.gson:gson:2.1 -> 2.2.2
> |    +--- com.android.support:support-v4:19.1.0 -> 20.0.0 (*)
> |    +--- com.mopub.mobileads:mopub-sdk:1.0.0-SNAPSHOT
> |    +--- com.vtube:inhouse-ad:0.1.1-SNAPSHOT
> |    |    +--- org.codehaus.jackson:jackson-core-asl:1.9.12
> |    |    +--- org.codehaus.jackson:jackson-mapper-asl:1.9.12
> |    |    |    \--- org.codehaus.jackson:jackson-core-asl:1.9.12
> |    |    +--- commons-io:commons-io:2.4
> |    |    +--- commons-lang:commons-lang:2.3
> |    |    \--- log4j:log4j:1.2.16
> |    +--- com.ihanghai:module-youtube-support:0.6.8-SNAPSHOT
> |    |    +--- org.luaj:luaj-jse:3.0-beta2
> |    |    +--- commons-io:commons-io:2.4
> |    |    \--- log4j:log4j:1.2.16
> |    +--- com.amazon:amazon-ads:5.3.17
> |    +--- com.amazon:amazon-insights-android:2.1.10
> |    +--- com.google:admob:6.4.1
> |    +--- com.inmobi:inmobi:4.1.1
> |    +--- com.flurry:flurry-agent-analytics:3.3.0
> |    +--- com.crashlytics.android:crashlytics:1.0.0
> |    +--- project :exoplayer-library
> |    +--- project :facebook-android-sdk
> |    |    \--- com.android.support:support-v4:19.1.0 -> 20.0.0 (*)
> |    \--- project :module-android-vapp-reminder
> |         +--- commons-io:commons-io:2.4
> |         +--- org.apache.commons:commons-lang3:3.1
> |         \--- com.google.code.gson:gson:2.2.2
> \--- com.amazon:in-app-purchasing:1.0.3


I have looked into the code who throws the exception: 

https://android.googlesource.com/platform/tools/base/+/ff74addd51eade5de9b2a5d5f7b4e3cf2ee8f98e/build-system/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/multidex/JarMergingTask.groovy


I am still left with no clue where the duplicated entry comes from, and 
there is no extra debugging information available to me for the moment. Any 
thoughts on how to debug this build problem? Do I need to setup a build 
environment for the plugin itself, or there is some extra flags I can turn 
to?

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"adt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to