本来想以下面的作为标题,但为了让跟多的人能检索到,就直接从错误里面提取 关键字了
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工程师太忙了,没工夫满足你所有要求。