Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/squareup/leakcanary/watcher/R

Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/squareup/leakcanary/watcher/R

将 LeakCanary 作为依赖项添加到我的 android 之后 gradle:

compile 'com.squareup.leakcanary:leakcanary-android:1.5.2'

构建应用程序时出现此错误:

:app:transformClassesWithDexForDebug
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/squareup/leakcanary/watcher/R;","sources":[{}]}
AGPBI: {"kind":"error","text":"1 error; aborting","sources":[{}]}

FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: 
com.android.ide.common.process.ProcessException: Return code 1 for dex process

我没有在其他任何地方包括这个库,并且没有这个 compile leakcanary 的依赖项,我的应用程序构建正常。

我试着看看我是否有一些隐藏的金丝雀依赖

./gradlew -q dependencies app:dependencies --configuration compile | grep com.squareup
 \--- com.squareup.leakcanary:leakcanary-android:1.5.2
      \--- com.squareup.leakcanary:leakcanary-analyzer:1.5.2
           +--- com.squareup.leakcanary:leakcanary-watcher:1.5.2
           \--- com.squareup.haha:haha:2.0.3

但只有这个预期的(我假设)。

当我使用他们的 FAQ

中的代码包含这个库时,输出完全相同
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.2'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.2'

此错误与 dex 文件相关(Android 字节码。class 文件)

multidex 当您的代码方法超过单个 dex 文件(即 64k 方法调用)的最大限制时,需要

preDexLibraries 当你想从库中构建 dex 文件时使用,这样你就不会在进一步的构建中构建库的 dex 文件。在您的情况下,因此,它创建了库 dex 文件的 2 个实例并导致错误 -

already added: Lcom/squareup/leakcanary/watcher/R;","sources"