天天看点

':app:transformClassesWithDexForDebug'.finished with non-zero exit value 2

本来想以下面的作为标题,但为了让跟多的人能检索到,就直接从错误里面提取 关键字了

android谨慎使用net包的json

错误产生背景:

–1 我使用了net.sf.json

–2 我在该项目里面使用了module(除app以外的)

感谢stackoverflow 以后要养成搜索后优先点击来自stackoverflow的答案

因为服务器就是导入的net.sf.json,所以就在android工程里面导入了这个包,可当真机模拟的时候就报这个错误

Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’.

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘D:\jdk\bin\java.exe” finished with non-zero exit value 2

于是在stackoverflow的提示下在build.gradle里面defaultConfig属性加上multiDexEnabled true,大概意思 就是说有多个dex,需要enable下多dex支持

继续报错

Error:Execution failed for task ‘:app:transformClassesWithJarMergingForDebug’.

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: net/sf/json/AbstractJSON$1.class

然后要更新sdk,打开sdk manager发现也不需要啊

最终无奈还是换org的json吧,何况还是android自带的

于是又报错:

Error:Execution failed for task ‘:app:transformClassesWithMultidexlistForDebug’.

java.io.IOException: Can’t read [D:\sdk\build-tools\21.0.1\multidex\shrinkedAndroid.jar] (No such file or directory)

这次比较简单,直接把上面说的multiDexEnabled true移除就好了

感慨下,android平台有的还是用android平台的吧,也许google工程师太忙了,没工夫满足你所有要求。