未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lcom / squareup / leakcanary / watcher / R

时间:2017-09-16 07:43:31

标签: android android-gradle leakcanary

将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

我没有在其他地方包含这个库,如果没有这个编译的泄漏依赖,我的应用程序正在构建。

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

./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'

1 个答案:

答案 0 :(得分:1)

此错误与dex文件(.class文件的Android字节码)

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

dex

如果要从库中构建preDexLibraries文件,则使用

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

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