Got error like this below with LeakCanary 1.5.2 and 1.6-Snapshot. However, 1.5.1 is fine. The build is ran with Jenkins, it is always a clean build.
I am using android gradle plugin 2.3.3: classpath 'com.android.tools.build:gradle:2.3.3'
:app:transformClassesWithDexForArm7Debug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithDexForArm7Debug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForArm7Debug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.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:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:242)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:235)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:224)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:121)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:77)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:102)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:96)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:612)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:567)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:96)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:57)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:122)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:46)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:253)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:170)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:44)
at org.gradle.initialization.DefaultGradleLauncher$1.run(DefaultGradleLauncher.java:122)
at org.gradle.internal.work.DefaultWorkerLeaseService$2.execute(DefaultWorkerLeaseService.java:124)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:116)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:99)
at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:66)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:51)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:50)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51)
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:287)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:260)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:33)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:253)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:182)
at org.gradle.launcher.Main.doAction(Main.java:33)
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:31)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:108)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:176)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:168)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
... 87 more
Caused by: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:453)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:185)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:181)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
... 99 more
Caused by: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
at com.android.builder.core.DexByteCodeConverter.dexInProcess(DexByteCodeConverter.java:180)
at com.android.builder.core.DexByteCodeConverter.runDexer(DexByteCodeConverter.java:158)
at com.android.builder.core.DexByteCodeConverter.convertByteCode(DexByteCodeConverter.java:143)
at com.android.builder.core.AndroidBuilder.convertByteCode(AndroidBuilder.java:1345)
at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:443)
... 102 more
Caused by: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
at com.android.builder.core.DexByteCodeConverter.dexInProcess(DexByteCodeConverter.java:178)
... 106 more
Caused by: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:584)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:539)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:521)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:167)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:191)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:522)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:344)
at com.android.dx.command.dexer.Main.run(Main.java:292)
at com.android.builder.internal.compiler.DexWrapper.run(DexWrapper.java:54)
at com.android.builder.core.DexByteCodeConverter.lambda$dexInProcess$0(DexByteCodeConverter.java:174)
Clean build?
Yes. It is build via jenkins. Always cleaned.
+1 for this bug that started this evening. Tried a clean build multiple times on our build server and it fails each time.
Warning: Exception while processing task java.io.IOException: Can't write [/tmp/sandbox/workspace/app/build/intermediates/transforms/proguard/betaFour/debug/0.jar] (Can't read [/tmp/sandbox/workspace/app/build/intermediates/transforms/desugar/betaFour/debug/92.jar(;;;;;;**.class)] (Duplicate zip entry [92.jar:com/squareup/leakcanary/watcher/R.class]))
I met this issue when using android gradle plugin 3.0.0-beta1. When I used android gradle plugin 2.3.3, build was succeed
I see this as well, both in buck and gradle builds from clean
Buck being broken is a feature
On Wed, Aug 9, 2017 at 10:16 PM Zac Sweers notifications@github.com wrote:
I see this as well, both in buck and gradle builds from clean
—
You are receiving this because you commented.Reply to this email directly, view it on GitHub
https://github.com/square/leakcanary/issues/815#issuecomment-321453008,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEEEfwZH_YA2m6v8fLOVFgGqCBZ-Mq4ks5sWpJHgaJpZM4OywZ4
.
I met this issue when using android gradle plugin 3.0.0-beta1. When I used android gradle plugin 2.3.3, build was succeed
I'm using 2.3.3 and also have this issue, only with LeakCanary 1.5.2 (no problem with 1.5.1). Seems to be due to multidex.
@zwang what version of agp are you using? also, @juhwan-jeong and @dbauduin, seems like you both are having conflicting experiences using agp 2.3.3. would it be possible to provide a minimal example?
The build depends on both leakcanary-analyzer-1.5.2.jar and leakcanary-watcher-1.5.2.jar, both containing the class com/squareup/leakcanary/watcher/R.class. This class wasn't bundled in the jar files in 1.5.
Cool we'll just update one of the manifest then. Feel free to send a PR,
anyone.
On Thu, Aug 10, 2017, 12:27 PM César Puerta notifications@github.com
wrote:
The build depends on both leakcanary-analyzer-1.5.2.jar and
leakcanary-watcher-1.5.2.jar, both containing the class
com/squareup/leakcanary/watcher/R.class. This class wasn't bundled in the
jar files in 1.5.—
You are receiving this because you commented.Reply to this email directly, view it on GitHub
https://github.com/square/leakcanary/issues/815#issuecomment-321649905,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEEEU3RfQoxyKBorg_EqPx9flLPaOKpks5sW1m5gaJpZM4OywZ4
.
@jrodbx I am using 2.3.3
classpath 'com.android.tools.build:gradle:2.3.3'
In my build.gradle, I define 'multiDexEnabled true' in default config section like below.
android {
defaultConfig {
multiDexEnabled true
}
}
If multiDexEnabled option is enabled build is succeed. But if multiDexEnabled is not given build is failed as given report although using android gradle plugin 2.3.3
And in the android gradle plugin 3.0.0-beta1, build is failed regardless multiDexEnabled
i met the same issue by using android gradle plugin 2.3.3.
It looks like the manifests are correct and they also weren't changed from 1.5.1 -> 1.5.2. Could this be due to the dependencies now being api instead of compile and the R.class being provided through multiple modules (watcher itself, analyze, and android) due to these new scopes?
@Mauin You might be right, there.
Diffing the unzipped contents of leakcanary-analyzer.jar and leakcanary-watcher.jar for versions v1.5.1 and v1.5.2 confirms @cesar1000's observation.
Disassembling shows that these new R.classes are empty:
$ javap leakcanary-analyzer-1.5.2/com/squareup/leakcanary/analyzer/R.class
Compiled from "R.java"
public final class com.squareup.leakcanary.analyzer.R {
public com.squareup.leakcanary.analyzer.R();
}
$ javap leakcanary-analyzer-1.5.2/com/squareup/leakcanary/watcher/R.class
Compiled from "R.java"
public final class com.squareup.leakcanary.watcher.R {
public com.squareup.leakcanary.watcher.R();
}
$ javap leakcanary-watcher-1.5.2/com/squareup/leakcanary/watcher/R.class
Compiled from "R.java"
public final class com.squareup.leakcanary.watcher.R {
public com.squareup.leakcanary.watcher.R();
}
Examining the commit history points to b0dd603a0dbe62aed2ee0c85ae0be31c0177f6fe as the reason, but digging further shows it's not really AGP 3.0a9's fault.
Although our build scripts define and publish leakcanary-analyzer and leakcanary-watcher as android library projects, we have also been publishing them as jars since at least v1.3. Consequently, consumers of LeakCanary are pulling in the jars instead of the aars, since it seems that dependency resolution tiebreakers go to jars. To confirm this, I deleted the jars from the snapshot repo and noticed that the aars are downloaded as transitive dependencies instead, thereby "fixing" this issue. One could also use dependency exclusions/forcing in their Gradle build scripts as a workaround.
The problem only appeared now because:
1) Our build scripts peek into the AAR compilation process in order to build the jar.
2) AGP 3.0 now generates an empty R.txt even when an android library project bundles NO resources. In 2.3.3 and prior, no R.txt would be generated in the case of no resources.
As a result, leakcanary-watcher.jar includes the empty R.class and since leakcanary-analyzer depends on leakcanary-watcher, it also pulls in watcher's R.class, leading to the duplicate R.class issue while dexing.
Any ETA on the fix? 🙏
This issue occurs even with gradle plugin 3.3 on leakcanary-1.5.2. Please fix it.
Looking to release "soon".
Partial progress made per https://github.com/square/leakcanary/pull/820. Final steps entail building analyzer and watcher as jars which require a few tweaks. PRs welcome :)
For now, reverting to 1.5.1 or excluding the analyzer/watcher aars in your Gradle scripts are suitable workarounds.
Having same issue in kitkat:
FAILURE: Build failed with an exception.
please let us know when it is fixed in 1.5.2 version
I am using Android Studio Canary 9 with 'com.android.tools.build:gradle:3.0.0-alpha9'. Leakcanary 1.5.2 fails while 1.5.1 compiles.
This is what I get from LeakCanary 1.5.2 in Android Studio 2.3.3
Error:Execution failed for task ':app:transformClassesWithDexForDevDebug'.
> com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException:
com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
No issue with 1.5.1 of course.
For me this issue only appears if I try to build on 4.4.X Android device, downgrade in LeakCanary 1.5.1 works for now
+1
+1 I met the same, Android studio 3.0 Beta2, Gradle 4.1-rc-1
Same here, Android Studio 3.0 Beta2, Gradle 4.1-rc-1
Unless you have new information to contribute to this bug please refrain from commenting.
Locking the convo for now as it doesn't seem like there's been new info to aid this issue. I'll continue to work on a fix once I have some bandwidth. As always, PRs welcome. If there IS new info, file a new issue and we can reopen this convo.
Same problem after I update the leancanary library from 1.5 to 1.5.2
gradle:4.1
com.android.tools.build:gradle:3.0.0-beta5
Cause: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
FAILED
FAILURE: Build failed with an exception.
I had reverted it to 1.5.1 and now build successful
You can use the snapshot version which as fixed this.
Problems with the snapshot version containing the fix can be filed as a new issue.
Most helpful comment
I'm using 2.3.3 and also have this issue, only with LeakCanary 1.5.2 (no problem with 1.5.1). Seems to be due to multidex.