3个错误non-zero exit value 1; non-zero exit value 2; non-zero exit value 3
被编译的代码或资源有问题:(non-zero exit value 1)
出现这种编译异常表现是 exit value 1,一般会给出错误提示,所以很容易排查。这种错误很常见,错误提示有时候是在日志中明显的给出来了,如下示例所示
:app:processDebugManifest
:app:processDebugResources
\app\src\main\res\layout\activity_welcome.xml
Error:(42, 26) No resource found that matches the given name (at 'src' with value '@drawable/welcome_03').
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide
.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process 'command 'D:\android-sdk-windows\build-tools\22.0.1\aapt.exe'' finished with non-zero exit value 1
上面错误提示找不到welcome_03这个drawable资源。有时候没有明显的提示,如下面这种错误:
:app:transformClassesWithMultidexlistForDebug UP-TO-DATE
:app:transformClassesWithDexForDebug FAILED
Error: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: org.gradle.process.internal.ExecException:
Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1
上面这种错误没有给出很显示的提示,但是可以知道是在执行Error:Execution failed for task ':app:transformClassesWithDexForDebug'这一步出错了,至少缩小了错误的排查范围,这个时候就需要经验来判断了,自己之前改过什么,自己回想一下。有时候往上面看错误日志,也会发现有很明显的错误提示。
jar包冲突:(non-zero exit value 2 )
主要表现为编译后出现finished with non-zero exit value 2错误,原因是jar包冲突,导致的原因可能是在dependencies中使用compile files()导入一次jar包,然后有其它jar的引入方式使用compile’com.xxx’方式,正好又引用了这个jar包,所以导致了重复引用jar包的冲突。最常见的是support-v4包的重复引用。具体报错如下所示:
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command ''D:\Develop\Java\jdk1.8.0_172\bin\java.exe''
finished with non-zero exit value 2
这个错误在app的build.gradle里面添加下面这句就好了。
android {
defaultConfig {
...
multiDexEnabled true
}
}
编译的代码过多导致内存不足:( non-zero exit value 3 )
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command 'D:\Develop\Java\jdk1.8.0_172\bin\java.exe''
finished with non-zero exit value 3
这个错误就在app.bulid里面加上这句,再rebuild ,之后再运行就行了。4g可以看电脑配置修改(2g,3g,6g,8g)。
dexOptions {
javaMaxHeapSize "4g"
}
如图:
似乎看到了问题的所在,我的是说的第一个错误,看起来是依赖包重复了 ,好吧,那就找重复的包吧,重新修改了之后,再次运行,还是出现了这个错误,我确定已经没有重复的包了,啊啊,这个似乎不能解决我的问题啊,然后我又去百度了,也有好多说的的,也有的说因为jdk为1.8造成的,可我的不是1.8,是1.7的,也有人说造成这个问题出现的原因有很多种,看到这里有木有一种想哭的冲动,我是有了,然后问了一个大神,大神告诉我可以在android studio新建一个module,然后替换对应目录,然后我能怎么办?只能先按照这样的方法试试了,也是一种解决方案啊。来开始动手。
我在自己的studio随便创建了一个项目,先运行试试,完蛋了,还是出现这个问题啊,这回就真的不理解了,我什么都没做也出现这个问题?后来我以为是我的电脑安装了2个studio,会不会冲突了,然后就把这个问题放在群里去问了,以下是我提问的
请问电脑如果安装了两个studio会导致冲突吗随便创建一个demo,提示这个错误 :
然后有人开始回答了:
两个不同版本才行
这个错是内存太小了
也可能是buildTools版本的问题
内存加大就行了
jar包冲突,或方法数超了
你的buildTools版本是多少的,前些的我用的24的就报的这个错误,调成23的就好了
看到最后这个回答,我的眼睛亮了,会不会是这个问题呢,我去查看了我studio当前的buildTools版本
果然是24,于是我改成了23,重新运行,哇哇哇,真的可以啦,感动的都要哭了啊,然后我问为什么这样就可以解决呢?
有人回答:
其实我也不清楚为啥
我把buildTools更新到最新版就出现这个问题了,应该是某些兼容性的问题吧
compileSdkVersion用24,buildtools用24
我原来compileSdkVersion用23,buildtools用24,运行出了这个问题,现在改成23的就没事了,
果然还得一致,看别人的博客说这样是没事的。。。
然后有人说:
builtools24和以前版本不同了,有appt和appt2,以前是只有appt的
尽量保证版本一致
SdkVersion 是24 buildToolsVersion 可以用24.0.1
学到了有木有,果然造成问题的原因有很多种的,并不是每一种都适合自己啊,还得自己去找原因啊!!!
转载文章地址:https://blog.csdn.net/lxk_1993/article/details/50511172