将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'
答案 0 :(得分:1)
此错误与dex
文件(.class文件的Android字节码)
multidex
文件(64k方法调用)的最大限制时,需要 dex
。
preDexLibraries
文件,则使用 dex
,这样就不会在进一步的构建中构建库的dex文件。在您的情况下,因此,它创建了库dex文件的2个实例并导致错误 -
already added: Lcom/squareup/leakcanary/watcher/R;","sources"